[Info-vax] COBOL example $MGBLSC
Brian Schenkenberger
mail at SendSpamHere.ORG
Thu Sep 7 13:44:58 EDT 2023
On 2023-09-07 14:36:31 +0000, Brian Schenkenberger said:
> I need to tell a customer how to map, assuming this is even possible, a
> global section into which I write data for them. They only do COBOL. :(
> Is this possibe? How does one reference the data once mapped in the
> expanded region? I've tried to make heads or tails of COBOL but I get
> totally lost in the PICs.
>
> If only somebody would do what Jim Duff did for calling system services
> with C but using COBOL. So very few examples exist.
>
> — VAXman (still on the outside trying to look into VMS x86)
OK. I've gotten this far but now I have no idea how to access the data
in the mapped region.
IDENTIFICATION DIVISION.
PROGRAM-ID. SYSMGBLS.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*** EXTERNAL VALUE from SEC.MAR ($SECDEF GLOBAL)
*** $ MACRO SEC.MAR
*** $ LINK SYSMGBLSC,SEC
01 SEC$M_EXPREG PIC S9(09) COMP VALUE IS EXTERNAL SEC$M_EXPREG.
01 SEC$M_PERM PIC S9(09) COMP VALUE IS EXTERNAL SEC$M_PERM.
01 SEC$M_SYSGBL PIC S9(09) COMP VALUE IS EXTERNAL SEC$M_SYSGBL.
01 FLAGS PIC S9(09) COMP VALUE IS 0.
01 RETSTS PIC S9(09) COMP VALUE IS 0.
01 GBLSECNAM PIC X(21) VALUE IS "A-GLOBAL-SECTION-NAME".
01 INADR.
02 ADDRESS-1 PIC S9(09) COMP VALUE IS 512.
02 ADDRESS-2 PIC S9(09) COMP VALUE IS 512.
01 RETADR.
02 ADDRESS-1 PIC S9(09) COMP VALUE IS 0.
02 ADDRESS-2 PIC S9(09) COMP VALUE IS 0.
PROCEDURE DIVISION.
0-BEGIN.
ADD SEC$M_EXPREG TO FLAGS.
ADD SEC$M_PERM TO FLAGS.
ADD SEC$M_SYSGBL TO FLAGS.
CALL "SYS$MGBLSC" USING BY REFERENCE INADR,
BY REFERENCE RETADR,
OMITTED,
BY VALUE FLAGS,
BY DESCRIPTOR GBLSECNAM,
OMITTED,
OMITTED
GIVING RETSTS.
IF RETSTS IS FAILURE CALL "LIB$SIGNAL" USING BY VALUE RETSTS.
IF RETSTS IS SUCCESS DISPLAY "GLOBAL SECTION MAPPED".
*** NOW WHAT???
0-END.
STOP RUN.
More information about the Info-vax
mailing list