TITLE 'CONFIGURE ROUTINE' CON00010
*********************************************************************** CON00020
* * CON00030
* MODULE NAME = CONFIG * CON00040
* * CON00050
* FUNCTION = READ THE ICATS CONFIGURATION FILE AND CONFIGURE * CON00060
* THE ICATS VIRTUAL MACHINE. * CON00070
* * CON00080
* ENTRY POINTS = CONFIG * CON00090
* * CON00100
* LINKAGE = BALR R14,R15 FROM ICATS MAINLINE. * CON00110
* * CON00120
* REGISTER CONTENTS UPON ENTRY = * CON00130
* R2 = USED TO ADDRESS THE ICATS COMMON DATA AREA. * CON00140
* R14 = RETURN ADDRESS BACK TO ICATS MAINLINE * CON00150
* R15 = ENTRY POINT TO THIS MODULE * CON00160
* * CON00170
* REGISTER USAGE = * CON00180
* R0-R1 = USED TO PASS PARAMETERS TO SUBROUTINES. * CON00190
* R2 = USED TO ADDRESS THE ICATS COMMON DATA AREA. * CON00200
* R3 = FREE * CON00210
* R4 = USED TO ADDRESS CURRENT UTS CONTROL BLOCK. * CON00220
* R5 = USED TO ADDRESS CURRENT USER CONTROL BLOCK. * CON00230
* R6 = USED TO ADDRESS CURRENT DISK CONTROL BLOCK. * CON00240
* R11 = MY FIRST BASE REGISTER * CON00250
* R12 = MY SECOND BASE REGISTER * CON00260
* R13 = FREE * CON00270
* R14 = MY RETURN ADDRESS WHEN I CALL SOMEBODY * CON00280
* R15 = SUBROUTINE ADDRESS * CON00290
* * CON00300
* * CON00310
* MODULE LOGIC: * CON00320
* 1) OPEN THE FILE 'ICATS CONFIG A'. IF NOT THERE, ISSUE AN * CON00330
* ERROR MESSAGE AND RETURN (IT'S OK TO NOT HAVE THE * CON00340
* CONFIGURATION FILE, IT JUST MEANS THAT WE WON'T BE * CON00350
* SERVICING ANY UTS MACHINES. CONSOLE AND SMSG COMMANDS * CON00360
* ARE STILL GOOD THOUGH). * CON00370
* 2) START READING THE RECORDS IN UNTIL THE END OF FILE. * CON00380
* THERE ARE 6 TYPES OF CONFIGURATION RECORDS: * CON00390
* 1) BLANK LINE - THESE ARE JUST IGNORED. * CON00400
* 2) COMMENT - THESE BEGIN WITH AN ASTERISK "*". * CON00410
* 3) UTS - THESE DEFINE A UTS MACHINE. * CON00420
* 4) USER - THESE DEFINE A UTS USER UNDER THIS UTS MACHINE. * CON00430
* 5) MDISK - THESE DEFINE THE MINIDISKS FOR THIS USER. * CON00440
* 6) TERM - DIAL-ABLE LINES TO LOG ONTO THE UTS WITH. * CON00450
* 3) VALIDATE ALL THE REQUIRED PARAMETERS FOR EACH TYPE OF * CON00460
* STATEMENT AND IF ALL CHECK OUT OK, THEN BUILD THE * CON00470
* ASSOCIATED CONTROL BLOCK. ELSE REPORT THE ERROR * CON00480
* AND WHERE IT WAS AND SKIP PAST FURTHER LOWER LEVEL * CON00490
* CONFIGURATION FILE STATEMENTS. FOR EXAMPLE, IF WE * CON00500
* FIND AN ERROR IN A USER STATEMENT, SKIP UNTIL THE * CON00510
* NEXT USER OR UTS STATEMENT. THIS WAY, THERE'LL BE * CON00520
* NO SECURITY EXPOSURE IF THERE'S A BAD USER STATEMENT. * CON00530
* * CON00540
* * CON00550
* THERE ARE 4 LINKED LIST CONTROL BLOCK STRUCTURES: * CON00560
* 1) THE UTS CONTROL BLOCK CHAIN (ONE ENTRY FOR EACH UTS), * CON00570
* 2) THE USER CONTROL BLOCK CHAIN (ONE ENTRY FOR EACH * CON00580
* USER ON EACH UTS), * CON00590
* 3) THE DISK CONTROL BLOCK CHAIN (ONE ENTRY FOR EACH * CON00600
* DISK FOR EACH USER). * CON00610
* 4) THE TERMINAL CONTROL BLOCK CHAIN (ONE ENTRY FOR * CON00620
* EACH TERMINAL). * CON00630
* SEE THE CBUTS, CBUSER, CBDISK, AND CBTERM DSECTS FOR * CON00640
* DETAILS. * CON00650
* * CON00660
* RETURN CODES * CON00670
* R15 = 0 = EVERYTHING WENT OK. ABSOLUTELY NO ERRORS FOUND. * CON00680
* R15 = 4 = WE FOUND A MINOR ERROR BUT CONFIGURATION STILL * CON00690
* TOOK PLACE. WE PROBABLY MISSED A UTS USER OR A * CON00700
* DISK DEFINITION HOWEVER. * CON00710
* R15 = 8 = WE FOUND A MAJOR ERROR THAT SERIOUSLY AFFECTED * CON00720
* THIS CONFIGURATION ATTEMPT. WE EITHER * CON00730
* 1) COULDN'T FIND THE CONFIGURATION FILE, * CON00740
* 2) RAN OUT OF CONTROL BLOCK MEMORY, * CON00750
* 3) FOUND AN INVALID UTS CARD, OR * CON00760
* 4) FOUND A CARD WE DIDN'T UNDERSTAND AT ALL. * CON00770
* * CON00780
* EXTERNAL REFERENCES = ICDATA * CON00790
* * CON00800
* MACROS = * CON00810
* ICDATA = ICATS COMMON DATA AREA * CON00820
* ETTE = ENTER TRACE TABLE ENTRY SUBROUTINE * CON00830
* * CON00840
* CHANGE ACTIVITY * CON00850
* DATE NAME REASON FOR CHANGE * CON00860
* 01/31/83 RICK JASPER INITIAL PROGRAM CREATION * CON00870
* 05/06/83 RICK JASPER GENERAL CLEAN UP FROM FIRST DRAFT AND * CON00880
* ADDED THIRD PARM ON USER STATEMENT. * CON00890
* 05/20/83 RICK JASPER ADDED TERMINAL SUPPORT. * CON00900
* * CON00910
*********************************************************************** CON00920
PRINT GEN,NODATA CON00930
ENTRY CONFIG CON00940
CONFIG CSECT CON00950
USING ICDATA,R2 ADDRESS ICATS COMMON DATA AREA CON00960
USING CBTERM,R3 USE R3 TO ADDRESS TERM CONTROL BLOCK CON00970
USING CBUTS,R4 USE R4 TO ADDRESS UTS CONTROL BLOCK CON00980
USING CBUSER,R5 USE R5 TO ADDRESS USER CONTROL BLOCK CON00990
USING CBDISK,R6 USE R6 TO ADDRESS DISK CONTROL BLOCK CON01000
USING *,R15 USE R15 FOR BASE REG NEXT INSTRUCTION ONLY CON01010
STM R0,R14,FIGSAVE SAVE CALLER'S REGISTERS CON01020
DROP R15 CON01030
USING CONFIG,R11,R12 R11 WILL BE BASE REGISTER CON01040
LR R11,R15 ESTABLISH FIRST BASE REGISTER CON01050
LA R12,4095(R11) ESTABLISH SECOND BASE REGISTER CON01060
LA R12,1(R12) CON01070
* CON01080
XC CBFIRST,CBFIRST INITIALIZE POINTER TO FIRST UTS CB CON01090
MVC CBNEXT,CBSTART RESET NEXT AVAILABLE BYTE POINTER CON01100
FSSTATE FSCB=MYFSCB CON01110
LTR R15,R15 CON01120
BZ FIGSKIP6 CONTINUE ON IF ALL'S OK CON01130
LA R1,FIGMSGA GIVE A MESSAGE SAYING 'CANNOT FIND THE CON01140
L R15,AMESSAGE CONFIGURATION FILE ('ICATS CONFIG A'). CON01150
BALR R14,R15 CONFIGURATION WILL NOT TAKE PLACE' CON01160
OI FIGFLAG,MAJORERR REMEMBER WE HAD A MAJOR ERROR CON01170
B FIGBYE CON01180
FIGSKIP6 FSOPEN FSCB=MYFSCB CON01190
XC RCDCOUNT,RCDCOUNT INITIALIZE MY RECORD COUNTER CON01200
FIGLOOP DS 0H CON01210
MVI FIGINBUF,C' ' CLEAN OUT BUFFER BEFORE YOU USE IT CON01220
MVC FIGINBUF+1(79),FIGINBUF CON01230
L R15,RCDCOUNT IN CMS RELEASE 5, THE RECORD COUNTER CON01240
LA R15,1(R15) IS NOT READILY AVAILABLE, SO I'VE GOT CON01250
ST R15,RCDCOUNT TO KEEP MY OWN RECORD COUNTER. CON01260
FSREAD FSCB=MYFSCB CON01270
LTR R15,R15 HAVE WE HIT EOF YET ?? CON01280
BNZ FIGOUT CON01290
LA R0,MYPARM1 PUT PARSED PARMS IN MY BUFFER CON01300
LA R1,FIGBUFL GET ADDRESS OF INPUT BUFFER LENGTH CON01310
L R15,APARSE GET ADDRESS OF PARSE ROUTINE CON01320
BALR R14,R15 GO PARSE THE COMMAND LINE CON01330
* CON01340
* NOW WE GOT THE LINE READ IN AND PARSED. SEE WHAT KIND OF STATEMENT CON01350
* IT IS (COMMENT, UTS, USER, OR DISK) AND DO THE APPROPRIATE THING. CON01360
* CON01370
CLC MYPARM1,=CL8'*' CHECK THE EASY ONE FIRST CON01380
BE ENDLOOP IT'S A COMMENT LINE. IGNORE IT. CON01390
CLC MYPARM1,=CL8' ' CHECK FOR A BLANK LINE CON01400
BE ENDLOOP WE'LL ALLOW FOR BLANK LINES TOO. CON01410
* CON01420
CLC MYPARM1,=CL8'UTS' CHECK FOR THE UTS STATEMENT. CON01430
BNE CHCKUSER NOPE, GO CHECK FOR USER STATEMENT. CON01440
* FIRST CHECK THE VALIDITY OF EACH PARM, MAKING SURE THE ADDRESSES CON01450
* ARE VALID, AND INSURE NO DUPLICATE UTS ID'S OR ADDRESSES. IF CON01460
* EVERYTHING CHECKS OUT OK, ONLY THEN MAKE A NEW UTSCB. CON01470
CLC MYPARM2,=CL8' ' MAKE SURE UTS ID WAS SPECIFIED CON01480
BE UTSNO2 ERROR, SECOND PARM MISSING. CON01490
LA R1,MYPARM3 CONVERT REAL ADDRESS TO HEX CON01500
L R15,ACONHEX CON01510
BALR R14,R15 CON01520
LTR R15,R15 DID THE CONVERSION GO OK ?? CON01530
BZ FIGCONTA YEP, CONTINUE ON CON01540
C R15,=F'4' WHAT WENT WRONG, THEN ?? CON01550
BE UTSNO3 REAL ADDRESS NOT THERE CON01560
B UTSBAD3 REAL ADDRESS INVALID CON01570
FIGCONTA DS 0H CON01580
STH R0,FIGTEMPA TEMPORARILY SAVE REAL ADDRESS CON01590
LA R1,MYPARM4 CONVERT VIRTUAL ADDRESS TO HEX CON01600
L R15,ACONHEX CON01610
BALR R14,R15 CON01620
LTR R15,R15 DID THE CONVERSION GO OK ?? CON01630
BZ FIGCONTB YEP, CONTINUE ON CON01640
C R15,=F'4' WHAT WENT WRONG, THEN ?? CON01650
BE UTSNO4 VIRTUAL ADDRESS NOT THERE CON01660
B UTSBAD4 VIRTUAL ADDRESS INVALID CON01670
FIGCONTB DS 0H CON01680
STH R0,FIGTEMPB TEMPORARILY SAVE VIRTUAL ADDRESS CON01690
L R1,CBNEXT GET ADDRESS OF NEXT FREE BYTE CON01700
LA R1,56(R1) BUMP BY SIZE OF UTS CONTROL BLOCK CON01710
C R1,CBEND ARE WE OUT OF MEMORY YET ?? CON01720
BNL FIGNOMEM YEP, ABORT CON01730
* NOW ADJUST THE POINTER TO THIS NEW UTS CONTROL BLOCK. FIRST CON01740
* CHECK OUT CBFIRST, IF 0, MAKE IT POINT TO THIS NEW UTSCB. ELSE CON01750
* FOLLOW THE UTS CONTROL BLOCK CHAIN TO THE FIRST NULL FORWARD CON01760
* POINTER AND MAKE THAT POINT TO THIS NEW UTSCB. CON01770
L R4,CBFIRST GET POINTER TO FIRST UTS CONTROL BLOCK CON01780
LTR R4,R4 IS THE POINTER NULL ?? CON01790
BNZ FIGCONTC NOPE, THIS ISN'T THE FIRST UTSCB CON01800
MVC CBFIRST,CBNEXT ELSE POINT TO THIS ONLY UTSCB CON01810
B FIGCONTD GO BUILD THE CONTROL BLOCK CON01820
UP8 L R4,CBUTSFP GO TO NEXT UTSCB CON01830
FIGCONTC CLC CBUTSUID,MYPARM2 INSURE NO DUPLICATE UTS ID'S CON01840
BE UTSDUPID OOPS, DUPLICATE ID'S NOT ALLOWED CON01850
CLC CBUTSRAD,FIGTEMPA INSURE NO DUPLICATE REAL ADDRESSES CON01860
* BE UTSDUPRA OOPS, DUPLICATES NOT ALLOWED CON01870
CLC CBUTSVAD,FIGTEMPB NO DUP VIRTUAL ADDRESSES EITHER CON01880
BE UTSDUPVA OOPS, DUPLICATES NOT ALLOWED CON01890
CLC CBUTSFP,=F'0' IS THIS FORWARD POINTER NULL ?? CON01900
BNE UP8 NOPE, NOT AT END OF CHAIN YET. CON01910
MVC CBUTSFP,CBNEXT ELSE POINT TO THIS ONLY UTSCB CON01920
* NOW GO AHEAD AND BUILD THE NEW UTS CONTROL BLOCK. THE FORWARD CON01930
* POINTER TO THIS NEW UTSCB HAS ALREADY BEEN TAKEN CARE OF AND ALL CON01940
* POSSIBLE ERROR CONDITIONS HAVE BEEN CHECKED FOR. CON01950
FIGCONTD DS 0H CON01960
L R4,CBNEXT SET UP NEW UTS CONTROL BLOCK BASE REG CON01970
ST R1,CBNEXT STORE NEW NEXT BYTE FREE ADDRESS CON01980
XC CBUTS(56),CBUTS BLANK EVERYTHING OUT TO START WITH CON01990
MVC CBUTSUID,MYPARM2 MOVE IN UTS UNIQUE ID CON02000
MVC CBUTSRAD,FIGTEMPA MOVE IN UTS REAL ADDRESS CON02010
MVC CBUTSVAD,FIGTEMPB MOVE IN UTS VIRTUAL ADDRESS CON02020
MVC CBUTSDAT,=C'00/00/00' CON02030
MVC CBUTSTIM,=C'00:00:00' CON02040
NI FIGFLAG,ALL-NOUSER-NODISK RESUME DOING USER/DISK CARDS CON02050
B ENDLOOP CON02060
EJECT CON02070
UTSNO2 DS 0H CON02080
LINEDIT TEXT='SECOND PARAMETER ON UTS STATEMENT IS MISSING ON RECOR-CON02090
D NUMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYB-CON02100
UFR CON02110
B UTSCONTA CON02120
UTSNO3 DS 0H CON02130
LINEDIT TEXT='THIRD PARAMETER ON UTS STATEMENT IS MISSING ON RECORD-CON02140
NUMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBU-CON02150
FR CON02160
B UTSCONTA CON02170
UTSBAD3 DS 0H CON02180
LINEDIT TEXT='THIRD PARAMETER ON UTS STATEMENT IS INVALID ON RECORD-CON02190
NUMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBU-CON02200
FR CON02210
B UTSCONTA CON02220
UTSNO4 DS 0H CON02230
LINEDIT TEXT='FOURTH PARAMETER ON UTS STATEMENT IS MISSING ON RECOR-CON02240
D NUMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYB-CON02250
UFR CON02260
B UTSCONTA CON02270
UTSBAD4 DS 0H CON02280
LINEDIT TEXT='FOURTH PARAMETER ON UTS STATEMENT IS INVALID ON RECOR-CON02290
D NUMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYB-CON02300
UFR CON02310
B UTSCONTA CON02320
UTSDUPID DS 0H CON02330
LINEDIT TEXT='DUPLICATE UTS UNIQUE ID FOUND IN RECORD NUMBER ......-CON02340
',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUFR CON02350
B UTSCONTA CON02360
UTSDUPRA DS 0H CON02370
LINEDIT TEXT='DUPLICATE REAL UTS ADDRESS FOUND IN RECORD NUMBER ...-CON02380
...',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUFR CON02390
B UTSCONTA CON02400
UTSDUPVA DS 0H CON02410
LINEDIT TEXT='DUPLICATE VIRTUAL UTS ADDRESS FOUND IN RECORD NUMBER -CON02420
.....',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUFR CON02430
B UTSCONTA CON02440
EJECT CON02450
CHCKUSER DS 0H CON02460
CLC MYPARM1,=CL8'USER' CHECK FOR THE USER STATEMENT. CON02470
BNE CHCKDISK NOPE, GO CHECK FOR DISK STATEMENT. CON02480
TM FIGFLAG,NOUSER ARE WE SKIPPING USER STATEMENTS ?? CON02490
BO ENDLOOP YEP, IGNORE THIS STATEMENT. CON02500
CLC MYPARM2,=CL8' ' INSURE USER ID IS SPECIFIED CON02510
BE USERNO2 UTS USER ID IS MISSING CON02520
* LET'S FIND OUT WHICH UTS THIS USER BELONGS TO. IT'LL BE THE CON02530
* LAST UTSCB IN THE UTSCB CHAIN. CON02540
L R4,CBFIRST GET ADDRESS OF FIRST UTSCB CON02550
LTR R4,R4 IS IT NULL ?? CON02560
BE USERSEQ SEQUENCE ERROR - USER BEFORE UTS CON02570
USERUP3 CLC CBUTSFP,=F'0' IS THIS THE LAST IN THE CHAIN ?? CON02580
BE USERCONA YEP, CONTINUE ON CON02590
L R4,CBUTSFP GET ADDRESS OF NEXT UTSCB THEN CON02600
B USERUP3 CHECK IT OUT CON02610
USERCONA DS 0H CON02620
LA R1,MYPARM3 CONVERT USER FILE ID TO HEX CON02630
L R15,ACONHEX THIS NUMBER IS USED WHEN READING CON02640
BALR R14,R15 DOWN FILES IN SOURCE FORMAT. CON02650
LTR R15,R15 DID THE CONVERSION GO OK ?? CON02660
BZ USERCONB YEP, CONTINUE ON CON02670
C R15,=F'4' WHAT WENT WRONG, THEN ?? CON02680
BE USERNO3 USER FILE ID NOT THERE CON02690
B USERBAD3 USER FILE ID INVALID CON02700
USERCONB DS 0H CON02710
STH R0,FIGTEMPA TEMPORARILY SAVE USER FILE ID CON02720
L R1,CBNEXT GET ADDRESS OF NEXT FREE BYTE CON02730
LA R1,36(R1) BUMP BY SIZE OF USER CONTROL BLOCK CON02740
C R1,CBEND ARE WE OUT OF MEMORY YET ?? CON02750
BNL FIGNOMEM YEP, ABORT CON02760
L R5,CBUTSUP GET ADDRESS OF FIRST USERCB FOR THIS UTS CON02770
LTR R5,R5 IS THIS THE FIRST USER FOR THIS UTS ?? CON02780
BNZ USERCONC NOPE, NOT THAT EASY CON02790
MVC CBUTSUP,CBNEXT POINT TO THIS NEW USERCB CON02800
B USERCOND CON02810
* RUN THROUGH THE LIST OF USERS FOR THIS UTS, CHECKING FOR DUPLICATE CON02820
* USER ID'S AS YOU GO, UNTIL YOU FIND THE END OF THE CHAIN. CON02830
USERUP5 L R5,CBUSRFP GET ADDRESS OF NEXT USERCB IN CHAIN CON02840
USERCONC DS 0H CON02850
CLC CBUSRUID,MYPARM2 INSURE NO DUPLICATE USER ID'S CON02860
BE USERDUP2 AHA, GOTCHA CON02870
CLC CBUSRFP,=F'0' IS THE THE LAST USERCB IN THE CHAIN? CON02880
BNE USERUP5 NOPE, CHECK OUT NEXT ONE CON02890
MVC CBUSRFP,CBNEXT POINT TO THE NEW USERCB CON02900
* NOW GO AHEAD AND BUILD THE NEW USER CONTROL BLOCK. THE FORWARD CON02910
* POINTER TO THIS NEW USERCB HAS ALREADY BEEN TAKEN CARE OF AND ALL CON02920
* POSSIBLE ERROR CONDITIONS HAVE BEEN CHECKED FOR. CON02930
USERCOND DS 0H CON02940
L R5,CBNEXT SET UP NEW USER CONTROL BLOCK BASE REG CON02950
ST R1,CBNEXT STORE NEW NEXT BYTE FREE ADDRESS CON02960
XC CBUSER(36),CBUSER BLANK EVERYTHING OUT TO START WITH CON02970
MVC CBUSRUID,MYPARM2 MOVE IN USER ID CON02980
MVC CBUSRFID,FIGTEMPA+1 MOVE IN USER FILE ID CON02990
NI FIGFLAG,ALL-NODISK RESUME DOING DISK STATEMENTS CON03000
B ENDLOOP CON03010
EJECT CON03020
USERNO2 DS 0H CON03030
LINEDIT TEXT='USER ID IS MISSING IN USER STATEMENT ON RECORD NUMBER-CON03040
......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUFR CON03050
B USERCONE CON03060
USERNO3 DS 0H CON03070
LINEDIT TEXT='USER FILE ID IS MISSING IN USER STATEMENT ON RECORD N-CON03080
UMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUFR CON03090
B USERCONE CON03100
USERBAD3 DS 0H CON03110
LINEDIT TEXT='USER FILE ID IS INVALID IN USER STATEMENT ON RECORD N-CON03120
UMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUFR CON03130
B USERCONE CON03140
USERSEQ DS 0H CON03150
LINEDIT TEXT='SEQUENCE ERROR - USER STATEMENT IN RECORD NUMBER ....-CON03160
.. FOUND BEFORE A UTS STATEMENT',SUB=(DECA,RCDCOUNT),DIS-CON03170
P=NONE,BUFFA=MYBUFR CON03180
B USERCONE CON03190
USERDUP2 DS 0H CON03200
LINEDIT TEXT='DUPLICATE USER ID FOUND FOR THIS UTS IN RECORD NUMBER-CON03210
......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUFR CON03220
* CON03230
* DELIVER THE MESSAGE THAT'S SITTING IN MYBUFR. THEN, CON03240
* SINCE WE GOT AN ERROR IN AN USER STATEMENT, GIVE THE MESSAGE CON03250
* "INPUT UP TO NEXT USER OR UTS STATEMENT IS IGNORED", AND SKIP CON03260
* OVER FUTURE DISK CARDS UNTIL ANOTHER USER STATEMENT IS REACHED. CON03270
* CON03280
USERCONE DS 0H CON03290
LA R1,MYBUFR CON03300
L R15,AMESSAGE CON03310
BALR R14,R15 CON03320
LA R1,FIGMSGC SAY 'INPUT UP TO NEXT USER OR UTS CON03330
L R15,AMESSAGE STATEMENT IS IGNORED' CON03340
BALR R14,R15 CON03350
OI FIGFLAG,NODISK TURN ON SKIP DISK FLAG CON03360
OI FIGFLAG,MINORERR REMEMBER WE HAD A MINOR ERROR CON03370
B ENDLOOP CON03380
EJECT CON03390
CHCKDISK DS 0H CON03400
CLC MYPARM1,=CL8'DISK' CHECK FOR THE DISK STATEMENT. CON03410
BNE CHCKTERM GO LOOK FOR TERM STATEMENT. CON03420
TM FIGFLAG,NODISK ARE WE SKIPPING DISK STATEMENTS ?? CON03430
BO ENDLOOP YEP, IGNORE THIS STATEMENT. CON03440
* CHECK THE ACCESS MODE (MYPARM2) - IT MUST BE ONE ALPHABETIC LETTER CON03450
CLC MYPARM2,=CL8' ' MAKE SURE ACCESS MODE WAS GIVEN CON03460
BE DISKNO2 NOPE, NOT THERE CON03470
CLC MYPARM2+1(7),=CL7' ' MAKE SURE ONLY ONE CHARACTER CON03480
BNE DISKBAD2 NOPE, TOO BAD CON03490
CLI MYPARM2,C'A' IS IT A-I ?? CON03500
BL DISKBAD2 NOPE, NO GOOD CON03510
CLI MYPARM2,C'I' CON03520
BNH FIGCONTE YEP, IT'S A-I CON03530
CLI MYPARM2,C'J' IS IT J-R ?? CON03540
BL DISKBAD2 NOPE, NO GOOD CON03550
CLI MYPARM2,C'R' CON03560
BNH FIGCONTE YEP, IT'S J-R CON03570
CLI MYPARM2,C'S' IS IT S-Z ?? CON03580
BL DISKBAD2 NOPE, NO GOOD CON03590
CLI MYPARM2,C'Z' CON03600
BH DISKBAD2 NOPE, THIS THING'S NO GOOD CON03610
* OK, OK, THE SECOND PARM IS GOOD. CHECK THE THIRD CON03620
FIGCONTE DS 0H CON03630
LA R1,MYPARM3 CONVERT MINIDISK ADDRESS TO HEX CON03640
L R15,ACONHEX CON03650
BALR R14,R15 CON03660
LTR R15,R15 DID THE CONVERSION GO OK ?? CON03670
BZ FIGCONTF YEP, CONTINUE ON CON03680
C R15,=F'4' WHAT WENT WRONG, THEN ?? CON03690
BE DISKNO3 MINIDISK ADDRESS NOT THERE CON03700
B DISKBAD3 MINIDISK ADDRESS INVALID CON03710
FIGCONTF DS 0H CON03720
* I DECIDED I WANTED THE MINIDISK ADDRESS STORED IN EBCDIC, NOT HEX CON03730
* BUT I STILL USE THE CONHEX ROUTINE TO CHECK ITS VALIDITY, THOUGH. CON03740
* STH R0,FIGTEMPB TEMPORARILY SAVE MINIDISK ADDRESS CON03750
CLC MYPARM4,=CL8' ' INSURE READ PASSWORD WAS GIVEN CON03760
BE DISKNO4 CON03770
CLC MYPARM5,=CL8' ' INSURE WRITE PASSWORD WAS GIVEN CON03780
BE DISKNO5 CON03790
* OK, ALL THE PARAMETERS ARE THERE AND THEY ARE VALID. NOW LET'S CON03800
* MAKE SURE THERE'S ENOUGH MEMORY AND THAT THIS ISN'T A DUPLICATE CON03810
* ACCESS MODE FOR THIS USER. FIND OUT WHICH USER THIS DISK BELONGS CON03820
* TO. IT'LL BE THE LAST USER IN THE USERCB CHAIN OF THE LAST UTS CON03830
* IN THE UTSCB CHAIN. SO, FIRST FIND THE LAST UTSCB IN THAT CHAIN. CON03840
L R4,CBFIRST GET ADDRESS OF FIRST UTSCB CON03850
LTR R4,R4 IS IT NULL ?? CON03860
BE DISKSEQA SEQUENCE ERROR - DISK BEFORE UTS CON03870
DISKUP3A CLC CBUTSFP,=F'0' IS THIS THE LAST IN THE CHAIN ?? CON03880
BE DISKCONA YEP, CONTINUE ON CON03890
L R4,CBUTSFP GET ADDRESS OF NEXT UTSCB THEN CON03900
B DISKUP3A CHECK IT OUT CON03910
* NOW FIND THE LAST USERCB IN THE USERCB CHAIN. CON03920
DISKCONA DS 0H CON03930
L R5,CBUTSUP GET ADDRESS OF FIRST USERCB CON03940
LTR R5,R5 IS IT NULL ?? CON03950
BE DISKSEQB SEQUENCE ERROR - DISK BEFORE USER CON03960
DISKUP3B CLC CBUSRFP,=F'0' IS THIS THE LAST IN THE CHAIN ?? CON03970
BE DISKCONB YEP, CONTINUE ON CON03980
L R5,CBUSRFP GET ADDRESS OF NEXT UTSCB THEN CON03990
B DISKUP3B CHECK IT OUT CON04000
* NOW WE'VE GOT R4 & R5 POINTING TO THIS UTSCB & USERCB. CHECK CON04010
* FOR OUT OF MEMORY AND FOR THIS BEING THIS GUY'S FIRST DISK. CON04020
DISKCONB DS 0H CON04030
L R1,CBNEXT GET ADDRESS OF NEXT FREE BYTE CON04040
LA R1,44(R1) BUMP BY SIZE OF DISK CONTROL BLOCK CON04050
C R1,CBEND ARE WE OUT OF MEMORY YET ?? CON04060
BNL FIGNOMEM YEP, ABORT CON04070
L R6,CBUSRDP GET ADDRESS OF FIRST DISKCB FOR THIS USER CON04080
LTR R6,R6 IS THIS HIS FIRST DISK ?? CON04090
BNZ DISKCONC NOPE, NOT THAT EASY CON04100
MVC CBUSRDP,CBNEXT POINT TO THIS NEW DISKCB CON04110
B DISKCOND CON04120
* RUN THROUGH THE LIST OF DISKS FOR THIS USER, CHECKING FOR DUPLICATE CON04130
* ACCESS MODES AS YOU GO, UNTIL YOU FIND THE END OF THE CHAIN. CON04140
DISKUP5 L R6,CBDSKFP GET ADDRESS OF NEXT DISKCB IN CHAIN CON04150
DISKCONC DS 0H CON04160
CLC CBDSKMOD,MYPARM2 INSURE NO DUPLICATE ACCESS MODES. CON04170
BE DISKDUP2 AHA, GOTCHA CON04180
CLC CBDSKFP,=F'0' IS THIS THE LAST DISKCB IN THE CHAIN? CON04190
BNE DISKUP5 NOPE, CHECK OUT NEXT ONE CON04200
MVC CBDSKFP,CBNEXT POINT TO THE NEW USERCB CON04210
* NOW GO AHEAD AND BUILD THE NEW DISK CONTROL BLOCK. THE FORWARD CON04220
* POINTER TO THIS NEW DISKCB HAS ALREADY BEEN TAKEN CARE OF AND ALL CON04230
* POSSIBLE ERROR CONDITIONS HAVE BEEN CHECKED FOR. CON04240
DISKCOND DS 0H CON04250
L R6,CBNEXT SET UP NEW DISK CONTROL BLOCK BASE REG CON04260
ST R1,CBNEXT STORE NEW NEXT BYTE FREE ADDRESS CON04270
XC CBDISK(44),CBDISK BLANK EVERYTHING OUT TO START WITH CON04280
MVC CBDSKMOD,MYPARM2 MOVE IN USER'S ACCESS MODE CON04290
* I DECIDED I WANTED THE MINIDISK ADDRESS STORED IN EBCDIC, NOT HEX CON04300
* BUT I STILL USE THE CONHEX ROUTINE TO CHECK ITS VALIDITY, THOUGH. CON04310
* MVC CBDSKDAD,FIGTEMPA MOVE IN MY MINIDISK ADDRESS CON04320
MVC CBDSKDAD,MYPARM3 MOVE IN MY MINIDISK ADDRESS CON04330
MVC CBDSKRPW,MYPARM4 MOVE IN USER'S READ PASSWORD CON04340
MVC CBDSKWPW,MYPARM5 MOVE IN USER'S WRITE PASSWORD CON04350
B ENDLOOP CON04360
EJECT CON04370
DISKNO2 DS 0H CON04380
LINEDIT TEXT='ACCESS MODE IS MISSING IN DISK STATEMENT ON RECORD NU-CON04390
MBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUFR CON04400
B DISKCONE CON04410
DISKBAD2 DS 0H CON04420
LINEDIT TEXT='INVALID ACCESS MODE GIVEN IN DISK STATEMENT ON RECORD-CON04430
NUMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBU-CON04440
FR CON04450
B DISKCONE CON04460
DISKNO3 DS 0H CON04470
LINEDIT TEXT='MINIDISK ADDRESS IS MISSING IN DISK STATEMENT ON RECO-CON04480
RD NUMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MY-CON04490
BUFR CON04500
B DISKCONE CON04510
DISKBAD3 DS 0H CON04520
LINEDIT TEXT='INVALID MINIDISK ADDRESS GIVEN IN DISK STATEMENT ON R-CON04530
ECORD NUMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA-CON04540
=MYBUFR CON04550
B DISKCONE CON04560
DISKNO4 DS 0H CON04570
LINEDIT TEXT='READ PASSWORD NOT GIVEN IN DISK STATEMENT ON RECORD N-CON04580
UMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUFR CON04590
B DISKCONE CON04600
DISKNO5 DS 0H CON04610
LINEDIT TEXT='WRITE PASSWORD NOT GIVEN IN DISK STATEMENT ON RECORD -CON04620
NUMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUF-CON04630
R CON04640
B DISKCONE CON04650
DISKSEQA DS 0H CON04660
LINEDIT TEXT='SEQUENCE ERROR - DISK STATEMENT IN RECORD NUMBER ....-CON04670
.. FOUND BEFORE A UTS STATEMENT',SUB=(DECA,RCDCOUNT),DIS=CON04680
P=NONE,BUFFA=MYBUFR CON04690
B DISKCONE CON04700
DISKSEQB DS 0H CON04710
LINEDIT TEXT='SEQUENCE ERROR - DISK STATEMENT IN RECORD NUMBER ....-CON04720
.. FOUND BEFORE A USER STATEMENT',SUB=(DECA,RCDCOUNT),DI-CON04730
SP=NONE,BUFFA=MYBUFR CON04740
B DISKCONE CON04750
DISKDUP2 DS 0H CON04760
LINEDIT TEXT='DUPLICATE ACCESS MODE FOUND FOR THIS USER IN DISK STA-CON04770
TEMENT ON RECORD NUMBER ......',SUB=(DECA,RCDCOUNT),DISP-CON04780
=NONE,BUFFA=MYBUFR CON04790
* CON04800
* DELIVER THE MESSAGE THAT'S SITTING IN MYBUFR. THEN, CON04810
* SINCE WE GOT AN ERROR IN AN DISK STATEMENT, GIVE A MESSAGE AND CON04820
* GO READ THE NEXT CARD. CON04830
* CON04840
DISKCONE DS 0H CON04850
LA R1,MYBUFR CON04860
L R15,AMESSAGE CON04870
BALR R14,R15 CON04880
LA R1,FIGMSGD SAY 'THIS DISK STATEMENT WILL CON04890
L R15,AMESSAGE BE IGNORED' CON04900
BALR R14,R15 CON04910
OI FIGFLAG,MINORERR REMEMBER WE HAD A MINOR ERROR CON04920
B ENDLOOP CON04930
* CON04940
CHCKTERM DS 0H CON04950
CLC MYPARM1,=CL8'TERM' CHECK FOR THE TERMINAL STATEMENT. CON04960
BNE SAYWHAT HUH ?? DON'T KNOW WHAT THIS IS. CON04970
* CHECK MY VIRTUAL ADDRESS OF THIS TERMINAL. CON04980
LA R1,MYPARM2 CONVERT TERMINAL ADDRESS TO HEX CON04990
L R15,ACONHEX CON05000
BALR R14,R15 CON05010
LTR R15,R15 DID THE CONVERSION GO OK ?? CON05020
BZ TERMCONA YEP, CONTINUE ON CON05030
C R15,=F'4' WHAT WENT WRONG, THEN ?? CON05040
BE TERMNO2 TERMINAL ADDRESS NOT THERE CON05050
B TERMBAD2 TERMINAL ADDRESS INVALID CON05060
TERMCONA DS 0H CON05070
* I'M GOING TO SAVE THE TERMINAL VIRTUAL ADDRESS IN BOTH EBCDIC AND CON05080
STH R0,FIGTEMPB HEX, SO TEMPORARILY SAVE IT AWAY. CON05090
* CON05100
* NOW LET'S GO AHEAD AND DEFINE A GRAPHICS DEVICE AT THIS ADDRESS. CON05110
* ISSUE THE CP COMMAND "DEFINE GRAF XXX 3270". CON05120
* CON05130
MVC GRAFCUU,MYPARM2 PUT TERMINAL ADDRESS INTO COMMAND CON05140
LA R1,DEFGRAF PICK UP ADDRESS OF THE DEFINE COMMAND CON05150
SVC 202 CON05160
DC AL4(*+4) CON05170
LTR R15,R15 CON05180
BZ TERMCONB EVERYTHING'S COOL. CONTINUE ON. CON05190
C R15,=F'92' CHECK FOR ALREADY DEFINED. CON05200
BNE TERMBAD SOMETHING WENT WRONG. NOT SURE WHAT. CON05210
* OK, THE ONLY PARAMETER IS THERE AND IT'S VALID. NOW LET'S CON05220
* MAKE SURE THERE'S ENOUGH MEMORY AND THAT THIS ISN'T A DUPLICATE CON05230
* TERMINAL VIRTUAL ADDRESS. CON05240
TERMCONB L R1,CBNEXT GET ADDRESS OF NEXT FREE BYTE CON05250
LA R1,160(R1) GET NEW CBNEXT (KEEP IN R1) CON05260
C R1,CBEND ARE WE OUT OF MEMORY YET ?? CON05270
BNL FIGNOMEM YEP, ABORT CON05280
L R3,TERM1ST GET ADDRESS OF FIRST TERMINAL CB CON05290
LTR R3,R3 IS THIS THE FIRST TERMINAL STATEMENT ?? CON05300
BNZ TERMCONC NOPE, NOT THAT EASY CON05310
MVC TERM1ST,CBNEXT POINT TO THIS NEW TERM CB CON05320
B TERMCOND CON05330
* RUN THROUGH THE LIST OF DISKS FOR THIS USER, CHECKING FOR DUPLICATE CON05340
* ACCESS MODES AS YOU GO, UNTIL YOU FIND THE END OF THE CHAIN. CON05350
TERMUP5 L R3,CBTERMFP GET ADDRESS OF NEXT TERMCB IN CHAIN CON05360
TERMCONC DS 0H CON05370
CH R0,CBTERMHA INSURE NO DUPLICATE TERMINAL ADDRESSES CON05380
BE TERMDUP2 AHA, GOTCHA CON05390
CLC CBTERMFP,=F'0' IS THIS THE LAST TERM CB IN THE CHAIN? CON05400
BNE TERMUP5 NOPE, CHECK OUT NEXT ONE CON05410
MVC CBTERMFP,CBNEXT POINT TO THE NEW TERMCB CON05420
TERMCOND DS 0H CON05430
* TELL CMS THAT WE WANT TO HANDLE INTERRUPTS FROM THIS DEVICE. CON05440
LR R13,R1 SAVE R1 'CAUSE HNDINT CHANGES IT CON05450
MVC HNDLABEL+16(4),MYPARM2 REPLACES C'JUNK' CON05460
MVC HNDLABEL+20(4),=V(TERMIOIH) REPLACES A'HNDLABEL' CON05470
MVC HNDLABEL+24(2),FIGTEMPB REPLACES H'444' CON05480
CNOP 0,4 CON05490
HNDLABEL HNDINT SET,(JUNK,HNDLABEL,444,ASAP) CON05500
LTR R15,R15 INSURE THAT HNDINT WORKED OK CON05510
BNZ TERMHND CON05520
LR R1,R13 RESTORE R1 CON05530
* NOW GO AHEAD AND BUILD THE NEW TERMINAL CONTROL BLOCK. THE FORWARD CON05540
* POINTER TO THIS NEW TERM CB HAS ALREADY BEEN TAKEN CARE OF AND ALL CON05550
* POSSIBLE ERROR CONDITIONS HAVE BEEN CHECKED FOR. CON05560
L R3,CBNEXT SET UP NEW TERM CONTROL BLOCK BASE REG CON05570
ST R1,CBNEXT STORE NEW NEXT BYTE FREE ADDRESS CON05580
XC CBTERM(160),CBTERM BLANK EVERYTHING OUT TO START WITH CON05590
MVC CBTERMST,=C'$$$$' DEFAULT SESSION TERMINATE STRING CON05600
MVC CBTERMHA,FIGTEMPB TERMINAL ADDRESS IN HEX CON05610
MVC CBTERMEA,MYPARM2 TERMINAL ADDRESS IN EBCDIC CON05620
MVC CBTERMDA,=C'00/00/00' DATE OF LAST INTERRUPT CON05630
MVC CBTERMTI,=C'00:00:00' TIME OF LAST INTERRUPT CON05640
B ENDLOOP CON05650
EJECT CON05660
TERMNO2 DS 0H CON05670
LINEDIT TEXT='VIRTUAL ADDRESS IS MISSING IN TERMINAL STATEMENT ON R-CON05680
ECORD NUMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA-CON05690
=MYBUFR CON05700
B TERMCONE CON05710
TERMBAD2 DS 0H CON05720
LINEDIT TEXT='VIRTUAL ADDRESS IS INVALID IN TERMINAL STATEMENT ON R-CON05730
ECORD NUMBER ......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA-CON05740
=MYBUFR CON05750
B TERMCONE CON05760
TERMBAD DS 0H CON05770
LR R3,R15 CON05780
LINEDIT TEXT='GOT A BAD RETURN CODE FROM THE CP DEFINE GRAF XXX 327-CON05790
0 COMMAND. RETURN CODE = ....',SUB=(DEC,(R3)),DISP=NONE-CON05800
,BUFFA=MYBUFR CON05810
B TERMCONE CON05820
TERMHND DS 0H CON05830
LR R3,R15 CON05840
LINEDIT TEXT='GOT A BAD RETURN CODE FROM THE CMS MACRO, HNDINT. RE-CON05850
TURN CODE = ....',SUB=(DEC,(R3)),DISP=NONE,BUFFA=MYBUFR CON05860
B TERMCONE CON05870
TERMDUP2 DS 0H CON05880
LINEDIT TEXT='DUPLICATE VIRTUAL ADDRESS FOUND FOR THIS TERMINAL STA-CON05890
TEMENT ON RECORD NUMBER ......',SUB=(DECA,RCDCOUNT),DISP-CON05900
=NONE,BUFFA=MYBUFR CON05910
* CON05920
* DELIVER THE MESSAGE THAT'S SITTING IN MYBUFR. THEN, CON05930
* WHAT THE ERROR WAS ON THIS TERMINAL STATEMENT AND GO READ IN THE CON05940
* NEXT CARD. CON05950
* CON05960
TERMCONE DS 0H CON05970
LA R1,MYBUFR CON05980
L R15,AMESSAGE CON05990
BALR R14,R15 CON06000
LA R1,FIGMSGE SAY 'THIS TERMINAL STATEMENT CON06010
L R15,AMESSAGE WILL BE IGNORED' CON06020
BALR R14,R15 CON06030
B ENDLOOP CON06040
* CON06050
SAYWHAT DS 0H UNKNOWN FIRST WORD IN STATEMENT CON06060
LINEDIT TEXT='RECORD NUMBER ...... IS BAD - UNKNOWN FIRST WORD',SUB-CON06070
=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUFR CON06080
* CON06090
* DELIVER THE MESSAGE THAT'S SITTING IN MYBUFR. THEN, CON06100
* SINCE WE GOT AN ERROR IN AN UTS STATEMENT OR WE COULDN'T TELL CON06110
* WHAT KIND OF STATEMENT IT WAS (IT MIGHT BE A UTS STATEMENT), SKIP CON06120
* FORWARD IN THE INPUT STREAM UNTIL WE FIND ANOTHER UTS STATEMENT. CON06130
* CON06140
UTSCONTA DS 0H CON06150
LA R1,MYBUFR CON06160
L R15,AMESSAGE CON06170
BALR R14,R15 CON06180
LA R1,FIGMSGB SAY 'INPUT UP TO NEXT UTS CON06190
L R15,AMESSAGE STATEMENT IS IGNORED' CON06200
BALR R14,R15 CON06210
OI FIGFLAG,NOUSER+NODISK TURN ON SKIP USER & DISK FLAGS CON06220
OI FIGFLAG,MAJORERR REMEMBER WE HAD A MAJOR ERROR CON06230
ENDLOOP DS 0H CON06240
B FIGLOOP CONTINUE UNTIL END OF FILE IS REACHED CON06250
* CON06260
* COME HERE WHEN WE'VE RAN OUT OF MEMORY TO PUT THE CONTROL BLOCKS CON06270
* AT. ISSUE A MESSAGE AND ABORT THIS CONFIGURATION. CON06280
* CON06290
FIGNOMEM DS 0H CON06300
LINEDIT TEXT='RAN OUT OF CONTROL BLOCK MEMORY READING RECORD NUMBER-CON06310
......',SUB=(DECA,RCDCOUNT),DISP=NONE,BUFFA=MYBUFR CON06320
LA R1,MYBUFR CON06330
L R15,AMESSAGE STATEMENT IS IGNORED' CON06340
BALR R14,R15 CON06350
OI FIGFLAG,MAJORERR REMEMBER WE HAD A MAJOR ERROR CON06360
* CON06370
* CLOSE THE ICATS CONFIG FILE AND RETURN. CON06380
FIGOUT DS 0H CON06390
FSCLOSE FSCB=MYFSCB CON06400
FIGBYE DS 0H CON06410
SR R15,R15 PREPARE RETURN CODE REGISTER CON06420
TM FIGFLAG,MINORERR DID WE GET ANY MINOR ERROR ?? CON06430
BNO FIGCONTY NOPE, CONTINUE ON CON06440
LA R15,4 CON06450
FIGCONTY DS 0H CON06460
TM FIGFLAG,MINORERR DID WE GET A MAJOR ERROR ?? CON06470
BNO FIGCONTZ NOPE, CONTINUE ON CON06480
LA R15,8 CON06490
FIGCONTZ DS 0H CON06500
LM R0,R14,FIGSAVE RESTORE THE REST OF THE REGISTERS CON06510
BR R14 GOODBYE. CON06520
DEFGRAF DS 0D CON06530
DC CL8'CP' CON06540
DC CL8'DEFINE' CON06550
DC CL8'GRAF' CON06560
GRAFCUU DS CL8 CON06570
DC CL8'3270' CON06580
DC 8X'FF' CON06590
FIGSAVE DS 15F CONFIGR ROUTINE SAVE AREA CON06600
RCDCOUNT DS F MY OWN RECORD COUNTER SINCE I CAN'T FIND CMS'S CON06610
FIGTEMPA DS H TEMPORARY SAVE AREA CON06620
FIGTEMPB DS H ANOTHER ONE CON06630
MYFSCB FSCB 'ICATS CONFIG A',BUFFER=FIGINBUF,BSIZE=80 CON06640
FIGFLAG DC X'00' STATUS FLAG FOR CONFIGURATION ROUTINE CON06650
NOUSER EQU X'80' DON'T ACT ON USER STATEMENTS CON06660
NODISK EQU X'40' DON'T ACT ON DISK STATEMENTS CON06670
MAJORERR EQU X'20' I'VE GOTTEN A MAJOR ERROR CON06680
MINORERR EQU X'10' I'VE GOTTEN A MINOR ERROR CON06690
*********************************************************************** CON06700
* CONFIGURATION ROUTINE MESSAGES * CON06710
*********************************************************************** CON06720
FIGMSGA DC AL1(FIGMSGAE) CON06730
DC C'CANNOT FIND THE CONFIGURATION FILE ' CON06740
DC C'(''ICATS CONFIG A''). ' CON06750
DC C'CONFIGURATION WILL NOT TAKE PLACE.' CON06760
FIGMSGAE EQU *-FIGMSGA-1 CON06770
FIGMSGB DC AL1(FIGMSGBE) CON06780
DC C'INPUT UP TO NEXT UTS STATEMENT IS IGNORED' CON06790
FIGMSGBE EQU *-FIGMSGB-1 CON06800
FIGMSGC DC AL1(FIGMSGCE) CON06810
DC C'INPUT UP TO NEXT USER OR UTS STATEMENT IS IGNORED' CON06820
FIGMSGCE EQU *-FIGMSGC-1 CON06830
FIGMSGD DC AL1(FIGMSGDE) CON06840
DC C'THIS DISK STATEMENT WILL BE IGNORED' CON06850
FIGMSGDE EQU *-FIGMSGD-1 CON06860
FIGMSGE DC AL1(FIGMSGEE) CON06870
DC C'THIS TERMINAL STATEMENT WILL BE IGNORED' CON06880
FIGMSGEE EQU *-FIGMSGE-1 CON06890
FIGBUFL DC X'48' ONLY PARSE FIRST 72 BYTES OF INPUT RECORD CON06900
MYBUFR EQU * USE FIGINBUF FOR ANY ERROR MESSAGES ALSO CON06910
FIGINBUF DS CL80 INPUT BUFFER FOR THE CONFIGURATION FILE CON06920
MYPARM1 DS D CON06930
MYPARM2 DS D CON06940
MYPARM3 DS D CON06950
MYPARM4 DS D CON06960
MYPARM5 DS D CON06970
MYPARM6 DS D CON06980
MYPARM7 DS D CON06990
MYPARM8 DS D CON07000
MYPARM9 DS D CON07010
MYPARM10 DS D CON07020
MYPARM11 DS D CON07030
MYPARM12 DS D CON07040
MYPARM13 DS D CON07050
MYPARM14 DS D CON07060
MYPARM15 DS D CON07070
* CON07080
LTORG CON07090
ICDATA CON07100
END CON07110