TITLE 'ICATS ATTACH-A-UTS-TO-MYSELF ROUTINE' ATT00010 *********************************************************************** ATT00020 * * ATT00030 * MODULE NAME = ATTACH * ATT00040 * * ATT00050 * FUNCTION = GO THROUGH THE UTS CONTROL BLOCK CHAIN AND TRY TO * ATT00060 * VARY ON AND ATTACH EACH UTS IN THE CHAIN THAT'S * ATT00070 * NOT ALREADY ATTACHED. * ATT00080 * * ATT00090 * ENTRY POINTS = ATTACH * ATT00100 * * ATT00110 * LINKAGE = BALR R14,R15 FROM ANY ICATS PROGRAM. * ATT00120 * * ATT00130 * REGISTER CONTENTS UPON ENTRY = * ATT00140 * R2 = POINTS TO THE ICATS COMMON DATA AREA, AS ALWAYS. * ATT00150 * R14 = RETURN ADDRESS BACK TO CALLER. * ATT00160 * R15 = ENTRY POINT TO THIS MODULE. * ATT00170 * * ATT00180 * REGISTER USAGE = * ATT00190 * R0-R1 = USED TO PASS PARAMETERS TO SUBROUTINES. * ATT00200 * R2 = USED TO ADDRESS THE ICATS COMMON DATA AREA. * ATT00210 * R3 = FREE * ATT00220 * R4 = USED TO ADDRESS THE UTS CONTROL BLOCKS. * ATT00230 * R5-R9 = FREE * ATT00240 * R10 = WORK REGISTER * ATT00250 * R11 = MY BASE REGISTER * ATT00260 * R14 = MY RETURN ADDRESS WHEN I CALL SOMEBODY * ATT00270 * R15 = SUBROUTINE ADDRESS * ATT00280 * * ATT00290 * * ATT00300 * MODULE LOGIC: * ATT00310 * 1) GO THROUGH THE UTS CONTROL BLOCK CHAIN. * ATT00320 * IF THE ONLINE BIT IS OFF, THEN TRY TO ATTACH IT TO ME. * ATT00330 * A) ISSUE A CP VARY ON COMMAND. * ATT00340 * B) IF THAT WORKED, DO A CP ATTACH XXX * YYY. * ATT00350 * * ATT00360 * NORMAL EXIT = * ATT00370 * R15 = 0 * ATT00380 * * ATT00390 * EXTERNAL REFERENCES = NONE * ATT00400 * * ATT00410 * MACROS = ICDATA = ICATS COMMON DATA AREA * ATT00420 * ETTE = ENTER TRACE TABLE ENTRY SUBROUTINE * ATT00430 * * ATT00440 * CHANGE ACTIVITY * ATT00450 * DATE NAME REASON FOR CHANGE * ATT00460 * 04/25/83 RICK JASPER INITIAL PROGRAM CREATION * ATT00470 * * ATT00480 *********************************************************************** ATT00490 PRINT GEN,NODATA ATT00500 ATTACH CSECT ATT00510 USING ICDATA,R2 ADDRESS ICATS COMMON DATA AREA ATT00520 USING CBUTS,R4 ADDRESS UTS CONTROL BLOCK ATT00530 USING *,R15 USE R15 FOR NEXT INSTRUCTION ONLY ATT00540 STM R0,R14,ATTREGS SAVE ALL THE REGISTERS ATT00550 DROP R15 ATT00560 USING ATTACH,R11 SWITCH BASE REGISTER TO R11 ATT00570 LR R11,R15 ATT00580 L R4,CBFIRST GET ADDRESS OF FIRST UTSCB ATT00590 LTR R4,R4 IS IT NULL ?? SHOULDN'T BE. ATT00600 BNZ ATTLOOP NOPE, GOOD. GO GET THE UTS'S. ATT00610 ATTNONE LA R1,NONEMSG ATT00620 L R15,AMESSAGE GIVE A MESSAGE SAYING ATT00630 BALR R14,R15 THERE ARE NO UTS'S TO GET ATT00640 B ATTBYE BYE BYE. ATT00650 * ATT00660 ATTLOOP TM CBUTSFGA,ONLINE IS THIS UTS ONLINE ?? ATT00670 BNO GODOIT NO, GO TRY TO GET HIM ATTACHED ATT00680 ATTBACK L R4,CBUTSFP GET POINTER TO NEXT UTSCB. ATT00690 LTR R4,R4 ARE WE AT THE END OF THE CHAIN ?? ATT00700 BNE ATTLOOP NOPE, GO CHECK THIS UTSCB ATT00710 * ALL DONE. TIME TO RETURN. ATT00720 ATTBYE DS 0H ATT00730 LM R0,R14,ATTREGS ATT00740 SR R15,R15 RETURN CODE = 0 ATT00750 BR R14 BYE ATT00760 *********************************************************************** ATT00770 * R4 IS NOW POINTING TO A UTS CONTROL BLOCK THAT IS OFFLINE. * ATT00780 * ISSUE THE VARY ON AND ATTACH COMMANDS AND TRY TO GET THAT * ATT00790 * UTS ONLINE. * ATT00800 *********************************************************************** ATT00810 GODOIT DS 0H ATT00820 LH R1,CBUTSRAD CONVERT THE UTS'S REAL ADDRESS TO ATT00830 L R15,ACONEHEX EBCDIC AND PUT IT IN THE VARY ON ATT00840 BALR R14,R15 COMMAND ATT00850 STCM R1,B'0111',QA ATT00860 STCM R1,B'0111',VARYONA WHILE WE'VE GOT THE UTS'S REAL ATT00870 STCM R1,B'0111',ATTA ADDRESS IN EBCDIC, LET'S HIT ALL ATT00880 STCM R1,B'0111',FAIL1CUU THE OTHER PLACES THAT NEED IT. ATT00890 STCM R1,B'0111',FAILRCUU ATT00900 STCM R1,B'0111',GOODRCUU ATT00910 STCM R1,B'0111',FAIL3RAD ATT00920 STCM R1,B'0111',FAIL4RAD ATT00930 STCM R1,B'0111',FAIL5RAD ATT00940 LH R1,CBUTSVAD CONVERT THE UTS'S VIRTUAL ADDRESS ATT00950 L R15,ACONEHEX IN EBCDIC AND PUT IT IN THE ATT00960 BALR R14,R15 ATTACH COMMAND ATT00970 STCM R1,B'0111',ATTB ATT00980 STCM R1,B'0111',FAILVCUU FILL IN THE MESSAGES ALSO ATT00990 STCM R1,B'0111',GOODVCUU ATT01000 STCM R1,B'0111',FAIL3VAD ATT01010 STCM R1,B'0111',FAIL5VAD ATT01020 *********************************************************************** ATT01030 * SEE WHAT THE PRESENT STATUS OF THE UTS IS * ATT01040 *********************************************************************** ATT01050 LA R1,QCMD ATT01060 SVC 202 ATT01070 DC AL4(*+4) ATT01080 RDTERM MYTEXT ATT01090 STC R0,MYTEXTL ATT01100 LA R0,MYPARM1 ATT01110 LA R1,MYTEXTL ATT01120 L R15,APARSE ATT01130 BALR R14,R15 ATT01140 * MYPARM1-MYPARM15 = RESULT OF THE QUERY XXX COMMAND ATT01150 * POSSIBLE RESULTS ARE (ANYTHING ELSE ASSUME DOES NOT EXIST) ATT01160 * MYPARM1 MYPARM2 MYPARM3 MYPARM4 MYPARM5 MYPARM6 MYPARM7 ATT01170 * * DEV XXX OFFLINE ATT01180 * * DEV XXX FREE ATT01190 * * DEV XXX ATTACH TO ICATS YYY ATT01200 * * DMKCPT04 DEV XXX DOES NOT EXIST ATT01210 * * DMKCQG02 VADDR MISSING OR INVALID ATT01220 CLC MYPARM4,=CL8'OFFLINE' ATT01230 BE DOITCONA IF OFFLINE, VARY IT ON THEN ATTACH ATT01240 CLC MYPARM4,=CL8'FREE' ATT01250 BE DOITCONA IF FREE, VARY ON ANYWAY, THEN ATTACH ATT01260 CLC MYPARM4,=CL8'ATTACH' ATT01270 BNE DOITERRB IF NOT ATTACHED, IT'S AN ERROR ATT01280 CLC MYPARM6,MYVMUID SEE IF IT'S ATTACHED TO ME OR NOT ATT01290 BNE DOITERRA IF ATTACHED TO SOMEONE ELSE, ERROR ATT01300 CLC MYPARM7(3),GOODVCUU SEE IF IT'S ATTACHED AS I WANT IT ATT01310 BE DOITCONC IF SO, DON'T VARY ON OR ATTACH - ATT01320 * IT'S ALREADY DONE. JUST TELL CMS ATT01330 * WE WANT TO HANDLE THE INTERRUPTS. ATT01340 * ATT01350 *********************************************************************** ATT01360 * THE DEVICE IS ATTACHED TO SOMEBODY ELSE OR IT'S ALREADY * ATT01370 * ATTACHED TO ME AS SOME OTHER DEVICE. * ATT01380 *********************************************************************** ATT01390 DOITERRA DS 0H ATT01400 MVC FAIL5UID,MYPARM6 MOVE OWNER'S VM USER ID ATT01410 MVC FAIL5UVA,MYPARM7 MOVE HIS VIRTUAL ADDRESS ATT01420 LA R1,FAIL5MSG SAY CAN'T ATTACH XXX AS YYY, ATT01430 B DOITMSG IT'S ATTACHED TO USERID AS ZZZ ATT01440 *********************************************************************** ATT01450 * THE STATUS OF THE UTS IS SUCH THAT WE CAN'T ATTACH IT TO OURSELVES ATT01460 * THE WAY WE WANT IT. GIVE A MESSAGE SAYING SOMETHING'S WRONG. ATT01470 *********************************************************************** ATT01480 DOITERRB DS 0H ATT01490 LA R1,FAIL4MSG ATT01500 B DOITMSG ATT01510 *********************************************************************** ATT01520 * DO THE VARY ON AND ATTACH COMMANDS * ATT01530 *********************************************************************** ATT01540 DOITCONA LA R1,VARYCMD ATT01550 SVC 202 ATT01560 DC AL4(*+4) ATT01570 LTR R15,R15 ATT01580 BZ DOITCONB ATT01590 LA R1,FAIL1MSG SAY SORRY, XXX FAILED TO COME ONLINE ATT01600 B DOITMSG ATT01610 DOITCONB DS 0H ATT01620 LA R1,ATTCMD ATT01630 SVC 202 ATT01640 DC AL4(*+4) ATT01650 LA R1,FAIL2MSG ASSUME IT FAILED ATT01660 LTR R15,R15 DID IT ?? ATT01670 BNZ DOITMSG YEP, I KNEW IT. ATT01680 * ATT01690 * NOW THE UTS IS VARIED ONLINE AND ATTACHED TO ME. ATT01700 * TELL CMS THAT I WANT TO HANDLE ITS INTERRUPTS. ATT01710 DOITCONC MVC HNDLABEL+16(4),CBUTSUID ATT01720 MVC HNDLABEL+20(4),=V(UTSIOIH) ATT01730 MVC HNDLABEL+24(2),CBUTSVAD ATT01740 CNOP 0,4 ATT01750 HNDLABEL HNDINT SET,(JUNK,ATTACH,444,ASAP) ATT01760 LA R1,FAIL3MSG ATT01770 LTR R15,R15 INSURE THAT HNDINT WORKED OK ATT01780 BNZ DOITMSG ATT01790 *-------------------------------------------------------------* ATT01800 * GET THE TIME AND DATE FROM CP * ATT01810 *-------------------------------------------------------------* ATT01820 LA R1,CPDATA ADDRESS OF DATA FROM DIAG ATT01830 DIAG R1,R0,X'000C' REQUEST DATE AND TIME FROM CP ATT01840 *-------------------------------------------------------------* ATT01850 * CPDATA IS NOW IN THE FORMAT OF * ATT01860 * DC CL8'MM/DD/YY' * ATT01870 * DC CL8'HH:MM:SS' * ATT01880 * DS 2D THE REST IS JUNK * ATT01890 *-------------------------------------------------------------* ATT01900 MVC CBUTSDAT,CPDATA ATT01910 MVC CBUTSTIM,CPDATA+8 ATT01920 LA R1,GOODMSG DONE AT LAST. GIVE GOOD MESSAGE ATT01930 OI CBUTSFGA,ONLINE MARK THIS UTS AS BEING ONLINE ATT01940 DOITMSG EQU * ATT01950 L R15,AMESSAGE ATT01960 BALR R14,R15 ATT01970 B ATTBACK ATT01980 * ATT01990 CPDATA DS 4D ATT02000 QCMD DS 0D MUST BE DOUBLEWORD ALIGNED ATT02010 DC CL8'CPCOMMT' ATT02020 DC CL8'LIFO' ATT02030 DC CL8'Q' ATT02040 QA DC CL8' ' ATT02050 DC 8X'FF' ATT02060 * ATT02070 VARYCMD DS 0D MUST BE DOUBLEWORD ALIGNED ATT02080 DC CL8'CP' ATT02090 DC CL8'VARY' ATT02100 DC CL8'ON' ATT02110 VARYONA DC CL8' ' ATT02120 DC 8X'FF' ATT02130 * ATT02140 ATTCMD DS 0D MUST BE DOUBLEWORD ALIGNED ATT02150 DC CL8'CP' ATT02160 DC CL8'ATTACH' ATT02170 ATTA DC CL8' ' ATT02180 DC CL8'*' ATT02190 ATTB DC CL8' ' ATT02200 DC 8X'FF' ATT02210 WORKA DS D WORK AREAS FOR UNPACKING ATT02220 WORKB DS D ATT02230 MYPARM1 DS D ATT02240 MYPARM2 DS D ATT02250 MYPARM3 DS D ATT02260 MYPARM4 DS D ATT02270 MYPARM5 DS D ATT02280 MYPARM6 DS D ATT02290 MYPARM7 DS D ATT02300 MYPARM8 DS D ATT02310 MYPARM9 DS D ATT02320 MYPARM10 DS D ATT02330 MYPARM11 DS D ATT02340 MYPARM12 DS D ATT02350 MYPARM13 DS D ATT02360 MYPARM14 DS D ATT02370 MYPARM15 DS D ATT02380 ATTREGS DS 15F ATT02390 NONEMSG DC AL1(NONEMSGE) ATT02400 DC C'SORRY, BUT THERE ARE NO UTS''S TO GET' ATT02410 NONEMSGE EQU *-NONEMSG-1 ATT02420 FAIL1MSG DC AL1(FAIL1EQU) ATT02430 DC C'SORRY, BUT ' ATT02440 FAIL1CUU DC CL3' ' ATT02450 DC C' FAILED TO COME ONLINE' ATT02460 FAIL1EQU EQU *-FAIL1MSG-1 ATT02470 FAIL2MSG DC AL1(FAIL2EQU) ATT02480 DC C'SORRY, ' ATT02490 FAILRCUU DC CL3' ' ATT02500 DC C' GOT VARIED ONLINE OK, BUT FAILED TO ATTACH AS ' ATT02510 FAILVCUU DC CL3' ' ATT02520 FAIL2EQU EQU *-FAIL2MSG-1 ATT02530 FAIL3MSG DC AL1(FAIL3EQU) ATT02540 DC C'SORRY, ' ATT02550 FAIL3RAD DC CL3' ' ATT02560 DC C' GOT VARIED ONLINE AND ATTACHED OK AS ' ATT02570 FAIL3VAD DC CL3' ' ATT02580 DC C', BUT THE HNDINT MACRO FOR IT FAILED' ATT02590 FAIL3EQU EQU *-FAIL3MSG-1 ATT02600 FAIL4MSG DC AL1(FAIL4EQU) ATT02610 DC C'SORRY, GOT A BAD ERROR WITH THE CP QUERY ' ATT02620 FAIL4RAD DC CL3' ' ATT02630 DC C' COMMAND' ATT02640 FAIL4EQU EQU *-FAIL4MSG-1 ATT02650 FAIL5MSG DC AL1(FAIL5EQU) ATT02660 DC C'SORRY, CAN''T ATTACH ' ATT02670 FAIL5RAD DC CL3' ' ATT02680 DC C' TO ME AS ' ATT02690 FAIL5VAD DC CL3' ' ATT02700 DC C', IT''S ATTACHED TO ' ATT02710 FAIL5UID DC CL8' ' ATT02720 DC C' AS ' ATT02730 FAIL5UVA DC CL3' ' ATT02740 FAIL5EQU EQU *-FAIL5MSG-1 ATT02750 GOODMSG DC AL1(GOODMSGE) ATT02760 GOODRCUU DC CL3' ' ATT02770 DC C' IS ONLINE AND ATTACHED AS ' ATT02780 GOODVCUU DC CL3' ' ATT02790 GOODMSGE EQU *-GOODMSG-1 ATT02800 MYTEXTL DS X'00' ATT02810 MYTEXT DS CL130 ATT02820 LTORG ATT02830 ICDATA ATT02840 END ATT02850