[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