[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