Using Compaq COBOL in the Alpha Common Language Environment
13.6 Examples (OpenVMS)
Example 13–6 Using LIB$K_* and LIB$_* Symbols (OpenVMS)
identification division.
program-id. SETSYM.
environment division.
data division.
working-storage section.
01 LOCAL-SYM
pic S9(9) comp value external LIB$K_CLI_LOCAL_SYM.
01 GLOBAL-SYM pic S9(9) comp value external LIB$K_CLI_GLOBAL_SYM.
01 COND-VAL
pic S9(9) comp.
88 COND-NORMAL
value external SS$_NORMAL.
88 COND-AMBSYMDEF
value external LIB$_AMBSYMDEF.
procedure division.
1.
call "LIB$SET_SYMBOL" using
by descriptor "XSET*SYM"
by descriptor "Test1A"
by reference
LOCAL-SYM
giving
COND-VAL.
if
COND-AMBSYMDEF display "Ambiguous"
else if COND-NORMAL
display "OK"
else
display "Not OK".
2.
call "LIB$SET_SYMBOL" using
by descriptor "XSETS"
by descriptor "Test1B"
by reference
LOCAL-SYM
giving
COND-VAL.
if
COND-AMBSYMDEF display "Ambiguous"
else if COND-NORMAL
display "OK"
else
display "Not OK".
3.
call "LIB$SET_SYMBOL" using
by descriptor "XSETS"
by descriptor "Test1C"
by reference
GLOBAL-SYM
giving
COND-VAL.
if
COND-AMBSYMDEF display "Ambiguous"
else if COND-NORMAL
display "OK"
else
display "Not OK".
9.
stop run.
This uses the following macro,
libdef.mar
:
.TITLE libdef
$HLPDEF GLOBAL
; case sensitive!
.END
The program is compiled, linked, and run, as follows:
$ cobol setsym
$ macro libdef
$ link
setsym,libdef
$ run
setsym
OK
Ambiguous
OK
$ show symbol xset*
XSETS == "Test1C"
XSET*SYM = "Test1A"
13–22 Using Compaq COBOL in the Alpha Common Language Environment