SPACE 3 00700021 * 01400021 * MODULE IHDGSP01 02100021 * 02800021 * TITLE INITIATE GRAPHIC SUBROUTINE PACKAGE 03500021 * 04200021 * LEVEL 001 04900021 * 05600021 * FUNCTION INITIALIZES GSPCB, ELIMINATING NEED FOR IFFAAA01 06300021 * 07000021 * ENTRY FROM COBOL PROGRAM 07700021 * AT INGSP 08400021 * 09100021 * EXITS NORMAL TO CALLER, RETURN CODE = 0 09800021 * ERROR TO CALLER, ARG 1 SET TO 0. 10500021 * 11200021 * EXT REF MODULES NONE 11900021 * 12600021 * MACROS GETMAIN SAVE 13300021 * FREEMAIN RETURN 14000021 * LOAD 14700021 * 15400021 * INPUT REG 1 POINTER TO LIST OF ARGUMENT ADDRESSES 16100021 * 16800021 * ARG 1 ADDRESS OF FIELD INTO WHICH 17500021 * GSPCB ADDRESS IS PLACED 18200021 * 18900021 * ARG 2 ADDRESS OF NULL VALUE 19600021 * 20300021 * ARG 3 OPTIONAL, ADDR OF ERROR EXIT 20400021 * ROUTINE 20500021 * 20600021 * REG 13-15 OS CONVENTIONAL USE OF SAVE, 21000021 * RETURN, AND ENTRY POINT. 21700021 * 22400021 * OUTPUT TO USER ADDRESS OF GSPCB PUT INTO ARG 1 23100021 * 23800021 EJECT 24500021 SPACE 3 25200021 ************************* REGISTERS ************************** 25900021 SPACE 2 26600021 R0ADR EQU 0 ENTRY POINT ADDRESS OF LOADED ROUTINE 27300021 R0SIZE EQU 0 SIZE OF CORE REQUESTED 28000021 R1PARM EQU 1 SYSTEM PARAMETERS 28700021 R2GSPCB EQU 2 ADDRESS OF GSPCB, SEE DSECT DEFINITION 29400021 R7PLIST EQU 7 ADDRESS OF LIST CONTAINING ADDRESSES OF ARGS 30100021 R9BASE EQU 9 USED DURING MACRO EXPANSIONS 30800021 R10WORKA EQU 10 ADDRESS OF ARG 1 31500021 R11WORKB EQU 11 32200021 R13SAVE EQU 13 USED BY LINK MACRO 32900021 R14BACK EQU 14 33600021 R15EP EQU 15 34300021 SPACE 2 35000021 ************************* CONSTANTS ************************** 35700021 SPACE 36400021 ID EQU X'01' GSPCB ID IS F201 37100021 F2 EQU X'F2' 37800021 PERMWK EQU 1024 1K WORK AREA ALLOWS CONTIGUOUS OVERLAP 38500021 * FOR SUBROUTINE COMMUNICATION 39200021 SPACE 2 39900021 ******************** DISPLACEMENT CONSTANTS **************** 40600021 SPACE 41300021 ARG1 EQU 0 DISPLACEMENT WITHIN ARG 1 FOR GSPCB ADDRESS 42000021 ARG1ADR EQU 0 DISPLACEMENT WITHIN ARG LIST OF ARG 1 42700021 ARG2ADR EQU 4 DISPLACEMENT WITHIN ARG LIST OF ARG 2 43400021 ARG3ADR EQU 8 DISPLACEMEN WITHIN ARG LIST OF ARG 3 44100021 HSA EQU 4 SAVE AREA DISPLACEMENT FOR ADR OF HIGHER SAVE 44800021 HYBYTE EQU 0 DISPLACEMENT FOR ROUTINE ADDR M1097 44850000 WKDISPL EQU 4 WORK AREA BEGINS AFTER GSPCB 45500021 EJECT 46200021 IHDGSP01 CSECT 46900021 *A448500,A651500 M1097 46950000 ENTRY INGSP 47600021 INGSP SAVE (14,12) 48300021 BALR R9BASE,0 ESTABLISH BASE FOR MACROS 49000021 USING *,R9BASE 49700021 SPACE 50400021 LR R7PLIST,R1PARM SAVE ADDR LIST 51100021 LA R0SIZE,PERMWK GET WORK AREA 51800021 SPACE 52500021 GETMAIN R,LV=(0) 53200021 SPACE 53900021 LR R2GSPCB,R1PARM GSPCB ESTABLISHED 54600021 USING GSPCB,R2GSPCB 55300021 XC GSPCB(GSPCBLNG),GSPCB PRESET TO ZEROS 56000021 SPACE 2 56700021 * PROCESS ARGUMENT 1,GSPCB ADDRESS 57400021 SPACE 58100021 L R10WORKA,ARG1ADR(R7PLIST) GET ADR OF ARG 1 58800021 LTR R10WORKA,R10WORKA CHECK IF ONLY ARG 59500021 BM INGSP020 IF YES, ERROR 60200021 ST R2GSPCB,ARG1(R10WORKA) KEEP GSPCB ADR IN ARG 1 60900021 SPACE 2 61600021 * PROCESS ARGUMENT 2, NULL VALUE 62300021 SPACE 63000021 L R11WORKB,ARG2ADR(R7PLIST) GET ADR OF ARG 2 63700021 LTR R11WORKB,R11WORKB CHECK FOR ARG 3 65100021 LA R11WORKB,HYBYTE(R11WORKB) CLEAR HIGH BYTE M1097 65150021 ST R11WORKB,GSPNULLV KEEP ADDR IN GSPCB 65200021 BM INGSP005 IF NO ARG 3, SKIP 65800021 SPACE 2 66500021 * PROCESS ARGUMENT 3, OPTIONAL, ADDRESS OF USER ERROR EXIT ROUTINE 67200021 SPACE 67900021 L R11WORKB,ARG3ADR(R7PLIST) GET ADR OF ARG 3 68600021 ST R11WORKB,GSPAEXIT KEEP ADDR IN GSPCB 69300021 EJECT 70000021 * INITIALIZE GSPCB 70700021 * 1. INSERT CONSTANTS 71400021 * 2. INSERT ADDRESS OF LOADED ROUTINES 72100021 SPACE 72800021 INGSP005 MVI GSPSYSID,F2 73500021 MVI GSPCBID,ID 74200021 LA R10WORKA,GSPAEXIT+WKDISPL CALC WORKAREA ADDR 74900021 ST R10WORKA,GSPAWORK KEEP ADDR IN GSPCB 75600021 ST R13SAVE,SAVE+HSA PREPARE FOR OS CONVENTIONS 76300021 LA R13SAVE,SAVE 77000021 SPACE 2 77700021 LOAD EP=IFFAHA12 78400021 ST R0ADR,GSPASTAT KEEP ADDR IN GSPCB 79100021 SPACE 2 79800021 LOAD EP=IFFAHA11 80500021 ST R0ADR,GSPDCTR2 KEEP ADDR IN GSPCB 81200021 SPACE 81900021 INGSP010 L R13SAVE,SAVE+HSA NORMAL RETURN 82600021 RETURN (14,12) 83300021 SPACE 2 84000021 * ERROR PROCESSING FOR MISSING NULL, ARG 2 84700021 SPACE 85400021 INGSP020 XC ARG1(4,R10WORKA),ARG1(R10WORKA) SET ARG 1 TO 0. 86100021 B INGSP010 RETURN TO USER 86800021 COPY GSPCB 87500021 GSPCBLNG EQU *-GSPCB NUMBER OF BYTES IN GSPCB 88200021 SAVE DS 9D SAVE AREA FOR SYSTEM 88900021 END 89600021