TITLE 'IKJEGEQU, THE EQUATE AND DROP COMMANDS OF TEST' 00016002 * /* START OF SPECIFICATIONS **** 00018002 *02* PROCESSOR = ASSEMBLER 00018402 **** END OF SPECIFICATIONS ***/ 00018802 ********************************************************************** 00050002 * STATUS CHANGE LEVEL 00 VERSION NO. 01 OS/VS2 * 00060002 * * 00070002 * FUNCTION * 00080002 * THIS MODULE IS RESPONSIBLE FOR BUILDING AND MAINTAINING AN IN * 00090002 * CORE SYMBOL TABLE. EACH ENTRY IN THE TABLE CONTAINS A POINTER * 00100002 * TO THE NEXT ENTRY, THE LOAD ADDRESS OF THE SYMBOL, THE * 00110002 * ATTRIBUTES OF THE SYMBOL AND THE LENGTH OF THE SYMBOL ALONG WITH* 00120002 * THE SYMBOL. A NEW ENTRY IS BUILT FOR EACH NEW SYMBOL. IF A * 00130002 * SYMBOL ALREADY EXISTS IN THE TABLE, THE LOAD ADDRESS AND * 00140002 * ATTRIBUTES MAY BE OVERRIDEN. IF THE ATTRIBUTES ARE NOT * 00150002 * SPECIFIED THE DEFAULTS TAKEN WILL BE TYPE-HEX, LENGTH-4 AND * 00160002 * MULTIPLICITY-1. THE MODULE IS CAPABLE OF DEFAULTING THE * 00170002 * LENGTH AND/OR MULTIPLICITY FOR THE DIFFERENT TYPES. THIS * 00180002 * MODULE IS ALSO CAPABLE OF DELETING A LIST OF ENTRIES OR ALL * 00190002 * ENTRIES FROM THE IN CORE SYMBOL TABLE. * 00200002 * * 00210002 * ENTRY POINTS * 00220002 * * 00230002 * IKJEGEQU-ENTERED VIA A LINK FROM IKJEGMNL. REGISTER 9 * 00240002 * WILL POINT TO TCOMTAB, THE COMMON DSECT USED BY TEST. THIS IS * 00250002 * THE ENTRY POINT WHEN ADDING OR UPDATING AN ENTRY IN THE * 00260002 * SYMBOL TABLE POINTED TO BY SYMTABLE IN TCOMTAB. * 00270002 * * 00280002 * IKJEGDRP-ENTERED VIA A LINK FROM IKJEGMNL. REGISTER 9 * 00290002 * WILL POINT TO TCOMTAB, THE COMMON DSECT USED BY TEST. THIS IS * 00300002 * THE ENTRY POINT WHEN DELETING AN ENTRY FROM THE SYMBOL TABLE * 00310002 * POINTED TO BY SYMTABLE IN TCOMTAB. * 00320002 * * 00330002 * IKJEGVDK-ENTERED FROM IKJPARS. REGISTER 1 POINTS TO A * 00340002 * THREE WORD PARAMETER LIST. THE FIRST WORD IS A POINTER TO THE * 00350002 * PDE, THE SECOND WORD IS A POINTER TO IKJEGEQU'S OR IKJEGDRP'S * 00360002 * SAVEAREA. THE THIRD WORD IS TO BE USED BY THE VALIDITY CHECK * 00370002 * ROUTINE TO PASS A POINTER TO A SECOND LEVEL MESSAGE BACK TO * 00380002 * IKJPARS. * 00390002 * * 00400002 * INPUT * 00410002 * THE REQUESTED FUNCTION WILL BE POINTED TO BY INBUF IN TCOMTAB. * 00420002 * FOR THE EQUATE VERB, THE SYMBOL AND ADDRESS PARAMETERS MUST BE * 00430002 * SPECIFIED. THE REST OF THE PARAMETERS ARE OPTIONAL. * 00440002 * THE FORMAT OF THE EQUATE STATEMENT IS * 00450002 * EQUATE SYMBOL ADDR TYPE LENGTH(X) MULTIPLE(X) WHERE X IS AN * 00460002 * INTEGER. * 00470002 * THE SYMBOL IS AN OPTIONAL PARAMETER FOR THE DROP VERB. THE * 00480002 * FORMAT OF THE DROP STATEMENT IS * 00490002 * DROP SYMBOL OR DROP OR DROP SYMBOL,SYMBOL WHERE THE LIST IS * 00500002 * ENCLOSED BY PARENTHESIS. * 00510002 * * 00520002 * OUTPUT * 00530002 * IKJEGEQU WILL PUT THE ADDRESS OF THE IN CORE SYMBOL TABLE IN THE* 00540002 * SYMTABLE FIELD IN TCOMTAB. THE ADDRESS OF EACH NEW ENTRY CAN BE* 00550002 * FOUND IN THE FIRST WORD OF THE PREVIOUS ENTRY. * 00560002 * IKJEGDRP WILL DELETE AN ENTRY FROM THE IN CORE SYMBOL TABLE AND * 00570002 * UPDATE THE AFFECTED POINTER TO REFLECT THE DELETION. IF ALL THE* 00580002 * ENTRIES ARE DELETED SYMTABLE WILL CONTAIN ZEROES. * 00590002 * * 00600002 * EXTERNAL REFERENCES * 00610002 * * 00620002 * IKJPARS-TO VALIDITY CHECK AND SCAN THE COMMAND BUFFER. * 00630002 * REGISTER 1 WILL POINT TO A 7 WORD PARAMETER LIST. * 00640002 * * 00650002 * IKJEGCVT-TO CONVERT THE ADDRESS, MULTIPLICITY AND LENGTH * 00660002 * ATTRIBUTES TO BINARY. REGISTER 1 WILL BE THE ADDRESS COMPLEMENT* 00670002 * OF THE ADDRESS PDE FOR THE ADDRESS CONVERSION AND WILL BE THE * 00680002 * ADDRESS OF THE PDE FOR THE ATTRIBUTE CONVERSIONS. REGISTER 0 * 00690002 * WILL BE POSITIVE TO INDICATE BINARY CONVERSION. * 00700002 * * 00710002 * IKJEGIO-TO WRITE DIAGNOSTIC MESSAGES. * 00720002 * * 00730002 * EXITS, NORMAL * 00870002 * * 00880002 * IKJPARS-ONE OF THE FOLLOWING RETURN CODES WILL BE PASSED * 00890002 * VIA REGISTER 15. * 00900002 * 0 INDICATING TO CONTINUE PROCESSING THE COMMAND BUFFER * 00910002 * 8 INDICATING IKJPARS SHOULD PROMPT WITH REENTER * 00920002 * 12 INDICATING IKJPARS SHOULD RETURN TO IKJEGEQU WITH A * 00930002 * * RETURN CODE OF 20. * 00940002 * * 00950002 * IKJEGMNL-VIA REGISTER 14 WITH ONE OF THE FOLLOWING * 00960002 * RETURN CODES IN REGISTER 15- * 00970002 * 0 NORMAL RETURN CODE * 00980002 * 16 INDICATING AN ATTENTION INTERRUPT WAS ENCOUNTERED * 00990002 * * DURING PROCESSING * 01000002 * * 01010002 * EXITS, ERROR * 01020002 * IKJEGMNL-VIA REGISTER 14 WITH A RETURN CODE OF 20 IN * 01030002 * REGISTER 15 TO INDICATE THE STAE RETRY ROUTINE WAS ENTERED. * 01040002 * * 01050002 * TABLES/WORKAREAS * 01060002 * THIS MODULE USES THE COMMON DSECT OF THE TEST PACKAGE-TCOMTAB. * 01070002 * THE WORKAREA IS LABELED AREAWORK AND CAN BE FOUND AT A * 01080002 * DISPLACEMENT OF X'40' FROM THE AREA POINTED TO BY WORKAREA IN * 01090002 * TCOMTAB. THE PARAMETER CONTROL LIST FOR IKJPARS IS BUILT IN THE* 01100002 * WORKAREA ALONG WITH SWITCHES USED BY THIS MODULE TO PROCESS. * 01110002 * TCOMTAB CONTAINS POINTERS TO THIS MODULE'S SAVEAREA, A POINTER * 01120002 * TO THE COMMAND BUFFER CONTAINING THE REQUEST, AND A POINTER TO * 01130002 * AN OUTPUT BUFFER. * 01140002 * * 01150002 * ATTRIBUTES * 01160002 * REENTRANT, REFRESHABLE * 01170002 * * 01180002 * CHARACTER CODE DEPENDENCY * 01190002 * THE OPERATION OF THIS MODULE DEPENDS UPON AN INTERNAL * 01200002 * REPRESENTATION OF THE EXTERNAL CHARACTER SET WHICH IS EQUIVALENT* 01210002 * TO THE ONE USED AT ASSEMBLY TIME. THE CODING HAS BEEN ARRANGED * 01220002 * SO THAT REDEFINITION OF CHARACTER CONSTANTS, BY REASSEMBLY, * 01230002 * WILL RESULT IN A CORRECT MODULE FOR THE NEW DEFINITIONS. * 01240002 * * 01250002 * NOTES * 01260002 * ABBREVIATIONS COMMONLY USED IN THE COMMENTS BESIDE THE CODE- * 01270002 * 1. PDL-PARAMETER DESCRIPTOR LIST * 01280002 * 2. PDE-PARAMETER DESCRIPTOR ENTRY * 01290002 * 3. PCL-PARAMETER CONTROL LIST * 01300002 * COMMENTS GENERALLY START IN COLUMN 35. * 01310002 * ESTAERTN IS THE ENTRY POINT FOR THE STAE RETRY ROUTINE AND IS * 01320002 * ENTERED FROM IKJEGSTA. * 01330002 ********************************************************************** 01340002 EJECT 01350002 COPY IKJEGSIO 01352002 IKJEGEQU CSECT 01354002 ** THE COMMENTS FOR THE FOLLOWING STATEMENTS START IN COLUMN 25. ** 01360002 R0 EQU 0 REGISTER 0 01370002 R1 EQU 1 REGISTER 1 01380002 R2 EQU 2 REGISTER 2 01390002 R5 EQU 5 REGISTER 5 01400002 R6 EQU 6 REGISTER 6 01410002 R7 EQU 7 REGISTER 7 01420002 R8 EQU 8 REGISTER 8 01422002 R9 EQU 9 REGISTER 9 01430002 R12 EQU 12 REGISTER 12 01440002 R13 EQU 13 REGISTER 13 01450002 R14 EQU 14 REGISTER 14 01460002 R15 EQU 15 REGISTER 15 01470002 ** THE FOLLOWING EQUATES ARE USED AS REGISTER NOTATION THROUGHOUT THE** 01480002 ** MODULE. ** 01490002 PARMREG EQU 1 USED TO PASS PARAMETERS TO OTHER MODULES 01500002 MSGREG EQU 2 USED TO INDICATE MSG NUMBER TO BE OUTPUTTED 01510002 LASTENTR EQU 2 POINTS TO THE LAST ENTRY IN THE INCORE 01520002 * SYMBOL TABLE 01530002 WORKREG EQU 3 GENERAL WORK REGISTER 01540002 R3 EQU 3 PARM REGISTER 01542002 EVEN EQU 4 USED AS AN EVEN REGISTER FOR MULTIPLICATION 01550002 STRNGPTR EQU 4 USED IN VALIDITY CHECK ROUTINE-PT TO VALUE 01560002 OUTBUFRG EQU 4 USED TO INDEX THROUGH OUTPUT BUFFER 01570002 ADDRBASE EQU 4 USED TO ADDRESS ADDRESS PDE AFTER RETURNING 01580002 * FROM IKJPARS 01590002 FSTMSG EQU 5 USED TO ADDRESS FIRST LEVEL MESSAGE 01600002 SECNDMSG EQU 5 USED TO ADDRESS SECOND LEVEL MESSAGE 01610002 ODD EQU 5 USED AS ODD REGISTER FOR MULTIPLICATION 01620002 ATTREG EQU 6 USED TO ADDRESS THE ENTRY IN THE INCORE SYMBOL 01630002 * TABLE 01640002 DISPLREG EQU 7 USED TO DETERMINE WHAT CODE IS TO BE PROCESSED 01650002 * AFTER RETURNING FROM IKJEGIO 01660002 WORKREG2 EQU 7 USED AS A GENERAL REGISTER 01670002 PDLBASE EQU 8 USED TO ADDR PDL AFTER RETURNING FROM IKJPARS 01680002 PDEPTR EQU 8 USED TO ADDR THE PDE FROM PARSE IN THE VALIDITY 01690002 * CHECK ROUTINE 01700002 TABBASE EQU 9 USED TO ADDRESS TCOMTAB 01710002 WORKBASE EQU 10 USED TO ADDRESS WORKAREA 01720002 BASEREG EQU 11 BASE REGISTER FOR ADDRESSABILITY WITHIN CSECT 01730002 ENTRYREG EQU 12 USED TO ADDRESS NEW ENTRY IN INCORE SYMBOL 01740002 * TABLE 01750002 RETURN EQU 14 CONTAINS ADDRESS OF NEXT SEQUENTIAL INST 01760002 RETCODE EQU 15 USED FOR RETURNING RETURN CODES 01770002 ** THE FOLLOWING EQUATES ARE USED THROUGHOUT THE PROGRAM FOR LENGTHS,** 01780002 ** AND DISPLACEMENTS IN INSTRUCTIONS. ** 01790002 L0 EQU 0 LENGTH OF 0 01800002 L1 EQU 1 LENGTH OF 1 01810002 L2 EQU 2 LENGTH OF 2 01820002 L3 EQU 3 LENGTH OF 3 01830002 L4 EQU 4 LENGTH OF 4 01840002 L5 EQU 5 LENGTH OF 5 01850002 L10 EQU 10 LENGTH OF 10 01860002 L16 EQU 16 LENGTH OF 16 01870002 L29 EQU 29 LENGTH OF 29 01880002 L35 EQU 35 LENGTH OF 35 01890002 D0 EQU 0 DISPLACEMENT OF 0 01900002 D1 EQU 1 DISPLACEMENT OF 1 01910002 D2 EQU 2 DISPLACEMENT OF 2 01920002 D3 EQU 3 DISPLACEMENT OF 3 01930002 D4 EQU 4 DISPLACEMENT OF 4 01940002 D5 EQU 5 DISPLACEMENT OF 5 01950002 D6 EQU 6 DISPLACEMENT OF 6 01960002 D7 EQU 7 DISPLACEMENT OF 7 01970002 D8 EQU 8 DISPLACEMENT OF 8 01980002 D9 EQU 9 DISPLACEMENT OF 9 01990002 D10 EQU 10 DISPLACEMENT OF 10 02000002 D11 EQU 11 DISPLACEMENT OF 11 02010002 D12 EQU 12 DISPLACEMENT OF 12 02020002 D14 EQU 14 DISPLACEMENT OF 14 02030002 D15 EQU 15 DISPLACEMENT OF 15 02040002 D16 EQU 16 DISPLACEMENT OF 16 02050002 D24 EQU 24 DISPLACEMENT OF 24 02052002 D28 EQU 28 DISPLACEMENT OF 28 02060002 D29 EQU 29 DISPLACEMENT OF 29 02070002 D33 EQU 33 DISPLACEMENT OF 33 02080002 D34 EQU 34 DISPLACEMENT OF 34 02090002 D39 EQU 39 DISPLACEMENT OF 39 02100002 D52 EQU 52 DISPLACEMENT OF 52 02110002 D54 EQU 54 DISPLACEMENT OF 54 02120002 D56 EQU 56 DISPLACEMENT OF 56 02130002 D60 EQU 60 DISPLACEMENT OF 60 02140002 D64 EQU 64 DISPLACEMENT OF 64 02150002 D67 EQU 67 DISPLACEMENT OF 67 02160002 D68 EQU 68 DISPLACEMENT OF 68 02170002 D75 EQU 75 DISPLACEMENT OF 75 02180002 FACTOR EQU 3 USED TO CALCULATE MESSAGE DISPLACEMENT 02190002 ONE EQU 1 NUMERICAL ONE 02200002 ONES EQU 1 USED IN TM INSTRUCTION 02210002 TWO EQU 2 NUMERICAL TWO 02220002 SEVEN EQU 7 NUMERICAL SEVEN 02222002 EIGHT EQU 8 NUMERICAL EIGHT 02230002 ZERO EQU 0 NUMERICAL 0 02240002 TWELVE EQU 12 NUMBER OF BYTES IN EACH ENTRY OF ATTRTAB 02250002 BLANK EQU C' ' BLANK 02260002 REGSMASK EQU X'38' USED TO TEST FLAG 4 OF ADDR PDE 02270002 HEXZERO EQU X'00' USED IN TESTING SWITCHES 02280002 HEXONE EQU X'01' USED IN TESTING SWITCHES 02290002 HEXTWO EQU X'02' USED IN TESTING SWITCHES 02300002 HEXTHREE EQU X'03' SIGNIFIES TO STAE THAT A LINK FAILED 02310002 HEXFOUR EQU X'04' USED IN TESTING SWITCHES 02320002 HEXEIGHT EQU X'08' USED IN TESTING SWITCHES 02330002 HEX14 EQU X'14' USED TO SET TYPE CHARACTER OF PDE 02340002 HEX80 EQU X'80' USED TO TEST FOR ADDRESS OF BINARY ADDR 02350002 HEXFB EQU X'FB' USED TO SET ALLSW 02360002 HEXFD EQU X'FD' USED TO TURN CMMNDSW OFF 02370002 HEXFE EQU X'FE' USED TO TURN DUPLSW OR LOWSW OFF 02380002 HEXFF EQU X'FF' SIGNIFIES END OF STAE ABEND TABLE 02390002 RET0 EQU 0 USED TO SET RETURN CODE 02400002 RET8 EQU 8 USED TO SET RETURN CODE 02410002 RET12 EQU 12 USED TO SET RETURN CODE 02420002 RET16 EQU 16 USED TO SET RETURN CODE 02430002 RET20 EQU 20 USED TO SET RETURN CODE 02440002 INSERTRG EQU 4 EQUATE REG USED FOR INSERTS TO MSG 02450002 FIVE EQU 5 NUMBER FIVE FOR INCREMENTING INST LEN 02460002 FOUR EQU 4 NUMBER FOUR FOR INCREMENTING INST LEN 02462002 BADESTAE EQU 24 RTN CODE NUMBER IF BAD ESTAE 02470002 SIX EQU 6 EQUATE NUMBER SIX FOR DATA MANIPULATION 02480002 L8 EQU 8 EQUATE NUMBER EIGHT FOR DATA MANIPULATION 02490002 M0240 EQU 240 EQUATE NUMBER OF STATIC MESSAGE IN I/O 02500002 M0241 EQU 241 EQUATE NUMBER OF STATIC MESSAGE IN I/O 02510002 SPACE 3 02520002 ENTRY IKJEGDRP 02530002 SPACE 3 02540002 ** THE COMMENTS FOR THE FOLLOWING STATEMENTS START IN COLUMN 35. ** 02550002 EJECT 02560002 SAVE (14,12),,* SAVE REGISTERS 02570002 LR BASEREG,R15 ESTABLISH ADDRESSABILITY FOR 02580002 USING IKJEGEQU,BASEREG THIS CSECT-BASEREG IS BASE 02590002 USING TCOMTAB,TABBASE USE TABBASE TO ADDR TCOMTAB 02600002 L WORKREG,WORKAREA OBTAIN ADDR OF WORKAREA FROM TCOMTAB 02610002 USING TSTCWORK,WORKREG ESTABLISH ADDRESSABILITY TO ENTIRE 02620002 * WORKAREA 02630002 LA WORKBASE,CWORKCMD GET ADDRESS OF IKJEGEQU'S 02640002 * WORKAREA 02650002 USING AREAWORK,WORKBASE USE WORKBASE TO ADDRESS WORKAREA 02660002 DROP WORKREG DROP ADDRESSABILITY TO ENTIRE 02670002 * WORKAREA 02680002 XC PPLAREA(ENDWORK-PPLAREA),PPLAREA CLEAR WORKAREA 02690002 B PARS01C1 GO SET UP SAVEAREAS 02700002 DROP BASEREG 02710002 IKJEGDRP DS 0H 02720002 SAVE (14,12),,* SAVE REGISTERS 02730002 USING IKJEGDRP,R15 ESTABLISH ADDRESSABILITY 02740002 L BASEREG,BASE GET ADDRESS OF BEGINNING OF PROGRAM 02750002 DROP R15 02760002 USING IKJEGEQU,BASEREG BASEREG IS THE BASE REGISTER 02770002 USING TCOMTAB,TABBASE USE TABBASE TO ADDR TCOMTAB 02780002 L WORKREG,WORKAREA OBTAIN ADDR OF WORKAREA FROM TCOMTAB 02790002 USING TSTCWORK,WORKREG ESTABLISH ADDRESSABILITY TO ENTIRE 02800002 * WORKAREA 02810002 LA WORKBASE,CWORKCMD GET ADDRESS OF IKJEGDRP'S WORKAREA 02820002 USING AREAWORK,WORKBASE USE WORKBASE TO ADDRESS WORKAREA 02830002 DROP WORKREG DROP ADDRESSABILITY TO ENTIRE 02840002 * WORKAREA 02850002 XC PPLAREA(ENDWORK-PPLAREA),PPLAREA CLEAR WORKAREA 02860002 OI DROPSW,HEXTWO INDICATE DROP FUNCTION REQUESTED 02870002 ** THE FOLLOWING CODE SETS UP THE SAVEAREAS FOR THE EQUATE AND DROP ** 02880002 ** FUNCTIONS. ** 02890002 PARS01C1 DS 0H 02900002 MVC LNGTWORK(L3),CHARZERO INITIALIZE LENGTH TO CHARACTER 02910002 * ZERO 02920002 L R15,REGSAVE2 GET ADDRESS OF SAVEAREA FROM 02930002 * TCOMTAB 02940002 ST R13,D4(R15) STORE ADDRESS OF IKJEGMNL SAVEAREA 02950002 ST R15,D8(R13) STORE ADDR OF OUR SAVEAREA 02960002 LR R13,R15 PUT ADDRESS OF OUR SAVEAREA INTO 02970002 * REGISTER 13 02980002 STM R14,R12,D12(R13) SAVE OUR REGISTERS 02990002 ********************************************************************* 03000002 * ISSUE STAE FOR DROP AND EQUATE * 03010002 ********************************************************************* 03020002 L WORKREG,TSTSTAE GET ADDR OF STAE EXIT ROUTINE 03060002 LA R15,STAEAREA GET ADDR OF STAE WORKAREA 03070002 MVC D0(STAELEN,R15),STAELIST MOVE STAE LIST FORM INTO 03080002 * WORKAREA 03090002 ESTAE (R3),CT,PARAM=IKJEGSPL,RECORD=YES,XCTL=NO,MF=(E,(R15)) 03092002 LTR R15,R15 IS RETURN CODE ZERO 03110002 SMTSTAE DS 0H SMT LABEL FOR TEST CASE TEQU5500 03120002 BZ PARS01F2 YES, CONTINUE PROCESSING 03130002 STC R15,TSTESTRC SAVE RTN CODE FOR MAINLINE 03132002 LA R15,BADESTAE INDICATE TO MAINLINE BAD ESTAE 03134002 B EXIT05F2 RETURN TO MAINLINE 03136002 PARS01G1 DS 0H 03140002 XC TSTIOPRM,TSTIOPRM ZERO OUT I/O PARM LIST 03150002 IKJEGSIO MSG,FIRST=M0103,ID=EQU13,MF=(E,TSTIOPRM) CALL I/O 03160002 B MSG06A1 GO TO ERROR CODE ANALYE ROUTINE 03170002 PARS01F2 DS 0H 03180002 TM TSTFLGS3,NOPARMS WERE PARAMETERS SPECIFIED 03190002 BZ PARS01A3 YES, GO TO PARSE 03200002 TM DROPSW,HEXTWO NO, CHECK FOR DROP COMMAND 03210002 BO SYM02A1 YES, SKIP GOING TO PARSE 03220002 PARS01A3 DS 0H 03230002 ** THIS CODE BUILDS THE PARAMETER LIST IN THE WORKAREA TO GO TO ** 03240002 ** IKJPARS TO SCAN AND VALIDITY CHECK THE PARAMETERS OF THE COMMAND ** 03250002 ** BUFFER. ** 03260002 LR WORKREG2,WORKBASE ESTABLISH ADDRESSABILITY TO PARSE 03270002 USING PPL,WORKREG2 PARAMETER LIST 03280002 MVC PPLUPT(L4),TSTUPT PUT ADDR UPT INTO PARAMETER LIST 03290002 MVC PPLECT(L4),TSTECT PUT ADDR ECT INTO PARAMETER LIST 03300002 MVC PPLECB(L4),TSTCPECB PUT ADDR ECB INTO PARAMETER LIST 03310002 TM DROPSW,HEXTWO IS THE REQUEST TO DELETE AN ENTRY 03320002 * FROM THE IN CORE SYMBOL TABLE 03330002 BZ PARS01C3 NO, GO SET UP PCL FOR EQUATE 03340002 MVC PPLPCL(L4),PARSDROP YES, PUT ADDR OF DROP'S PCL INTO 03350002 * PARAMETER LIST 03360002 B PARS01D3 GO SET UP REST OF PARAMETER LIST 03370002 PARS01C3 DS 0H 03380002 MVC PPLPCL(L4),PARSADDR PUT ADDR OF EQUATE'S PCL INTO 03390002 * PARAMETER LIST 03400002 PARS01D3 DS 0H 03410002 LA WORKREG,TSTANSPL GET ADDR OF ANSWER PLACE FOR IKJPARS 03420002 ST WORKREG,PPLANS PUT ADDRESS INTO THE PCL FOR IKJPARS 03430002 MVC PPLCBUF(L4),INBUF MOVE COMMAND BUFFER ADDRESS 03440002 * INTO PARAMETER LIST 03450002 ST R13,PPLUWA PUT ADDR OF THIS MODULE'S SAVEAREA 03460002 * INTO PARAMETER LIST 03470002 LR PARMREG,WORKBASE REG 1 POINTS TO PARAMETER LIST 03480002 DROP WORKREG2 DROP ADDRESSABILITY TO PARSE 03490002 * PARAMETER LIST 03500002 LINK EP=IKJPARS,ERRET=LINKFAIL GO TO IKJPARS 03510002 PARSBLOW DS 0H LABEL USED BY STAE RETRY ROUTINE 03510402 B LINKOK IF CONTROL COMES HERE OK 03512002 LINKFAIL DS 0H 03514002 LR R6,R1 TRANSFER ABEND CODE 03516002 LR R5,R15 TRANSFER RTN CODE 03518002 XC TSTIOPRM,TSTIOPRM CLEAR PARM LIST 03518402 IKJEGSIO SVCERR,SVC=6,ABENDRG=(R6),RC=(R5),ID=EQU13, CALL I/O *03518802 INST11=(NUM,I0040),MF=(E,TSTIOPRM) TO ISSUE AN ERROR MSG 03519202 B EXIT05G5 BRANCH TO EXIT 03519602 LINKOK DS 0H 03519702 SMTPARS DS 0H SMT LABEL FOR TEST CASES TEQU4900 03530002 * AND TDRP1600 03540002 ** THE FOLLOWING BRANCH TABLE IS USED TO DETERMINE ACTION TO BE ** 03550002 ** TAKEN AFTER RETURNING FROM IKJPARS DEPENDENT ON THE RETURN CODE ** 03560002 ** FROM IKJPARS IN REGISTER 15. ** 03570002 B PARS01F3(RETCODE) BRANCH TO TABLE INDEXED BY CONTENTS 03580002 * OF REGISTER 15 03590002 PARS01F3 DS 0H 03600002 B SYM02A1 0 - CONTINUE PROCESSING 03610002 B EXIT05G5 4 - RETURN TO IKJEGMNL 03620002 B ATTN05H4 8 - ATTENTION ENCOUNTERED 03630002 B PARS01J4 12 - GO WRITE ERROR MESSAGE 03640002 B PARS01G1 16 - GO WRITE ERROR MESSAGE 03650002 B EXIT05E2 20 - GO HANDLE SERVICE RTN CODE 03660002 PARS01J4 DS 0H 03670002 TM DROPSW,HEXTWO WAS DROP FUNCTION REQUESTED 03680002 BZ PARS01K4 NO, GO WRITE MESSAGE FOR EQUATE 03690002 XC TSTIOPRM,TSTIOPRM ZERO OUT I/O PARM FIELD 03700002 IKJEGSIO MSG,FIRST=M0104,INST11=(NUM,I0012),SECOND=M0277, *03706002 ID=EQU13,MF=(E,TSTIOPRM) CALL I/O TO ISSUE MSG 03708002 B MSG06A1 GO WRITE MESSAGE 03710002 PARS01K4 DS 0H 03720002 XC TSTIOPRM,TSTIOPRM ZERO OUT I/O PARM FIELD 03730002 IKJEGSIO MSG,FIRST=M0104,INST11=(NUM,I0011),SECOND=M0277, *03732002 ID=EQU13,MF=(E,TSTIOPRM) CALL I/O TO ISSUE MSG 03734002 B MSG06A1 GO WRITE MESSAGE 03740002 SYM02A1 DS 0H 03750002 ** THE FOLLOWING CODE GETS THE LOAD ADDRESS OF THE SYMBOL FROM THE ** 03760002 ** PARAMETER DESCRIPTOR LIST (PDL) BUILT BY IKJPARS. IT CHECKS TO ** 03770002 ** SEE IF THE ADDRESS IS ALREADY IN THE IN CORE SYMBOL TABLE. THE ** 03780002 ** ADDRESS OF THE PDL IS FOUND IN TSTANSPL IN TCOMTAB ** 03790002 L PDLBASE,TSTANSPL OBTAIN ADDR OF PDL 03800002 L WORKREG2,D8(PDLBASE) GET ADDRESS OF SYMBOL 03810002 L WORKREG,SYMTABLE GET ADDRESS OF SYMBOL TABLE 03820002 LA LASTENTR,SYMTABLE OBTAIN ADDR OF LAST ENTRY 03830002 TM DROPSW,HEXTWO WAS DROP FUNCTION REQUESTED 03840002 BC ONES,DROP09A1 YES, GO HANDLE REQUEST 03850002 LA ADDRBASE,D16(PDLBASE) NO, GET ADDRESS OF ADDRESS PDE 03860002 USING IKJPARMA,ADDRBASE ADDRBASE ADDRESSES ADDRESS PDE 03870002 TM PDEFLG5,PDESIB IS LOAD ADDR OF SYMBOL IN PDL 03880002 BZ SYM02D2A YES, PICK ADDRESS UP AND TEST FOR 03890002 * SYMBOL TABLE 03900002 ** THIS CODE PICKS THE LOAD ADDRESS UP FROM THE SYM INFO BLOCK ** 03910002 ** POINTED TO BY THE LAST WORD IN THE ADDRESS PDE. ** 03920002 L R5,PDEUSER NO, GET ADDRESS OF SI BLOCK 03930002 L R5,D0(R5) GET LOAD ADDRESS OF SYMBOL 03940002 B SYM02D2 GO SEE IF SYMBOL TABLE EXIST 03950002 SYM02D2A DS 0H 03960002 L R5,PDEUSER GET ADDRESS OF SYMBOL FROM PDL 03970002 SYM02D2 DS 0H 03980002 LA R5,0(,R5) ZERO HIGH ORDER BYTE 03982002 LTR WORKREG,WORKREG ARE THERE ANY ENTRIES IN THE IN CORE 03990002 * SYMBOL TABLE 04000002 BZ SYM02E3 NO, GO SET UP FOR GETMAIN 04010002 SYM02D3 DS 0H 04020002 ** THIS CODE CHECKS TO SEE IF THE LENGTH OF THE NEW SYMBOL IS THE ** 04030002 ** SAME AS THE LENGTH OF ANY SYMBOL ALREADY IN THE IN CORE SYMBOL ** 04040002 ** TABLE. ** 04050002 CLC D12(L2,PDLBASE),D14(WORKREG) ARE LENGTHS THE SAME 04060002 BE SYM02D3A YES, GO SEE IF SYMBOLS ARE SAME 04070002 SYM02D3B DS 0H 04080002 ** THIS CODE IS ENTERED FROM SYM02D3A AND IS RESPONSIBLE FOR SETTING ** 04090002 ** UP TO CHECK THE NEXT ENTRY IN THE TABLE FOR DUPLICATE SYMBOLS ** 04100002 LR LASTENTR,WORKREG NO, SAVE ADDR OF LAST ENTRY SCANNED 04110002 L WORKREG,D0(WORKREG) GET ADDRESS OF NEXT ENTRY 04120002 LTR WORKREG,WORKREG WAS THERE ANOTHER ENTRY 04130002 BNZ SYM02D3 YES, CONTINUE SEARCH FOR SYMBOL 04140002 SYM02E3 DS 0H 04150002 ** THIS CODE CALCULATES THE LENGTH OF THE ENTRY ** 04160002 XR R1,R1 CLEAR A REGISTER 04170002 LH R1,D12(PDLBASE) OBTAIN LENGTH OF SYMBOL 04180002 SMTGET01 DS 0H SMT LABEL FOR TESTCASE TEQU5600 - 04190002 * THIS LABEL MUST COME BEFORE THE LAST 04200002 * MODIFICATION OF REGISTER 1 WHEN 04210002 * ISSUING THE GETMAIN. 04220002 LA R1,D16(R1) ADD 16 TO IT FOR ENTRY SIZE 04230002 LR R0,R1 PUT LENGTH INTO REGISTER 0 04240002 SYM02F3 DS 0H 04250002 ** THIS CODE GETS THE MAIN STORAGE FOR THE TABLE ENTRY ** 04260002 * BYTE OF REGISTER 0 04280002 GETMAIN RC,SP=1,LV=(0) ISSUE GETMAIN 04290002 LTR R15,R15 TEST FOR ERROR 04292002 BZ OKGETMN CONTINUE IF OK 04294002 LR R6,R15 TRANSFER RETURN CODE FOR I/O 04294402 XC TSTIOPRM,TSTIOPRM CLEAR I/O PARM LIST 04296002 IKJEGSIO SVCERR,SVC=10,RC=(R6),ID=EQU13,MF=(E,TSTIOPRM) 04298002 CH R15,H16 TEST FOR SERIOUS ERROR 04298402 BL EXIT05H5 IF NOT SERIOUS CONTINUE 04298802 B EXIT05J5 RETURN TO MAINLINE WITH CODE 04299202 OKGETMN DS 0H 04299602 SYM02G3 DS 0H LABEL FOR STAE RETRY ROUTINE 04300002 LR ENTRYREG,R1 SAVE ADDRESS OF GETMAIN AREA 04310002 USING ENTRY,ENTRYREG USE ENTRYREG TO ADDRESS TABLE ENTRY 04320002 XC D0(L16,ENTRYREG),D0(ENTRYREG) CLEAR 16 BYTES OF ENTRY 04330002 ST R5,ADDRSYM PUT LOAD ADDRESS OF SYMBOL INTO ENTRY 04340002 XR R6,R6 CLEAR A REGISTER 04350002 LH R6,D12(PDLBASE) GET LENGTH OF SYMBOL 04360002 STH R6,SYMLNGTH PUT LENGTH OF SYMBOL INTO TABLE ENTRY 04370002 BCTR R6,ZERO TAKE ONE FROM LENGTH OF SYMBOL 04380002 EX R6,SYM02G3A GO MOVE SYMBOL INTO ENTRY OF TABLE 04390002 ST ENTRYREG,D0(LASTENTR) PUT ADDRESS OF NEW ENTRY INTO 04400002 * FIRST WORD OF PREVIOUS ENTRY 04410002 B TYPE03A1 GO GET TYPE ATTRIBUTE 04420002 SYM02G3A MVC D16(L0,ENTRYREG),D0(WORKREG2) MOVE SYMBOL INTO ENTRY 04430002 SYM02D3D CLC D0(L0,WORKREG2),D16(WORKREG) ARE THE SYMBOLS THE SAME 04440002 SYM02D3A DS 0H 04450002 XR R6,R6 CLEAR A REGISTER 04460002 LH R6,D12(PDLBASE) PUT LENGTH OF SYMBOL IN A REGISTER 04470002 BCTR R6,ZERO SUBTRACT ONE FROM LENGTH OF SYMBOL 04480002 EX R6,SYM02D3D GO CHECK TO SEE IF SYMBOLS ARE SAME 04490002 BNE SYM02D3B NO, CONTINUE SEARCHING ENTRIES 04500002 SYM02D4 DS 0H 04510002 LR ENTRYREG,WORKREG PUT ADDRESS OF ENTRY INTO REGISTER 04520002 USING ENTRY,ENTRYREG ENTRYREG ADDRESSES TABLE ENTRY 04530002 L R6,ADDRSYM GET EXISTING LOAD ADDRESS 04540002 CR R5,R6 WAS SAME LOAD ADDRESS SPECIFIED 04550002 BNE SYM02E4 NO, SAVE ADDRESS SPECIFIED 04560002 OI DUPLSW,HEXONE YES, INDICATE ENTRY ALREADY EXISTS 04570002 B TYPE03A1 GO GET TYPE ATTRIBUTE 04580002 SYM02E4 DS 0H 04590002 ST R5,ADDRSYM PUT LOAD ADDRESS OF SYMBOL INTO TABLE 04600002 TYPE03A1 DS 0H 04610002 ** THIS CODE PUTS THE TYPE ATTRIBUTE INTO THE IN CORE SYMBOL TABLE IF** 04620002 ** AN ENTRY DOES NOT ALREADY EXISTS AND OVERRIDES THE TYPE FIELD IF ** 04630002 ** THE ENTRY FOR THIS LOAD ADDRESS ALREADY EXISTS. ** 04640002 XR WORKREG2,WORKREG2 CLEAR A REGISTER 04650002 LH WORKREG2,D52(PDLBASE) OBTAIN TYPE SPECIFIED FROM 04660002 * TYPE KEYWORD INDICATOR FIELD IN PDL 04670002 DROP ADDRBASE DROP ADDRESSABILITY TO ADDR PDE 04680002 LA ATTREG,ATTRTAB OBTAIN ADDRESS OF BEGINNING OF 04690002 * ATTRIBUTE TABLE 04700002 LTR WORKREG2,WORKREG2 WAS TYPE SPECIFIED 04710002 BNZ TYPE03B2 YES, GO FIGURE TABLE DISPLACEMENT 04720002 TM DUPLSW,HEXONE NO, DID ENTRY ALREADY EXIST 04730002 BC ONES,LNG04A1A YES, GO GET LENGTH ATTRIBUTE 04740002 LA WORKREG2,TWO NO, DEFAULT TYPE TO HEX 04750002 TYPE03B2 DS 0H 04760002 ** THIS CODE FIGURES THE DISPLACEMENT NEEDED INTO THE ATTRIBUTE ** 04770002 ** TABLE THAT IS USED TO ASSURE THE ATTRIBUTES ARE SPECIFIED ** 04780002 ** CORRECTLY. THE PDL CONTAINS A FIELD WHICH CONTAINS A NUMBER AND ** 04790002 ** THAT NUMBER MULTIPLIED BY A FACTOR IS USED AS AN INDEX TO ** 04800002 ** DETERMINE THE TYPE SPECIFIED. ** 04810002 LR EVEN,WORKREG2 PUT INDEX FACTOR INTO A REGISTER 04820002 LA ODD,TWELVE PUT NUMBER OF BYTES IN EACH TABLE 04830002 * ENTRY OF ATTRTAB INTO A REGISTER 04840002 MR EVEN,EVEN MULTIPLY THE INDEX FACTOR BY 04850002 * THE NUMBER OF BYTES IN EACH ENTRY 04860002 * TO GET THE CORRECT DISPLACEMENT 04870002 * INTO THE ATTRIBUTE TABLE 04880002 AR ATTREG,ODD ADD THE START OF THE TABLE TO 04890002 * THE DISPLACEMENT TO FIND THE 04900002 * LIST IN USE 04910002 LA ODD,TWELVE 04920002 SR ATTREG,ODD PLACE POINTER TO BEGINNING OF LIST 04930002 TM DUPLSW,HEXONE DOES AN ENTRY ALREADY EXIST 04940002 BC ONES,TYPE03B4 YES, GO CHECK FOR SAME TYPE 04950002 MVC ATTRTYPE(L1),D0(ATTREG) NO, MOVE THE TYPE FIELD INTO 04960002 * ENTRY OF IN CORE SYMBOL TABLE 04970002 B LNG04A1 GO GET LENGTH ATTRIBUTE 04980002 TYPE03B4 DS 0H 04990002 ** THIS CODE TESTS TO SEE IF THE SAME TYPE ATTRIBUTE WAS GIVEN FOR ** 05000002 ** THE NEW ENTRY AS THE OLD. ** 05010002 CLC D8(L1,WORKREG),D0(ATTREG) ARE THE TYPES THE SAME 05020002 BE LNG04A1 YES, GO GET LENGTH ATTRIBUTE 05030002 XC ATTRTYPE(ATTRLNTH-ATTRTYPE),ATTRTYPE NO-CLEAR OLD ENTRY 05040002 * OUT 05050002 MVC D8(L1,WORKREG),D0(ATTREG) MOVE TYPE ATTRIBUTE 05060002 * INTO TABLE 05070002 NI DUPLSW,HEXFE TURN DUPLICATE ENTRY SWITCH OFF 05080002 B LNG04A1 GO GET LENGTH ATTRIBUTE 05090002 LNG04A1A DS 0H 05100002 ** THIS CODE IS RESPONSIBLE FOR FINDING THE CORRECT ENTRY IN ATTRTAB ** 05110002 ** THAT DESCRIBES THIS TYPE ATTRIBUTE. ** 05120002 CLC D0(L1,ATTREG),ATTRTYPE ENTRIES CORRESPOND 05130002 BE LNG04A1 YES, CONTINUE PROCESSING 05140002 LA ATTREG,TWELVE(ATTREG) NO, GO TO NEXT ENTRY IN ATTRTAB 05150002 B LNG04A1A GO CHECK THIS ENTRY 05160002 LNG04A1 DS 0H 05170002 ** THE FOLLOWING CODE IS RESPONSIBLE FOR PUTTING THE LENGTH ATTRIBUTE** 05180002 ** INTO THE IN CORE SYMBOL TABLE. IF DEALING WITH A NEW ENTRY AND ** 05190002 ** THE LENGTH WAS NOT SPECIFIED THE DEFAULT WILL BE ONE. IF THE NEW ** 05200002 ** ENTRY IS OVERRIDING AN EXISTING ENTRY THE DEFAULT WILL BE THAT OF ** 05210002 ** THE OLD ENTRY. ** 05220002 XR R5,R5 CLEAR A REGISTER 05230002 LH R5,D54(PDLBASE) OBTAIN LENGTH ATTRIBUTE INDICATOR 05240002 * FROM PDL 05250002 LTR R5,R5 WAS LENGTH ATTRIBUTE SPECIFIED 05260002 BNZ LNG04A2 YES, GO CHECK VALUE 05270002 ** THIS CODE DETERMINES IF THE ENTRY OVERLAID AN EXISTING ENTRY. ** 05280002 TM DUPLSW,HEXONE IS THIS A NEW ENTRY 05290002 BNZ MULT05A1 NO, GO GET MULTIPLICITY ATTRIBUTE 05300002 ** THIS CODE IS EXECUTED IF THE LENGTH ATTRIBUTE WAS NOT SPECIFIED. ** 05310002 MVC ATTRLNTH+D1(L1),D7(ATTREG) PUT LENGTH INTO TABLE 05320002 B MULT05A1 GO GET MULTIPLICITY ATTRIBUTE 05330002 LNG04A2 DS 0H 05340002 XR R5,R5 CLEAR A REGISTER 05350002 LH R5,D64(PDLBASE) OBTAIN THE NUMBER OF BYTES SPECIFIED 05360002 * IN THE LENGTH ATTRIBUTE 05370002 L R7,D60(PDLBASE) OBTAIN ADDR OF CHAR STRING 05380002 SLL R5,TWO MULTIPLY NUMBER OF BYTES OF LENGTH 05390002 * ATTR BY 4 IN ORDER TO USE THE 05400002 * FOLLOWING BRANCH TABLE 05410002 TABLE DS 0H 05420002 B TABLE(R5) BRANCH INTO TABLE INDEXED BY THE 05430002 * THE CONTENTS OF R5 05440002 B LNGONE BRANCH TO HANDLE ONE BYTE 05450002 B LNGTWO BRANCH TO HANDLE TWO BYTES 05460002 B LNGTHREE BRANCH TO HANDLE THREE BYTES 05470002 LNGONE DS 0H 05480002 ** THIS CODE HANDLES THE CASE OF THE LENGTH ATTRIBUTE BEING ONE BYTE ** 05490002 MVC LNGTWORK+D2(L1),D0(R7) PUT SPECIFIED LENGTH INTO 05500002 * WORKAREA 05510002 B LNGTEST GO TEST VALUE 05520002 LNGTWO DS 0H 05530002 ** THIS CODE HANDLES THE CASE OF THE LENGTH ATTRIBUTE BEING TWO BYTES** 05540002 MVC LNGTWORK+D1(L2),D0(R7) PUT SPECIFIED LENGTH INTO 05550002 * WORKAREA 05560002 B LNGTEST GO TEST VALUE 05570002 LNGTHREE DS 0H 05580002 ** THIS CODE HANDLES THE CASE OF THE LENGTH ATTRIBUTE BEING THREE ** 05590002 ** BYTES. ** 05600002 MVC LNGTWORK(L3),D0(R7) PUT SPECIFIED LENGTH INTO WORKAREA 05610002 LNGTEST DS 0H 05620002 CLC LNGTWORK(L3),D1(ATTREG) TEST TO SEE IF VALUE SPECIFIED 05630002 * IS LESS THAN MINIMUN VALUE ALLOWED 05640002 BL LNG04A3 YES, TAKE DEFAULT AND WRITE MESSAGE 05650002 CLC LNGTWORK(L3),D4(ATTREG) TEST TO SEE IF VALUE SPECIFIED 05660002 * IS GREATER THAN MAXIMUN VALUE 05670002 * ALLOWED 05680002 BH LNG04B3 YES, TAKE DEFAULT AND WRITE MESSAGE 05690002 MVI D67(PDLBASE),HEX14 NO, SET TYPE CHARACTER OF PDE 05700002 LNG04C2 DS 0H 05710002 ** THIS ROUTINE SETS UP THE PARAMETERS TO GO TO IKJEGCVT FOR VALUE ** 05720002 ** CONVERSION TO BINARY. REG 1 IS POSITIVE TO INDICATE VALUE ** 05730002 ** CONVERSION AND CONTAINS THE ADDRESS OF THE PDE. ** 05740002 LA PARMREG,D60(PDLBASE) PUT ADDR OF LENGTH PDE INTO REG 1 05750002 LNG04D2 DS 0H 05760002 ** ENTRY POINT FOR OTHER ROUTINES NEEDING TO GO TO CONVERT FOR VALUE ** 05770002 ** CONVERSION. ** 05780002 XR R0,R0 CLEAR REG 0 TO INDICATE BINARY 05790002 * CONVERSION 05800002 L R15,TSTCONVT OBTAIN ADDR OF IKJEGCVT FROM TCOMTAB 05810002 BALR RETURN,R15 GO TO CONVERT ROUTINE 05820002 LTR R15,R15 IS RETURN CODE FROM IKJEGCVT 0 05830002 BZ LNG04F3 YES, CONTINUE PROCESSING 05840002 BNZ EXIT05F2 NO, GO TO CHECK SERVICE RTN RETURN 05850002 * CODE 05860002 LNG04B3 DS 0H 05870002 LA MSGREG,M0241 PREPARE TO WRITE MSG IKJ57293I 05880002 B LNG04A3A GO GET MESSAGE 05890002 LNG04A3 DS 0H 05900002 LA MSGREG,M0240 PREPARE TO WRITE MSG IKJ57293I 05910002 OI LOWSW,HEXONE INDICATE VALUE SPECIFIED WAS TOO LOW 05920002 LNG04A3A DS 0H 05930002 ** THIS CODE IS EXECUTED IF THE LENGTH ATTRIBUTE WAS INCORRECT. THE ** 05940002 ** DEFAULT VALUE WILL BE SUBSTITUTED AND THE USER WILL BE INFORMED. ** 05950002 MVC ATTRLNTH+D1(L1),D7(ATTREG) MOVE THE LENGTH ATTRIBUTE 05960002 * INTO THE TABLE 05970002 BLDMSG DS 0H 05990002 ** THIS CODE DOES THE INITIAL WORK OF FINDING THE APPROPRIATE MESSAGE** 06000002 ** AND SETTING UP THE CORRECT POINTERS TO THE WORK BUFFERS WHEN A ** 06010002 ** MESSAGE HAS TO BE BUILT. REGISTER 14 WILL CONTAIN THE ADDRESS OF ** 06020002 ** THE ROUTINE CONTROL SHOULD BE GIVEN BACK TO. ** 06030002 LNG4A3A DS 0H 06040002 L INSERTRG,OUTBUF SET UP DSECT REGISTER 06050002 USING MSGINST,INSERTRG FOR MSG INSERTS TO BE BUILT 06060002 MVI WKINSTS,BLANK MOVE A BLANK TO START OF INSERTS 06072002 MVC WKINSTS+ONE(OUTBUFRL-ONE),WKINSTS BLANK OUT OUTBUF 06074002 LH WORKREG,SYMLNGTH PICK UP SYMBOL LENGTH 06080002 LA WORKREG,FOUR(WORKREG) CALCULATE INSERT LENGTH 06090002 STH WORKREG,IN11LENG STORE INTO INSERT HEADER 06100002 MVC IN11TXT(L8),SYMBOL MOVE SYMBOL INTO INSERT 06110002 ** THIS CODE HANDLES THE SECOND PART OF THE FIRST MESSAGE ** 06380002 CLC D10(L1,ATTREG),CHARZERO IS LENGTH TWO CHARACTERS 06430002 BNE LNG04A3D YES, GO HANDLE TWO CHARACTERS 06440002 MVC IN12TXT(L1),D11(ATTREG) MOVE IN LENGTH INTO INSERT 06450002 LA WORKREG,SIX PREPARE TO CALCULATE INSERT LEN 06460002 STH WORKREG,IN12LENG STORE LENTH OF INSERT INTO HEADER 06470002 B LNG04A3E GO GET THE SECOND LEVEL MESSAGE 06490002 LNG04A3D DS 0H 06500002 ** THIS CODE HANDLES THE CASE OF THE LENGTH FIELD OF THE MESSAGE ** 06510002 ** TAKING TWO BYTES. ** 06520002 MVC IN12TXT(L2),D10(ATTREG) MOVE LENGTH INTO INSERT 06530002 LA WORKREG,SEVEN CALCULATE INSERT LENGTH 06540002 STH WORKREG,IN12LENG STORE LENGTH OF INSERT INTO HEADER 06550002 LNG04A3E DS 0H 06580002 CLI D8(ATTREG),BLANK IS TYPE ONE CHARACTER 06910002 BE LNG04A3F YES, GO HANDLE ONE CHARACTER 06920002 ** THIS CODE HANDLES THE MOVE OF A TYPE FIELD OF TWO BYTES INTO THE ** 06930002 ** MESSAGE. ** 06940002 MVC IN21TXT(L2),D8(ATTREG) MOVE TEXT LENGTH INTO INSERT 06950002 LA WORKREG,SEVEN CALCULATE INSERT LENGTH 06960002 STH WORKREG,IN21LENG STORE LENGTH OF INSERT INTO HEADER 06970002 B LNG04A3G GO GET SECOND PART 06990002 LNG04A3F DS 0H 07000002 ** THIS CODE HANDLES THE MOVE OF A ONE BYTE TYPE FIELD INTO THE ** 07010002 ** MESSAGE. ** 07020002 MVC IN21TXT(L1),D9(ATTREG) MOVE TEXT LENGTH INTO INSERT 07030002 LA WORKREG,SIX CALCULATE INSERT LENGTH 07040002 STH WORKREG,IN21LENG STORE LENGTH OF INSERT INTO HEADER 07050002 LNG04A3G DS 0H 07070002 ** THIS CODE IS RESPONSIBLE FOR HANDLING THE SECOND PART OF THE ** 07080002 ** SECOND LEVEL MESSAGE. ** 07090002 TM LOWSW,HEXONE WAS VALUE SPECIFIED TOO LOW 07130002 BC ONES,LNG04A3M YES, GO PICK UP LOWEST VALUE ALLOWED 07140002 **THIS CODE HANDLES PUTTING THE HIGHEST VALUE ALLOWED INTO THE ** 07150002 **MESSAGE. ** 07160002 CLC D4(L2,ATTREG),CHARZERO IS LENGTH FIELD ONE BYTE 07170002 BE LNG04A3H YES, GO HANDLE ONE BYTE 07180002 **THIS CODE HANDLES THE CASE OF MOVING TWO BYTES ** 07190002 MVC IN22TXT(L2),D5(ATTREG) MOVE INSERT TEXT LENGTH 07200002 LA WORKREG,SEVEN CALCULATE INSERT LENGTH 07210002 STH WORKREG,IN22LENG STORE LENGTH OF INSERT INTO HEADER 07212002 B LNG04A3I GO PREPARE TO WRITE MESSAGE 07220002 LNG04A3H DS 0H 07230002 **THIS CODE HANDLES THE CASE OF MOVING A LENGTH FIELD OF ONE BYTE ** 07240002 MVC IN22TXT(L1),D6(ATTREG) MOVE INSERT TEXT LENGTH 07250002 LA WORKREG,SIX CALCULATE INSERT LENGTH 07252002 STH WORKREG,IN22LENG STORE LENGTH OF INSERT INTO HEADER 07254002 B LNG04A3I GO PREPARE TO WRITE MESSAGE 07260002 LNG04A3M DS 0H 07270002 ** THIS CODE HANDLES PUTTING THE LOWEST VALUE ALLOWED INTO THE ** 07280002 ** MESSAGE. ** 07290002 NI LOWSW,HEXFE TURN VALUE SWITCH OFF 07300002 CLC D1(L2,ATTREG),CHARZERO IS LENGTH FIELD ONE BYTE 07310002 BE LNG04A3N YES, GO HANDLE ONE BYTE 07320002 ** THIS CODE HANDLES THE CASE OF MOVING TWO BYTES ** 07330002 MVC IN22TXT(L2),D2(ATTREG) MOVE INSERT TEXT LENGTH 07340002 LA WORKREG,SEVEN CALCULATE INSERT LENGTH 07350002 STH WORKREG,IN22LENG STORE LENGTH OF INSERT INTO HEADER 07352002 B LNG04A3I GO PREPARE TO WRITE MESSAGE 07360002 LNG04A3N DS 0H 07370002 ** THIS CODE HANDLES THE CASE OF MOVING A LENGTH FIELD OF ONE BYTE ** 07380002 MVC IN22TXT(L1),D3(ATTREG) MOVE INSERT TEXT LENGTH 07390002 LA WORKREG,SIX CALCULATE INSERT LENGTH 07392002 STH WORKREG,IN22LENG STORE LENGTH OF INSERT INTO HEADER 07394002 LNG04A3I DS 0H 07400002 ** THIS CODE PUTS THE LENGTH FIELD INTO THE FIRST TWO BYTES OF THE ** 07410002 ** SECOND LEVEL MESSAGE AND PREPARES THE PARAMETER LIST TO IKJEGIO ** 07420002 ** AND THEN GOES TO THAT MODULE TO HAVE THE MESSAGE PRINTED. ** 07430002 XR DISPLREG,DISPLREG ZERO OUT DISPLREG REGISTER 07440002 XC TSTIOPRM,TSTIOPRM CLEAR I/O PARM LIST 07450002 IKJEGSIO MSG,FIRST=M0031,INST11=(ADDR,IN11), *07460002 INST12=(ADDR,IN12),INST21=(ADDR,IN21), *07470002 INST22=(ADDR,IN22),SECOND=(MSGREG),ID=EQU13, *07482002 MF=(E,TSTIOPRM) 07484002 DROP INSERTRG 07486002 B MSG06C1 BRANCH TO FINISH UP 07488002 LNG04F3 DS 0H 07500002 ** THIS CODE IS RESPONSIBLE FOR MOVING THE BINARY REPRESENTATION OF ** 07510002 ** THE ATTRIBUTE INTO THE SYMBOL TABLE. ** 07520002 L R7,CONAREA GET ADDRESS OF CONVERTED ATTRIBUTE 07530002 XR R5,R5 CLEAR A REGISTER 07540002 IC R5,D0(R7) GET LENGTH OF CONVERTED AREA 07550002 LA R7,D1(R7) UPDATE PT TO BEGINNING OF OUTPUT 07560002 TM MULTSW,HEXFOUR WAS CONVERSION FOR MULTIPLICITY 07570002 * ATTRIBUTE 07580002 BC ONES,LNG04F4 YES, GO MOVE MULTIPLICITY INTO TABLE 07590002 LA R0,ONE 07600002 CR R5,R0 NO, IS THERE ONE CONVERTED BYTE 07610002 BE LNG04G3 YES, GO MOVE ONE BYTE INTO TABLE 07620002 MVC ATTRLNTH(L2),D0(R7) NO, MOVE LENGTH ATTRIBUTE INTO TABLE 07630002 B MULT05A1 GO GET MULTIPLICITY ATTRIBUTE 07640002 LNG04G3 DS 0H 07650002 ** MOVES ONE BYTE INTO LENGTH ATTRIBUTE FIELD. ENTERED FROM LNG04F3 ** 07660002 MVC ATTRLNTH+D1(L1),D0(R7) MOVE LENGTH ATTRIBUTE INTO TABLE 07670002 B MULT05A1 GO GET MULTIPLICITY ATTRIBUTE 07680002 LNG04F4 DS 0H 07690002 ** THIS CODE MOVES THE MULTIPLICITY ATTRIBUTE INTO THE INCORE SYMBOL ** 07700002 ** TABLE. ENTERED FROM LNG04F3. ** 07710002 LA R0,ONE 07720002 CR R5,R0 IS THERE ONE CONVERTED BYTE 07730002 BE LNG04F4A YES, GO MOVE MULTIPLICITY ATTRIBUTE 07740002 MVC ATTRMULT+D1(L2),D0(R7) MOVE TWO BYTES INTO SYMBOL TABLE 07750002 B EXIT05H5 GO PROCESS SYMBOL 07760002 LNG04F4A DS 0H 07770002 ** MOVES ONE BYTE INTO MULTIPLICITY ATTRIBUTE FIELD OF SYMBOL TABLE ** 07780002 MVC ATTRMULT+D2(L1),D0(R7) MOVE MULTIPLICITY INTO TABLE 07790002 B EXIT05H5 GO PROCESS SYMBOL 07800002 MULT05A1 DS 0H 07810002 ** THE FOLLOWING CODE TESTS TO SEE IF THE MULTIPLICITY FACTOR WERE ** 07820002 ** SPECIFIED AND IF NOT PUTS THE DEFAULT OF ONE INTO THE TABLE. ** 07830002 OI MULTSW,HEXFOUR SET SWITCH TO INDICATE 07840002 * PROCESSING OF MULTIPLICITY 07850002 XR R5,R5 CLEAR A REGISTER 07860002 LH R5,D56(PDLBASE) OBTAIN MULTIPLICITY INDICATOR 07870002 * FROM PDL 07880002 LTR R5,R5 WAS MULTIPLICITY SPECIFIED 07890002 BNZ MULT05B2 YES, GO PREPARE TO GO TO IKJEGCVT 07900002 ** THIS CODE IS EXECUTED WHEN THE MULTIPLICITY ATTRIBUTE WAS NOT ** 07910002 ** SPECIFIED. IT CHECKS TO SEE IF THIS ENTRY EXISTED BEFORE. IF SO ** 07920002 ** THE DEFAULT WILL BE THE PREVIOUS VALUE, IF NOT THE DEFAULT WILL BE** 07930002 ** ONE. ** 07940002 TM DUPLSW,HEXONE DID ENTRY EXIST BEFORE 07950002 BC ONES,EXIT05H5 YES, SET UP TO RETURN 07960002 MVC ATTRMULT+D2(L1),BINRYONE NO, PUT A ONE IN THE 07970002 * MULTIPLICITY FIELD OF THE IN CORE 07980002 * SYMBOL TABLE 07990002 B EXIT05H5 GO SET UP TO RETURN 08000002 MULT05B2 DS 0H 08010002 ** SETS REGISTER 1 UP TO GO TO IKJEGCVT. ** 08020002 LA PARMREG,D68(PDLBASE) PUT ADDR MULTIPLICITY PDE INTO 08030002 * REGISTER 1 08040002 MVI D75(PDLBASE),HEX14 SET TYPE FIELD OF PDE 08050002 B LNG04D2 GO SET UP FOR CONVERSION 08060002 EXIT05E2 DS 0H 08070002 * THE FOLLOWING CODE HANDLES THE SERVICE ROUTINE RETURN CODES * 08080002 L R15,REGSAVE GET RETURN CODE FROM SAVEAREA 08090002 EXIT05F2 DS 0H 08100002 B EXIT05G2(R15) INDEX THROUGH TABLE BY CONTENTS OF 08110002 * REGISTER 15 08120002 EXIT05G2 DS 0H 08130002 B EXIT05H5 0 - FROM SERVICE ROUTINE-RETURN 0 08140002 B EXIT05H5 4 - FROM SERVICE ROUTINE-RETURN 0 08150002 B EXIT05H5 8 - FROM SERVICE ROUTINE-RETURN 0 08160002 B EXIT05H5 12 - FROM SERVICE ROUTINE-RETURN 0 08170002 B EXIT05J5 16 - FROM SERVICE ROUTINE-RETURN 16 08180002 B EXIT05J5 20 - FROM SERVICE ROUTINE-RETURN 20 08190002 B EXIT05J5 24 - FROM SERVICE ROUTINE-RETURN 24 08192002 ATTN05H4 DS 0H 08200002 LA RETCODE,RET16 SET RETURN CODE TO 16 TO INDICATE 08210002 * ATTENTION ENCOUNTERED 08220002 B EXIT05J5 GO PREPARE TO LEAVE 08230002 EXIT05J4 DS 0H 08240002 LA R15,RET20 SET RETURN CODE TO 20 TO INDICATE 08250002 * STAE EXIT ROUTINE WAS ENTERED 08260002 B EXIT05J5 GO PREPARE TO LEAVE 08270002 EXIT05G5 DS 0H 08280002 OI TSTFLGS4,TSTFLUSH INDICATE IKJEGMNL SHOULD FLUSH STACK 08290002 EXIT05H5 DS 0H 08300002 ** THIS SETS THE RETURN CODE TO IKJEGMNL TO ZERO. ** 08310002 LA RETCODE,RET0 SET RETURN CODE TO ZERO 08320002 EXIT05J5 DS 0H 08330002 LR R2,R15 TRANSFER RTNCODE 08330402 ESTAE 0,OV REMOVE ESTAE 08332002 LR R15,R2 TRANSFER RTNCODE 08334002 L R13,D4(R13) RESTORE SAVEAREA ADDRESS 08340002 NI TSTFLGS4,HEXFF-TSTRERTN TURN OFF RETRY SW 08342002 RETURN (14,12),RC=(15) RELOAD REGISTERS AND RETURN 08350002 MSG06A1 DS 0H 08360002 ** THIS IS ENTERED WHEN A MESSAGE SHOULD BE PRINTED AND AFTERWARDS ** 08370002 ** IKJEGEQU SHOULD TERMINATE. ** 08380002 OI WRAPUP,HEXEIGHT INDICATE PROCESSING SHOULD END 08390002 XR DISPLREG,DISPLREG INDICATE MAINLINE CALLING MSGRTN 08400002 MSG06B1 DS 0H 08410002 MSG06C1 DS 0H 08570002 B MSGTAB(DISPLREG) BRANCH THROUGH THE FOLLOWING TABLE 08640002 * BY CONTENTS OF REGISTER 7 08650002 MSGTAB DS 0H 08660002 B MSG06E2 GO BACK TO MAINLINE CODE 08670002 B VDCK08E3 GO BACK TO VALIDITY CHECK ROUTINE 08680002 B DROP09D1(RETCODE) GO BACK TO DROP CODE 08690002 MSG06E2 DS 0H 08700002 ** USED TO DETERMINE PROCESSING AFTER RETURNING FROM IKJEGIO ** 08710002 LTR R15,R15 RETURN CODE FROM IO A ZERO 08720002 BNZ EXIT05F2 NO, GO HANDLE RETURN CODE 08730002 ** THE FOLLOWING CODE IS EXECUTED WHEN DISPLREG CONTAINS A ZERO ** 08740002 ** INDICATING THE MESSAGE WAS PUT OUT FROM EQUATE'S MAINLINE INSTEAD ** 08750002 ** OF THE VALIDITY CHECK ROUTINE. ** 08760002 TM WRAPUP,HEXEIGHT YES, SHOULD EQUATE TERMINATE 08770002 BZ MULT05A1 NO, GO GET MULTIPLICITY ATTR 08780002 MSG06E3 DS 0H 08790002 B EXIT05H5 YES, GO SET RETURN CODE AND RETURN 08800002 DROP09A1 DS 0H 08810002 ** WHEN THIS ROUTINE IS ENTERED WORKREG2 POINTS TO THE SYMBOL TO BE ** 08820002 ** DELETED IF ONE WERE SPECIFIED. WORKREG CONTAINS THE CONTENTS OF ** 08830002 ** SYMTABLE AND LASTENTR IS A POINTER TO SYMTABLE. THE FOLLOWING ** 08840002 ** CODE IS RESPONSIBLE FOR HANDLING THE DROP VERB. IT REMOVES AN ** 08850002 ** ENTRY OR ALL ENTRIES FROM THE IN CORE SYMBOL TABLE. ** 08860002 LA PDLBASE,D8(PDLBASE) BASE POINTS TO FIRST SYMBOL PDE 08870002 LTR WORKREG,WORKREG DOES THE INCORE SYMBOL TABLE EXIST 08880002 BNZ DROP09A2 YES, GO HANDLE REQUEST 08890002 DROP09B1 DS 0H 08900002 XC TSTIOPRM,TSTIOPRM ZERO OUT I/O PARM LIST 08910002 IKJEGSIO MSG,FIRST=M0033,ID=EQU13,MF=(E,TSTIOPRM) 08912002 B MSG06A1 GO TO MESSAGE ROUTINE 08920002 DROP09A2 DS 0H 08930002 TM TSTFLGS3,NOPARMS WAS A SYMBOL SPECIFIED 08940002 BNO DROP09A3 YES, GO CHECK FOR ENTRY IN TABLE 08950002 ** THE FOLLOWING CODE SETS UP TO DELETE THE IN CORE SYMBOL TABLE ** 08960002 OI ALLSW,HEXFOUR INDICATE ALL ENTRIES TO BE DELETED 08970002 DROP09C2 DS 0H 08980002 L LASTENTR,D0(WORKREG) SAVE ADDRESS OF NEXT ENTRY 08990002 LTR LASTENTR,LASTENTR IS THERE ANOTHER ENTRY 09000002 BNZ DROP09A5 YES, GO FIGURE SIZE OF ENTRY 09010002 ST LASTENTR,SYMTABLE INDICATE IN CORE SYMBLE TABLE EMPTY 09020002 NI ALLSW,HEXFB NO, INDICATE THIS IS LAST ENTRY TO 09030002 * BE DELETED 09040002 B DROP09A5 GO FIGURE SIZE OF ENTRY 09050002 ** THIS SECTION OF CODE SCANS THE IN CORE SYMBOL TABLE FOR THE ENTRY ** 09060002 ** REQUESTED TO BE DELETED. ** 09070002 DROP09A3 DS 0H 09080002 CLC D4(L2,PDLBASE),D14(WORKREG) ARE FIELD LENGTHS SAME 09090002 BE DRP9A31 YES, GO CHECK SYMBOLS 09100002 DRP9A34 DS 0H 09110002 LR LASTENTR,WORKREG NO, SAVE POINTER TO NEXT TO LAST 09120002 * ENTRY BEING SCANNED 09130002 L WORKREG,D0(WORKREG) GET ADDRESS OF NEXT ENTRY 09140002 LTR WORKREG,WORKREG WAS THERE ANOTHER ENTRY 09150002 BNZ DROP09A3 YES, GO CONTINUE CHECKING 09160002 L WORKREG,D0(PDLBASE) PICK UP ADDRESS TO PDE 09162002 L INSERTRG,OUTBUF SET UP DSECT REGISTER FOR INSERTS 09164002 USING MSGINST,INSERTRG 09166002 MVC IN11TXT(L8),D0(WORKREG) MOVE IN SYMBOL 09168002 LH R6,D4(PDLBASE) PICK UP THE LENGTH 09168402 LA R6,FIVE(R6) CALCULATE INSERT LENGTH 09168802 STH R6,IN11LENG STORE INTO INSERT HEADER 09169202 XC TSTIOPRM,TSTIOPRM ZERO OUT I/O PARM FIELDS 09169602 IKJEGSIO MSG,FIRST=M0034,INST11=(ADDR,IN11), CALL I/O *09169702 ID=EQU13,MF=(E,TSTIOPRM) FOR ERROR MSG 09169802 DROP INSERTRG 09169902 LA DISPLREG,D8 INDICATE DROP CODE CALLING MSG RTN 09430002 B MSG06C1 GO TO THE MESSAGE RTN CODE ROUTINE 09440002 DRP09B3A MVC D0(L0,OUTBUFRG),D0(WORKREG) MOVE SYMBOL INTO BUFFER 09450002 DROP09D1 DS 0H 09470002 ** THE FOLLOWING BRANCH TABLE IS USED TO DETERMINE WHERE CONTROL ** 09480002 ** SHOULD BE GIVEN AFTER RETURNING FROM IKJEGIO. ** 09490002 B DROP09D5 GO SEE IF THERE IS ANOTHER ENTRY 09500002 * TO DELETE 09510002 B DROP09D5 SAME AS ABOVE 09520002 B EXIT05F2 GO HANDLE SERVICE RTN RETURN CODE 09530002 B EXIT05F2 GO HANDLE SERVICE RTN RETURN CODE 09540002 B EXIT05F2 GO HANDLE SERVICE RTN RETURN CODE 09550002 DRP9A32 CLC D0(L0,WORKREG2),D16(WORKREG) ARE SYMBOLS THE SAME 09560002 DRP9A31 DS 0H 09570002 LH R6,D4(PDLBASE) PUT LENGTH OF SYMBOL INTO REGISTER 09580002 BCTR R6,ZERO TAKE ONE FROM LENGTH OF SYMBOL 09590002 EX R6,DRP9A32 GO SEE IF SYMBOLS ARE SAME 09600002 BNE DRP9A34 NO, CONTINUE SCANNING 09610002 DROP09A4 DS 0H 09620002 ** THIS CODE PLACES THE POINTER TO THE ENTRY FOLLOWING THE ENTRY TO ** 09630002 ** BE DELETED INTO THE ENTRY IN FRONT OF THE ENTRY TO BE DELETED. ** 09640002 MVC D0(L4,LASTENTR),D0(WORKREG) MOVE FORWARD POINTER INTO 09650002 * PREVIOUS ENTRY 09660002 DROP09A5 DS 0H 09670002 ** THIS CODE CALCULATES THE LENGTH OF THE ENTRY TO BE DELETED ** 09680002 XR R1,R1 CLEAR A REGISTER 09690002 LH R1,D14(WORKREG) GET LENGTH OF SYMBOL AND ADD 16 TO 09700002 LA R1,D16(R1) IT FOR ENTRY SIZE 09710002 LR R0,R1 PUT LENGTH INTO REGISTER 0 FOR 09720002 * FREEMAIN 09730002 LR R1,WORKREG PUT ADDRESS OF AREA TO BE DELETED 09740002 * INTO REGISTER 1 09750002 FREEMAIN RC,SP=1,LV=(0),A=(1) ISSUE FREEMAIN 09780002 LTR R15,R15 TEST THE RETURN CODE 09782002 BZ OKFREEMN OK IF ZERO CONTINUE 09784002 LR R6,R15 TRANSFER RETURN CODE FOR I/O 09784402 XC TSTIOPRM,TSTIOPRM CLEAR PARM LIST FOR I/O 09786002 IKJEGSIO SVCERR,SVC=120,RC=(R6),ID=EQU13,MF=(E,TSTIOPRM) 09788002 CH R15,H16 TEST FOR SERIOUS ERROR 09788402 BL EXIT05H5 NOT SERIOUS CONTINUE 09788802 B EXIT05J5 IF SERIOUS GET OUT WITH RTN CODE 09789202 OKFREEMN DS 0H 09789602 DROP09C5 DS 0H 09790002 TM ALLSW,HEXFOUR ARE ALL ENTRIES TO BE DELETED 09800002 BZ DROP9C5A NO, GO TEST FOR NEXT ENTRY 09810002 LR WORKREG,LASTENTR YES, GET ADDRESS OF NEXT ENTRY 09820002 B DROP09C2 GO SET UP TO DELETE NEXT ENTRY 09830002 DROP9C5A DS 0H 09840002 TM TSTFLGS3,NOPARMS WERE SYMBOLS SPECIFIED 09850002 BO EXIT05H5 NO, RETURN TO IKJEGMNL 09860002 DROP09D5 DS 0H 09870002 ** THIS CODE TESTS THE WORD FOLLOWING THE SYMBOL PDE FOR NON ZERO ** 09880002 ** WHICH INDICATES THERE IS A LIST OF SYMBOLS TO BE PROCESSED. ** 09890002 CLC D8(L0,PDLBASE),ENDCHAIN IS THERE ANOTHER SYMBOL 09900002 BE EXIT05H5 NO, GO RETURN TO IKJEGMNL 09910002 DROP09D4 DS 0H 09920002 L WORKREG,SYMTABLE GET ADDRESS OF SYMBOL TABLE 09930002 LTR WORKREG,WORKREG DOES THE INCORE SYMBOL TABLE EXIST 09940002 BZ DROP09B1 NO, GO WRITE MESSAGE 09950002 L PDLBASE,D8(PDLBASE) YES, POINT TO NEXT SYMBOL PDE 09960002 LA LASTENTR,SYMTABLE GET ADDRESS OF LAST ENTRY 09970002 L WORKREG2,D0(PDLBASE) GET ADDRESS OF SYMBOL 09980002 B DROP09A3 GO FIND SYMBOL IN SYMBOL TABLE 09990002 IKJEGVDK DS 0H 10000002 ** THIS CODE IS RESPONSIBLE FOR ANALYSING THE PARAMETERS FOR EQUATE ** 10010002 ** AFTER PARSE HAS CHECKED ONE FOR SYNTAX ERRORS. ** 10020002 SAVE (14,12) SAVE PARSE'S REGISTERS 10030002 L R15,D4(R1) OBTAIN ADDR OF SAVEAREA 10040002 LM R2,R12,D28(R15) RESTORE REGISTERS 10050002 L R15,REGSAVE3 GET ADDR OF VALIDITY CHECK RTN'S 10060002 * SAVEAREA 10070002 ST R15,D8(R13) STORE ADDRESS OF NEW SAVEAREA 10080002 ST R13,D4(R15) STORE CALLERS SAVEAREA ADDRESS 10090002 * IN VALIDITY RTN'S SAVEAREA 10100002 LR R13,R15 R13 POINTS TO VALIDITY CHECK 10110002 * RTN'S SAVEAREA 10120002 OI TSTFLGS4,TSTVALCK TURN ON VALIDITY CHECK BIT 10122002 L R7,OUTBUF PICK UP ADDRESS OF OUTBUF 10124002 SR R8,R8 ZERO REGISTER 10126002 ST R8,D0(R7) STORE DEFAULT (NO MESSAGE INDICATOR) 10128002 L PDEPTR,D0(PARMREG) PDEPTR POINTS TO THE PDE PASSED 10130002 * TO THE VALIDITY RTN FROM 10140002 * IKJPARS 10150002 TM CMMNDSW,HEXTWO IS THIS THE ADDRESS EXIT 10200002 BC ONES,VDCK08A1 NO, GO TO THE ATTRIBUTE EXIT 10210002 ** THIS CODE ASSURES THAT THE ADDRESS WAS NOT SPECIFIED AS A REGISTER** 10220002 ** ADDRESS UNLESS THE REGISTER WAS USED FOR INDIRECT ADDRESSING. ** 10230002 ** THE CHECK IS FIRST MADE ON THE INDIRECT COUNT FIELD OF THE PDE ** 10240002 ** AND IF THIS IS NON ZERO INDIRECT ADDRESSING WAS USED. THE ADDRESS** 10250002 ** IS SPECIFIED CORRECTLY AND PROCESSING IS CONTINUED AT VDCK07G2. ** 10260002 ** IF THE INDIRECT COUNT FIELD IS ZERO A CHECK HAS TO BE MADE IN ** 10270002 ** FLAGS 4 OF THE PDE. FLAGS 4 INDICATES THE TYPE OF ADDRESS. IF ** 10280002 ** THE TYPE IS GENERAL REGISTER, DOUBLE PRECISION FLOATING POINT ** 10290002 ** REGISTER OR SINGLE PRECISION FLOATING POINT REGISTER THE ADDRESS ** 10300002 ** IS INCORRECTLY SPECIFIED AND THE VALIDITY CHECK ROUTINE WILL ** 10310002 ** RETURN TO PARSE WITH A RETURN CODE OF EIGHT. ** 10320002 USING IKJPARMA,PDEPTR ESTABLISH ADDRESSABILITY TO ADDR PDE 10330002 CLC PDEINDCT(L2),HEXZER0 WAS INDIRECT ADDRESSING USED 10340002 BNE VDCK07G2 YES, GO PROCESS 10350002 TM PDEFLG4,REGSMASK NO, IS TYPE OF ADDR REGISTER 10360002 BNZ VDCK07F3 YES, GO WRITE MESSAGE 10370002 VDCK07G2 DS 0H 10380002 ** THIS CODE SETS UP THE REGISTERS TO GO TO IKJEGCVT (CONVERT) TO ** 10390002 ** CONVERT THE ADDRESS TO BINARY. ** 10400002 OI CMMNDSW,HEXTWO TURN SWITCH ON TO INDICATE THE 10410002 * ADDRESS EXIT HAS BEEN TAKEN 10420002 XR R0,R0 CLEAR REG 0 TO INDICATE BINARY 10430002 * CONVERSION NEEDED 10440002 LNR PARMREG,PDEPTR REG 1 SHOULD BE NEGATIVE TO 10450002 * INDICATE ADDRESS CONVERSION AND 10460002 * SHOULD POINT TO THE PDE 10470002 L R15,TSTCONVT OBTAIN ADDRESS OF IKJEGCVT FROM 10480002 * TCOMTAB 10490002 BALR RETURN,R15 GO TO IKJEGCVT TO CONVERT THE 10500002 * ADDRESS TO BINARY 10510002 LPR PARMREG,PARMREG RESTORE REGISTER 1 TO POSITIVE 10520002 B VDCK07J2(RETCODE) TAKE ONE OF THE FOLLOWING BRANCHES 10530002 * DEPENDENT ON THE CONTENTS OF REG 15 10540002 VDCK07J2 DS 0H 10550002 ** USED TO DETERMINE WHAT TO DO UPON RETURN FROM IKJEGCVT ** 10560002 B VDCK08C1 GO HANDLE 0 RETURN FROM IKJEGCVT 10570002 B VDCK07K3 GO HANDLE 4 RETURN FROM IKJEGCVT 10580002 B VDCK08C2 GO HANDLE 8 RETURN FROM IKJEGSYM 10590002 B VDCK08C2 GO HANDLE 12 RETURN FROM IKJEGSYM 10600002 B VDCK08D2 16 - ATTENTION INTERRUPT-RETURN 10610002 B VDCK08D2 20 - CONVERT OR SYM BLEW-RETURN 10620002 VDCK07K3 DS 0H 10630002 NI CMMNDSW,HEXFD INDICATE ADDRESS NOT PROCESSED 10640002 B VDCK08B3 GO INDICATE PARSE SHOULD PROMPT 10650002 * WITH REENTER 10660002 VDCK7F3 DS 0H 10670002 VDCK07F3 DS 0H 10720002 XC TSTIOPRM,TSTIOPRM ZERO OUT I/O PARM FIELDS 11000002 IKJEGSIO MSG,FIRST=M0072,INST11=(APDE,(PDEPTR)), CALL I/O *11010002 SECOND=M0274,ID=EQU13,MF=(E,TSTIOPRM) FOR ERROR MSG 11020002 VDCK07F5 DS 0H 11040002 ** CALCULATES PROPER DISPLACEMENT THAT BRINGS CONTROL BACK TO THE ** 11050002 ** VALIDITY CHECK ROUTINE AFTER GOING TO THE MESSAGE ROUTINE. ** 11060002 LA DISPLREG,D4 INDICATE VALIDITY CHECK RTN GOING TO 11070002 * MESSAGE ROUTINE 11080002 B MSG06C1 GO TO THE MESSAGE ROUTINE 11090002 VDCK08E3 DS 0H 11100002 LTR R15,R15 RETURN CODE FROM IO A ZERO 11110002 BZ VDCK08B4 YES, RETURN TO IKJPARS WITH AN 8 11120002 B VDCK08D2 NO, RETURN TO IKJPARS WITH A 12 11130002 VDCK08A1 DS 0H 11140002 ** THIS CODE IS RESPONSIBLE FOR CHECKING THE INTERGER SUPPLIED FOR ** 11150002 ** LENGTH OR MULTIPLICITY BEING SPECIFIED LESS THAN ONE OR GREATER ** 11160002 ** THAN 256. ** 11170002 XR WORKREG,WORKREG CLEAR A REGISTER 11180002 L STRNGPTR,D0(PDEPTR) GET ADDR OF CHARACTER STRING 11190002 LH WORKREG,D4(PDEPTR) OBTAIN LENGTH OF ATTRIBUTE 11200002 SLL WORKREG,TWO MULTIPLY BY FOUR 11210002 VDCKTAB3 DS 0H 11220002 B VDCKTAB3(WORKREG) GO PROCESS ACCORDING TO THE NUMBER 11230002 * OF BYTES IN THE ATTRIBUTE 11240002 B VDCKONE GO HANDLE ONE BYTE 11250002 B VDCKTWO GO HANDLE TWO BYTES 11260002 B VDCKTHRE GO HANDLE THREE BYTES 11270002 ** VDCKONE,VDCKTWO, AND VDCKTHREE ALL HAVE THE RESPONSIBILITY OF ** 11280002 ** CHECKING TO MAKE SURE THE INTERGER SUPPLIED IS NOT ZERO OR GREATER** 11290002 ** THAN 256. ** 11300002 VDCKONE DS 0H 11310002 CLC D0(L1,STRNGPTR),CHARZERO IS INTERGER ZERO 11320002 BE VDCK08A2 YES, GO PREPARE TO WRITE A MESSAGE 11330002 B VDCK08C1 NO, GO SET UP TO RETURN 11340002 VDCK08A2 DS 0H 11350002 XC TSTIOPRM,TSTIOPRM CLEAR I/O PARM FIELDS 11360002 IKJEGSIO MSG,FIRST=M0032,SECOND=M0278,ID=EQU13, CALL I/O *11370002 MF=(E,TSTIOPRM) FOR ERROR MESSAGE 11380002 B VDCK07F5 GO PREPARE TO RETURN 11460002 VDCKTWO DS 0H 11470002 CLC D0(L2,STRNGPTR),CHARZERO IS INTERGER ZERO 11480002 BE VDCK08A2 YES, GO PREPARE TO WRITE A MESSAGE 11490002 B VDCK08C1 NO, GO SET UP TO RETURN 11500002 VDCKTHRE DS 0H 11510002 CLC D0(L3,STRNGPTR),CHARZERO IS INTERGER ZERO 11520002 BE VDCK08A2 YES, GO PREPARE TO WRITE A MESSAGE 11530002 CLC D0(L3,STRNGPTR),MAXLNGTH IS INTERGER GREATER THAN 256 11540002 BH VDCK08A2 YES, GO PREPARE TO WRITE A MESSAGE 11550002 VDCK08C1 DS 0H 11560002 ** THIS SETS THE RETURN CODE BACK TO IKJPARS TO A ZERO ** 11570002 LA RETCODE,RET0 SET RETURN CODE TO ZERO 11580002 VDCK08D1 DS 0H 11590002 ** THIS CODE IS RESPONSIBLE FOR RESTORING IKJPARS'S REGISTERS AND ** 11600002 ** RETURNING TO IKJPARS WITH A CONDITION CODE IN REGISTER 15 TO ** 11610002 ** INDICATE TO PARSE WHAT EQUATE WANTS PARSE TO DO NEXT. ** 11620002 L R13,D4(R13) RESTORE SAVEAREA ADDRESS 11640002 NI TSTFLGS4,HEXFF-TSTVALCK TURN OFF VALIDITY CHECK BIT 11642002 L R5,OUTBUF PICK UP POINTER TO OUTBUF 11644002 LH R6,D0(R5) PICK MSG LENGTH FIELD 11646002 LTR R6,R6 TEST FOR PRESENTS OF MSG 11648002 BZ NO2NDMSG IF ZERO THEN THER ISN'T A MESSAGE 11648402 L R1,D24(R13) PICK UP POINTER TO PARSE PARM LIST 11648802 ST R5,D8(R1) STORE ADDRESS OF MESSAGE IN P. L. 11649202 NO2NDMSG DS 0H 11649602 RETURN (14,12),RC=(15) RELOAD REGISTERS AND RETURN 11650002 VDCK08C2 DS 0H 11660002 VDCK08D2 DS 0H 11690002 ST R15,REGSAVE SAVE RETURN CODE FOR LATER USE 11700002 LA RETCODE,RET12 SET RETURN CODE TO 12 11710002 B VDCK08D1 GO PREPARE TO RETURN TO IKJPARS 11720002 VDCK08B3 DS 0H 11730002 VDCK08B4 DS 0H 11760002 LA RETCODE,RET8 SET RETURN CODE TO 8 11770002 B VDCK08D1 GO PREPARE TO RETURN TO IKJPARS 11780002 DROP PDEPTR DROP ADDRESSABILITY TO PDE 11790002 ********************************************************************** 11800002 * STAE RETRY ROUTINE * 11810002 ********************************************************************** 11820002 ESTAERTN DS 0H 11830002 L WORKREG,CVTPTR GET CVT ADDRESS 11840002 USING CVT,WORKREG ESTABLISH ADDRESSABILITY TO CVT 11850002 L WORKREG,CVTTCBP GET ADDRESS OF TCB ADDRESS 11860002 L WORKREG,D4(WORKREG) GET ADDRESS OF CURRENT TCB 11870002 DROP WORKREG DROP ADDRESSABILITY TO CVT 11880002 USING TCB,WORKREG ESTABLISH ADDRESSABLITY TO TCB 11890002 L R9,TCBTRN PICK UP POINTER TO TCOMTAB FROM 11900002 OI TSTFLGS4,TSTRERTN TURN ON RETRY SW 11902002 * TCBTRN FIELD OF TEST'S TCB 11910002 L R13,REGSAVE2 GET ADDRESS OF REGISTERS 11920002 L BASEREG,D64(R13) RESET ADDRESSABILITY 11930002 B EXIT05J4 GO SET RETURN CODE FOR IKJEGMNL 11980002 EJECT 11990002 IKJEGSPL IKJEGSPL RTRY=ESTAERTN,ABNTB=STATBL,MODNM=IKJEGEQU,TNM=EQUATE/*11990402 DROP 11990802 ZZZZZZZZ DC 52C'Z' TO BE USED FOR MAINTENANCE 11992002 H16 DC H'16' USED TO TEST RETURN CODES 11994002 ATTRTAB DS 0H 12000002 ** THIS TABLE CONTAINS THE PROPER DATA TYPE REPRESENTATION FOR THE ** 12010002 ** VARIOUS TYPE ATTRIBUTES ALONG WITH THE MIN LENGTH FOLLOWED BY THE ** 12020002 ** MAX LENGTH THAT CAN BE SPECIFIED FOR EACH TYPE. THESE LENGTHS ARE** 12030002 ** FOLLOWED BY THE DEFAULT LENGTH. ** 12040002 CENTRY DC X'00' TYPE ATTRIBUTE IS CHARACTER 12050002 DC C'001' MIN LENGTH 12060002 DC C'256' MAX LENGTH 12070002 DC X'01' DEFAULT LENGTH IN BINARY 12080002 DC C' C' TYPE IN PRINTABLE FORM 12090002 DC C'01' LENGTH IN PRINTABLE FORM 12100002 XENTRY DC X'04' TYPE ATTRIBUTE IS HEX 12110002 DC C'001' MIN LENGTH 12120002 DC C'256' MAX LENGTH 12130002 DC X'04' DEFAULT LENGTH IN BINARY 12140002 DC C' X' TYPE IN PRINTABLE FORM 12150002 DC C'04' LENGTH IN PRINTABLE FORM 12160002 BENTRY DC X'08' TYPE ATTRIBUTE IS BINARY 12170002 DC C'001' MIN LENGTH 12180002 DC C'256' MAX LENGTH 12190002 DC X'01' DEFAULT LENGTH IN BINARY 12200002 DC C' B' TYPE IN PRINTABLE FORM 12210002 DC C'01' LENGTH DEFAULT IN PRINTABLE FORM 12220002 IENTRY DC X'0C' TYPE ATTRIBUTE IS INSTRUCTION 12230002 DC C'001' MIN LENGTH 12240002 DC C'256' MAX LENGTH 12250002 DC X'01' DEFAULT LENGTH 12260002 DC C' I' TYPE IN PRINTABLE FORM 12270002 DC C'01' DEFAULT LENGTH IN PRINTABLE FORM 12280002 FENTRY DC X'10' TYPE ATTRIBUTE IS FIXED PT, FULLWORD 12290002 DC C'001' MIN LENGTH 12300002 DC C'008' MAX LENGTH 12310002 DC X'04' DEFAULT LENGTH 12320002 DC C' F' TYPE IN PRINTABLE FORM 12330002 DC C'04' DEFAULT IN PRINTABLE FORM 12340002 HENTRY DC X'14' TYPE ATTRIBUTE IS FIXED PT, HALFWORD 12350002 DC C'001' MIN LENGTH 12360002 DC C'008' MAX LENGTH 12370002 DC X'02' DEFAULT LENGTH IN BINARY 12380002 DC C' H' TYPE IN PRINTABLE FORM 12390002 DC C'02' DEFAULT LENGTH IN PRINTABLE FORM 12400002 EENTRY DC X'18' TYPE ATTRIBUTE IS FLT PT. FULLWORD 12410002 DC C'001' MIN LENGTH 12420002 DC C'008' MAX LENGTH 12430002 DC X'04' DEFAULT LENGTH IN BINARY 12440002 DC C' E' TYPE IN PRINTABLE FORM 12450002 DC C'04' DEFAULT LENGTH IN PRINTABLE FORM 12460002 DENTRY DC X'1C' TYPE ATTRIBUTE IS FLT PT. DBLWORD 12470002 DC C'001' MIN LENGTH 12480002 DC C'008' MAX LENGTH 12490002 DC X'08' DEFAULT LENGTH 12500002 DC C' D' TYPE IN PRINTABLE FORM 12510002 DC C'08' DEFAULT LENGTH IN PRINTABLE FORM 12520002 AQENTRY DC X'20' TYPE ATTRIBUTE IS A AND Q ADDR CONST 12530002 DC C'001' MIN LENGTH 12540002 DC C'004' MAX LENGTH 12550002 DC X'04' DEFAULT LENGTH IN BINARY 12560002 DC C' A' TYPE IN PRINTABLE FORM 12570002 DC C'04' DEFAULT LENGTH IN PRINTABLE FORM 12580002 YENTRY DC X'24' TYPE ATTRIBUTE IS Y ADDR CONSTANT 12590002 DC C'001' MIN LENGTH 12600002 DC C'002' MAX LENGTH 12610002 DC X'02' DEFAULT LENGTH 12620002 DC C' Y' TYPE IN PRINTABLE FORM 12630002 DC C'02' DEFAULT LENGTH IN PRINTABLE FORM 12640002 SENTRY DC X'28' TYPE ATTRIBUTE IS S ADDR CONSTANT 12650002 DC C'002' MIN LENGTH 12660002 DC C'002' MAX LENGTH 12670002 DC X'02' DEFAULT LENGTH IN BINARY 12680002 DC C' S' TYPE IN PRINTABLE FORM 12690002 DC C'02' DEFAULT LENGTH IN PRINTABLE FORM 12700002 PENTRY DC X'30' TYPE ATTRIBUTE IS PACKED DECIMAL 12710002 DC C'001' MIN LENGTH 12720002 DC C'016' MAX LENGTH 12730002 DC X'01' DEFAULT LENGTH IN BINARY 12740002 DC C' P' TYPE IN PRINTABLE FORM 12750002 DC C'01' DEFAULT LENGTH IN PRINTABLE FORM 12760002 ZENTRY DC X'34' TYPE ATTRIBUTE IS ZONED DECIMAL 12770002 DC C'001' MIN LENGTH 12780002 DC C'016' MAX LENGTH 12790002 DC X'01' DEFAULT LENGTH 12800002 DC C' Z' TYPE IN PRINTABLE FORM 12810002 DC C'01' DEFAULT LENGTH IN PRINTABLE FORM 12820002 EJECT 12830002 BINRYONE DC X'01' BINARY ONE-USED IN DEFAULT IN LENGTH 12840002 * ATTRIBUTE FIELD 12850002 FULLWORD DC X'03' USED TO TEST FOR FULLWORD BOUNDARY 12860002 HEXZER0 DC X'0000' USED TO TEST FOR INDIRECT ADDRESSING 12870002 ENDCHAIN DC X'FF000000' USED TO TEST FOR END OF PDL CHAIN 12880002 CHARZERO DC C'000000' USED FOR INITIALIZING AND TESTING 12890002 * VALUE SPECIFIED FOR MULTIPLICITY AND 12900002 * LENGTH ATTRIBUTES 12910002 MAXLNGTH DC C'256' MAXIMUN LENGTH ALLOWED SPECIFIED 12920002 * FOR LENGTH AND MULTIPLICITY 12930002 * ATTRIBUTES 12940002 BASE DC A(IKJEGEQU) ADDRESS OF IKJEGEQU CSECT 12950002 PARSADDR DC V(IKJEGPAR) ADDRESS OF PCL FOR IKJPARS-EQUATE 12970002 PARSDROP DC V(IKJEGPRS) ADDRESS OF PCL FOR IKJPARS-DROP 12980002 POOLONE DC X'01000000' SUBPOOL NUMBER FOR GETMAIN 12990002 ** THE FOLLOWING IS THE STAE MESSAGE TABLE ** 13000002 STATBL DS 0F 13010002 DC AL1(99),AL3(PARSBLOW) PARSE LINK FAILED 13020002 DC AL1(92),AL3(SYM02G3) GETMAIN FAILED 13030002 DC AL1(HEXFF) END OF STAE ABEND TABLE 13040002 RETRYADR DC AL3(ESTAERTN) ADDRESS OF STAE EXIST ROUTINE 13050002 STAEL2 DS 0F 13060002 STAELIST ESTAE STAELIST,MF=L LIST FORM STAE MACRO 13070002 STAELEN EQU *-STAELIST LENGTH OF STAE LIST 13080002 EJECT 14140002 IKJEGPAR IKJPARM DSECT=DSECTEQU 14150002 GETSYMBL IKJIDENT 'SYMBOL',MAXLNTH=8,OTHER=ALPHANUM, X14160002 PROMPT='SYMBOL' 14170002 GETADDR IKJPOSIT ADDRESS,PROMPT='ADDRESS',VALIDCK=IKJEGVDK 14180002 TYPEADDR IKJKEYWD 14190002 IKJNAME 'C' 14200002 IKJNAME 'X' 14210002 IKJNAME 'B' 14220002 IKJNAME 'I' 14230002 IKJNAME 'F' 14240002 IKJNAME 'H' 14250002 IKJNAME 'E' 14260002 IKJNAME 'D' 14270002 IKJNAME 'A' 14280002 IKJNAME 'Y' 14290002 IKJNAME 'S' 14300002 IKJNAME 'P' 14310002 IKJNAME 'Z' 14320002 TYPELNTH IKJKEYWD 14330002 IKJNAME 'LENGTH',SUBFLD=LENGTHCD A43351 14340002 TYPEMULT IKJKEYWD 14350002 IKJNAME 'MULTIPLE',SUBFLD=MULTCD A43351 14360002 LENGTHCD IKJSUBF 14370002 LENGTH IKJIDENT 'LENGTH',FIRST=NUMERIC,OTHER=NUMERIC,MAXLNTH=3, *14380002 PROMPT='INTEGER FOR LENGTH',VALIDCK=IKJEGVDK 14390002 MULTCD IKJSUBF 14400002 MULTPCTY IKJIDENT 'MULTIPLICITY FACTOR',FIRST=NUMERIC,OTHER=NUMERIC, *14410002 PROMPT='INTEGER FOR MULTIPLICITY',VALIDCK=IKJEGVDK 14420002 IKJENDP 14430002 IKJEGPRS IKJPARM DSECT=DSECTDRP 14440002 DROPSYM IKJIDENT 'SYMBOL',LIST,MAXLNTH=8,OTHER=ALPHANUM, *14450002 PROMPT='SYMBOL' 14460002 IKJENDP 14470002 EJECT 14480002 CVT DSECT 14490002 CVT 14500002 EJECT 14510002 IKJTCB 14520002 EJECT 14530002 TCOMTAB TCOMTAB 14540002 EJECT 14550002 TSTCWORK 14560002 EJECT 14570002 AREAWORK DSECT 14580002 PPLAREA DS 7F PARSE PARAMETER LIST-DESCRIPTION 14590002 * IN PPL MACRO EXPANSION 14600002 ** THE FOLLOWING TWO WORDS CANNOT BE SEPARATED. USED AS A PARAMETER ** 14610002 ** LIST TO GO TO IKJEGIO. ** 14620002 ADDRONE DS A SAVEAREA FOR ADDR OF 1ST LEVEL MSG 14630002 ADDRTWO DS A SAVEAREA FOR ADDR OF 2ND LEVEL MSG 14640002 REGSAVE DS F SAVEAREA FOR SERVICE RTN RETURN CODES 14650002 STAEL DS 0F ALIGN TO FULLWORD BOUNDARY 14660002 STAEAREA DS 18C STAE LIST FORM WORKAREA 14670002 LNGTWORK DS 3X WORKAREA FOR LENGTH ATTRIBUTE 14680002 DUPLSW EQU * BIT 1 INDICATES ON (X'01') 14690002 CMMNDSW EQU * ADDR EXIT SWITCH ON -(X'02') 14700002 MULTSW EQU * BIT 3 INDICATES ON (X'04') 14710002 WRAPUP DS X TERMINATE SWITCH ON - (X'08') 14720002 LOWSW EQU * LOW VALUE SWITCH ON - (X'01') 14730002 DROPSW EQU * DROP SWITCH ON - (X'02') 14740002 ALLSW DS X DELETE ENTRIE TABLE ON - (X'04') 14750002 ENDWORK EQU * 14760002 EJECT 14770002 ENTRY DSECT 14780002 ** THE FOLLOWING SEVEN FIELDS CANNOT BE SEPARATED. ** 14790002 TABENTR DS 0F 14800002 CHAIN DS A POINTER TO NEXT ENTRY IN SYM TABLE 14810002 ADDRSYM DS A LOAD ADDRESS OF SYMBOL 14820002 ATTRTYPE DS X TYPE ATTRIBUTE FIELD 14830002 ATTRMULT DS 3X MULTIPLICITY ATTRIBUTE FIELD 14840002 ATTRLNTH DS 2X LENGTH ATTRIBUTE FIELD 14850002 SYMLNGTH DS 2X LENGTH OF SYMBOL 14860002 SYMBOL DS 8X SYMBOL FIELD 14870002 EJECT 14880002 ** THE FOLLOWING DSECT WILL BE USED TO BUILD MESSAGE INSERTS ** 14880102 MSGINST DSECT 14880402 WKINSTS DS 48X 14880802 ORG WKINSTS 14881202 IN11 DS 0H 14881602 IN11LENG DS H HALFWORD WHICH WILL CONTAIN INS. LG 14881702 DS H FILLER 14881802 IN11TXT DS 8C AREA FOR TEXT OF THE INSERT 14881902 IN12 DS 0H 14884602 IN12LENG DS H HALFWORD WHICH WILL CONTAIN INS. LG 14886602 DS H FILLER 14887002 IN12TXT DS 8C AREA FOR TEXT OF THE INSERT 14887102 IN21 DS 0H 14887202 IN21LENG DS H HALFWORD WHICH WILL CONTAIN INS. LG 14888102 DS H FILLER 14888502 IN21TXT DS 8C AREA FOR TEXT OF THE INSERT 14888902 IN22 DS 0H 14889002 IN22LENG DS H HALFWORD WHICH WILL CONTAIN INS. LG 14891702 DS H FILLER 14893702 IN22TXT DS 8C AREA FOR TEXT OF THE INSERT 14894102 EJECT 14894602 IKJPARMA IKJPARMA 14897302 EJECT 14900002 IKJPPL 14910002 END 14920002