%GOTO SKIP; /*SKIP MACRO PROLOG */ 00010003 /********************************************************************/ 00020004 /* */ 00030004 /* MACRO NAME = IDAGMAIN */ 00040004 /* */ 00042004 /* DESCRIPTIVE NAME = GETMAIN FOR VSAM OPEN/CLOSE/EOV AUTOMATICS. */ 00044004 /* */ 00046004 /* FUNCTION = PERFORMS GETMAIN'S FOR VSAM OPEN/CLOSE/EOV MODULES. */ 00048004 /* IT GETS THE CORRECT AMOUNT OF STORAGE AREA FOR THE */ 00048404 /* AUTOMATICS DECLARED BY THE MODULES. */ 00048804 /* REGISTER 15 CONTAINS ADDRESS OF GOTTEN CORE IF */ 00049204 /* GETMAIN WAS SUCCESSFUL, OTHERWISE REISTER 15 */ 00049604 /* CONTAINS ZERO. */ 00049704 /* */ 00049804 /* CONTROL BLOCK STRUCTURE = NONE */ 00049904 /* */ 00066604 /* INCLUDED MACROS = NONE */ 00076604 /* */ 00078604 /* METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY */ 00080604 /* */ 00082604 /* CREATED BY: N/A */ 00083004 /* */ 00083104 /* STATUS = VS1 RELEASE 4, VS2 RELEASE 3. */ 00083204 /* */ 00088804 /* DATE OF LAST CHANGE = 3 DECEMBER 74 @Z30SSRL*/ 00090803 /* */ 00092804 /********************************************************************/ 00093204 %SKIP: ; /*END OF MACRO PROLOG */ 00093604 /********************************************************************/ 00094404 /* IDAGMAIN - GETS CORE STORAGE FOR AUTOMATICS. */ 00100004 /* FOR VS2 IDAGMAIN WILL MOVE THE @Z30SSRL*/ 00102003 /* ID AND DATE OF THE MODULE TO A @Z30SSRL*/ 00104003 /* LOCATION DIRECTLY AFTER THE PLS @Z30SSRL*/ 00106003 /* GENERATED SAVE AREA. @Z30SSRL*/ 00108003 /* DATE OF LAST CHANGE = 3 DECEMBER 74 @Z30SSRL*/ 00110003 /********************************************************************/ 00150004 GEN; 00200004 % IF ENV='VS2' %THEN /* CHECK FOR VS2 SWITCH AND */ 00250004 % GOTO IDAGMN1; /* BYPASS VS1 CODE */ 00300004 REG1SAVE EQU 20 SAVE AREA FOR REGISTER 1 00310004 GMRESULT EQU 24 SAVE AREA FOR ADDR OF GETMAIN 00320004 GMWORK EQU 28 ADDR OF WORK AREA FOR GETMAIN 00330004 WORKPOOL EQU 252 SUBPOOL 252 00340004 L @15,CVTPTR LOAD POINTER TO THE CVT 00350004 L @15,CVTTCBP(,@15) LOAD POINTER TO TCB POINTERS 00400004 L @15,TCBPTR(,@15) LOAD POINTER TO TCB 00450004 L @15,TCBRBP(,@15) LOAD POINTER OF RB 00500004 LA @15,XRBESA(,@15) LOAD ADDRESS OF RB SAVE AREA 00550004 STM @05,@09,0(@15) SAVE REG 5 TO 9 IN RB SAVE AREA 00600004 LR @05,@15 SAVE ADDRESS OF RB SAVE AREA 00650004 ST @01,REG1SAVE(,@15) SAVE REGISTER 1 IN 6TH WORD OF 00700004 * RB SAVE AREA 00750004 LA @01,GMWORK(,@15) POINT TO GETMAIN WORK AREA 00800004 LA @06,GMRESULT(,@15) POINT TO GETMAIN RESULT AREA IN 00850004 * 7TH WORD OF RB SAVE AREA 00900004 LA @09,WORKPOOL LOAD SUBPOOL NUMBER 00950004 L @07,@SIZDATD LOAD NUMBER OF BYTES REQUIRED 01000004 GETMAIN EC,LV=(@07),A=(@06),SP=(@09),MF=(E,(@01)) DO GETMAIN 01050004 SR @09,@09 ZERO PAD CHARACTER 01100004 LTR @15,@15 TEST RETURN CODE FOR ERROR 01150004 BNZ GMN00100 BRANCH IF ERROR ENCOUNTERED 01200004 * IF NO ERROR WAS ENCOUNTERED 01250004 L @06,0(,@06) GET ADDRESS OF ACQUIRED STORAGE 01300004 MVCL @06,@08 ZERO THE ACQUIRED STORAGE 01350004 B GMN00200 CONTINUE PROCESSING AT GMN00200 01400004 GMN00100 ST @09,GMRESULT(,@05) ZERO THE RESULT WORD IN RB 01450004 GMN00200 LR @15,@05 GET ADDRESS OF RB SAVE AREA 01500004 LM @05,@09,0(@15) RESTORE REGISTER 5 THROUGH 9 01550004 L @01,REG1SAVE(,@15) RESTORE REGISTER 1 01600004 L @15,GMRESULT(,@15) LOAD GETMAIN RESULT 01650004 % GOTO IDAGMN2; /* BYPASS VS2 CODE */ 01700004 %IDAGMN1: ; /* START VS2 CODE */ 01750004 L @00,@SIZDATD LOAD LENGTH OF AUTOMATICS 01800004 GETMAIN RC,LV=(0),SP=0 ISSUE GETMAIN IN SUBPOOL ZERO 01850004 LTR @15,@15 TEST RETURN CODE FOR ERROR 01900004 BNZ GMN00100 BRANCH IF ERROR ENCOUNTERED 01950004 * IF NO ERROR WAS ENCOUNTERED 02000004 LR @00,@01 ADDRESS OF GOTTEN AREA IN R0 02050004 LR @14,@01 SAVE THE ADDRESS IN REGISTER 14 02100004 L @01,@SIZDATD LENGTH OF GOTTEN AREA 02150004 MVCL @00,@14 ZERO THE GOTTEN AREA, R15=0 02200004 LR @15,@14 ADDRESS OF AREA IN REGISTER 15 02250004 ST @15,8(,@13) FORWARD CHAIN THIS SAVE AREA 02300004 % IF CALLER='192P' %THEN /* IF IT IS 192P */ 02302003 % GOTO NEXT; /* BYPASS SETTING ID */ 02304003 L @01,@SIZDATD LENGTH OF GOTTEN AREA 02306003 ST @01,88(,@15) STORE LENGTH OF AREA 02310003 LR @14,@03 LOAD BASE REGISTER OF MODULE 02312003 LA @01,23 LOAD NEGATIVE OFFSET BYTE NO. 02312403 SR @14,@01 NEGITIVE OFFSET 23 BYTES 02314003 MVC 72(16,@15),0(@14) GET MODULE NAME AND DATE 02320003 %NEXT: ; 02330003 B GMN00200 BYPASS SETTING ERROR 02350004 GMN00100 SR @15,@15 REGISTER 15 = 0 INDICATES ERROR 02400004 GMN00200 EQU * R15 CONTAINS ADDRESS OR ZERO 02450004 %IDAGMN2: ; 02500004 * REGISTER 15 CONTAINS EITHER THE ADDRESS OF GOTTEN CORE OR 02550004 * ZERO IF THE GETMAIN WAS UNSUCCESSFUL. 02600004 @ENDGEN; 02650004