[Info-vax] Calling $CREPRC in COBOL
Richard Maher
maher_rjSPAMLESS at hotmail.com
Fri Jun 10 21:05:20 EDT 2022
On 11/06/2022 1:39 am, VAXman- at SendSpamHere.ORG wrote:
> 10 ENQ-TYPE PIC X(1) VALUE EXTERNAL PQL$_ENQLM.
> ..............^
> %COBOL-E-EXTREFVAL, VALUE EXTERNAL clause ignored - valid only on COMP
> data-item
>
> How do you put PQL$ items in to a COBOL "byte"?
>
Unfortunately COBOL has never supported by integers but there are
several ways to do it. (I haven't fired up my VMS machines in 5 years
otherwise I'd give you an example. Back in the day when google groups
could search the archives you could find one of several $creprc examples
with all parameters including TCB)
Cumbersome: -
01 enqlm_word pic 9(4) comp value external pql$_enqlm.
01 enqlm_byte redefines enqlm_word.
03 pql_enqlm pic x.
move pql_enqlm to somewhere.
Lose external symbols and hard code: -
Hexadecimal literals:
10 ENQ-TYPE PIC X(1) VALUE x"00".
Special Names:
SPECIAL-NAMES.
PQL$_ENQLM value is 44. (I don't know the value)
10 ENQ-TYPE PIC X(1) VALUE PQL$_ENQLM.
The way I do it: -
Define a global .PSECT in the same .MAR file that you already probably
do for $pqldef GLOBAL
Just lay it out as you would for macro.
.psect fred long, gbl,shr,wrt,blah
.byte pql$_enqlm
Then declare an EXTERNAL variable as the same name as your global psect.
01 fred external.
03 pql$_enqlm pic x. (doesn't have to be same name)
03 pic x.
* The last byte is NECESSARY to round up the psect size on Alpha, and
* Itanium. Macro does this automatically.
Again many examples in cov over the years
More information about the Info-vax
mailing list