ibm:vm370-lib:cms:dmssct.assemble_src
Table of Contents
DMSSCT Source
References
- Fixes Applied : 1
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [R09010DS]
Source Listing
- DMSSCT.ASSEMBLE.txt
- SCT TITLE 'DMSSCT (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- *. 00003000
- * 00004000
- * 00005000
- * MODULE NAME: 00006000
- * 00007000
- * DMSSCT (SOCNTRL) 00008000
- * 00009000
- * FUNCTION: 00010000
- * 00011000
- * TO HANDLE OS NOTE, POINT, CHECK AND FIND (TYPE C) MACROES 00012000
- * DMSSCT ALSO HANDLES QSAM I/O ERRORS FOR DMSSQS 00013000
- * AND PDS (PARTITIONED DATA SET) AND KEYS ERRORS FOR 00014000
- * DMSSOP. 00015000
- * 00016000
- * ATTRIBUTES: 00017000
- * 00018000
- * REENTRANT, NUCLEUS RESIDENT 00019000
- * 00020000
- * ENTRY POINTS: 00021000
- * 00022000
- * DMSSCTNP - OS NOTE, POINT OR FIND (TYPE C) MACRO 00023000
- * DMSSCTCK - OS CHECK MACRO 00024000
- * DMSSCTCE - DMSSQS, DMSSOP 00025000
- * 00026000
- * ENTRY CONDITIONS: 00027000
- * 00028000
- * DMSSCTNP - OS NOTE, POINT OR FIND (TYPE C) MACRO 00029000
- * DMSSCTCK - OS CHECK MACRO 00030000
- * DMSSCTCE - R2 - A(DCB) 00031000
- * R6 - A(DECB) 00032000
- * R11 - A(FCB) 00033000
- * R12 - A(DMSSCTCK) 00034000
- * R13 - A(SAVE AREA) 00035000
- * 00036000
- * 00037000
- * EXIT CONDITIONS: 00038000
- * 00039000
- * NOTE, POINT AND FIND - 00040000
- * CONTROL IS RETURNED TO THE USER 00041000
- * 00042000
- * CHECK AND DMSSCTCE - 00043000
- * IF NO ERROR FLAGS ARE SET IN THE ECB OR DECB, CONTROL 00044000
- * IS RETURNED TO THE USER. IF THE ECB INPUT 00045000
- * END-OF-DATA (EODAD) FLAG IS SET, CONTROL IS GIVEN TO 00046000
- * THE EODAD ROUTINE. IF OTHER DECB OR ECB ERROR FLAGS 00047000
- * ARE SET, THE ERROR ANALYSIS (SYNAD) ROUTINE IS GIVEN 00048000
- * CONTROL, OR, IF NO ERROR ANALYSIS ROUTINE IS 00049000
- * PROVIDED, ERROR MSG DMSSCT120S IS TYPED OUT AND 00050000
- * THE TASK IS ABNORMALLY TERMINATED. 00051000
- * 00052000
- * CALLS TO OTHER ROUTINES: 00053000
- * 00054000
- * NOTE, POINT AND FIND - DMSROS 00055000
- * CHECK AND DMSSCTCE - EODAD ROUTINE, SYNAD ROUTINE, DMSSVT, 00056000
- * DMSSAB, DMSERR 00057000
- * 00058000
- * EXTERNAL REFERENCES: 00059000
- * 00060000
- * IHADECB, IHADCB, OPSECT, NUCON, FCBSECT 00061000
- * 00062000
- * TABLES/WORKAREAS: 00063000
- * 00064000
- * NONE 00065000
- * 00066000
- * REGISTER USAGE: 00067000
- * 00068000
- * NOTE AND POINT - R0,R3-R10,R10,R12,R14 - WORK 00069000
- * R1 - A(DECB) 00070000
- * R2 - A(DCB) 00071000
- * R11 - A(FCB) 00072000
- * R13 - A(SAVE AREA) 00073000
- * R15 - A(DMSSCT) 00074000
- * 00075000
- * FIND - R12 - A(DMSSCT) 00076000
- * R15 - A(FCB) 00077000
- * R1 - A(DCB) 00078000
- * 00079000
- * CHECK AND DMSSCTCE - R0,R1,R3-R5,R7-R10,R14,R15-WORK 00080000
- * R2 - A(DCB) 00081000
- * R6 - A(DECB) 00082000
- * R11 - A(FCB) 00083000
- * R12 - A(DMSSCTCK) 00084000
- * R13 - A(SAVE AREA) 00085000
- * 00086000
- * OPERATION OF DMSSCT MACRO SIMULATION ROUTINES: 00087000
- * 00088000
- * *NOTE (BSAM, BDAM) 00089000
- * 00090000
- * OPERATION: 00091000
- * 00092000
- * UPON ENTRY TO NOTE, A CHECK IS MADE TO DETERMINE IF 00093000
- * THE DCB REFERS TO AN OS DISK. IF IT DOES, DMSROS IS 00094000
- * CALLED TO GET THE CURRENT TTR AND CONTROL IS RETURNED 00095000
- * TO THE USER. OTHERWISE, A CHECK IS MADE TO SEE IF A POINT 00096000
- * WAS JUST ISSUED. IF NOT, THE ITEM NUMBER OF NEXT 00097000
- * RECORD TO BE PROCESSED IS LOADED FROM FCBITEM INTO 00098000
- * REGISTER 1, REGISTER 1 IS DECREMENTED BY 1 AND 00099000
- * CONTROL IS RETURNED TO THE USER. IF A POINT WAS JUST 00100000
- * ISSUED, REGISTER 1 IS LOADED WITH THE VALUE IN 00101000
- * DCBFDAD AND CONTROL IS RETURNED TO THE USER. 00102000
- * 00103000
- * *CHECK (BDAM, BSAM, BPAM) 00104000
- * 00105000
- * OPERATION: 00106000
- * 00107000
- * CHECK IS CALLED BY DMSSQS, DMSSOP, AND OS CHECK MACROES. 00108000
- * UPON ENTRY, THE 00109000
- * DECB OR ECB IS TESTED FOR I/O ERRORS. IF THERE ARE 00110000
- * NO ERRORS, CONTROL IS RETURNED TO THE USER. IF AN 00111000
- * ECB END-OF-DATA-SET FLAG IS ON, THE EODAD ROUTINE IS 00112000
- * GIVEN CONTROL. IF AN EODAD ROUTINE IS NOT SPECIFIED OR 00113000
- * IF THE ERROR WAS OTHER THAN END OF FILE, THE SYNAD 00114000
- * ROUTINE IS GIVEN CONTROL. IF NO SYNAD ROUTINE IS 00115000
- * SPECIFIED, THE SYNADAF, DMSERR, AND SYNADRLS MACROES 00116000
- * ARE USED TO TYPE OUT ERROR MSG. DMSSCT120S AND THE TASK IS 00117000
- * ABENDED WITH A SYSTEM CODE. 00118000
- * 00119000
- * *POINT (BSAM, BDAM, BPAM) 00120000
- * 00121000
- * OPERATION: 00122000
- * 00123000
- * THE POINT ROUTINE IS CALLED BY THE USER. UPON ENTRY, 00124000
- * A CHECK IS MADE TO DETERMINE IF THE DCB REFERS TO 00125000
- * AN OS DISK. IF IT DOES, DMSROS IS CALLED TO RESET 00126000
- * THE CURRENT TTR, CKCONCAT IS CALLED AND CONTROL IS 00127000
- * RETURNED TO THE CALLER. OTHERWISE, 00128000
- * THE RELATIVE BLOCK ADDRESS IS LOADED INTO A REGISTER 00129000
- * AND RIGHT ADJUSTED. IF THE RIGHTMOST BYTE OF THE 00130000
- * BLOCK ADDRESS IS NOT SET TO ONE, A ONE IS SUBTRACTED 00131000
- * FROM THE REGISTER. THE CONTENTS OF THE REGISTER ARE 00132000
- * STORED IN THE LAST TWO BYTES OF DCBFDAD AND A 'P' IS 00133000
- * STORED IN THE FIRST BYTE. THEN CKCONCAT IS CALLED AND 00134000
- * CONTROL IS RETURNED TO THE USER. 00135000
- * 00136000
- * CKCONCAT: UPON ENTRY, A CHECK IS MADE TO DETERMINE 00137000
- * IF THE FCB MACLIB CONCAT BIT IS ON. IF NOT, CONTROL IS 00138000
- * RETURNED TO THE CALLER. IF IT IS, DCBRELAD+3 IS USED 00139000
- * TO SET THE CORRECT OS FST OR OS PDS POINTER IN THE 00140000
- * FCB AND CONTROL IS RETURNED TO THE CALLER. 00141000
- * 00142000
- * *FIND (TYPE C) (BPAM) 00143000
- * 00144000
- * OPERATION: 00145000
- * 00146000
- * FIND (TYPE C) MOVES SPECIFIED TTR TO THE ITEM NO. FIELD 00147000
- * OF THE FCB AND CALLS CKCONCAT. THEN IF THE DCB DOES 00148000
- * NOT REFER TO AN OS DISK, CONTROL IS RETURNED TO THE 00149000
- * CALLER. IF THE DCB REFERS TO AN OS DISK, DMSROS IS 00150000
- * CALLED TO UPDATE THE TTR AND CONTROL IS RETURNED TO 00151000
- * THE CALLER. 00152000
- * 00153000
- * 00154000
- *. 00155000
- * 00156000
- EJECT 00157000
- * 00158000
- * 00159000
- * 00160000
- DMSSCT START 0 00161000
- ENTRY DMSSCTNP,DMSSCTCK,DMSSCTCE 00162000
- SPACE 00163000
- USING IHADECB,R1 00164000
- USING IHADCB,R2 00165000
- USING OPSECT,R8 00166000
- USING NUCON,R0 00167000
- USING FCBSECT,R11 00168000
- USING DMSSCT,R12 BASE REG V0313 00169000
- USING DMSSCT,R15 00170000
- EJECT 00171000
- * 00172000
- * NOTE/POINT COMMON ENTRY 00173000
- * 00174000
- DMSSCTNP DS 0H NOTE: 0(R15) 00175000
- B NOTE 00176000
- CR R1,R0 IS THIS A CALL FOR FIND 00177000
- BE FINDC YES 00178000
- DROP R15 USE R12 AS BASE REG V0313 00179000
- * 00180000
- POINT STM R14,R12,12(R13) SAVE REGS 00181000
- L R12,16(,R13) SETUP BASE REG V0313 00182000
- LR R2,R1 GET V(DCB) 00183000
- L R11,DCBDEBAD GET ADDR OF DEB 00184000
- SH R11,=AL2(IHADEB-FCBINIT) GET ADDR OF FCB 00185000
- LA R5,NTPT2 GET RETURN ADDR @V201122 00186000
- TM FCBINIT,FCBOS IS THIS AN OS DATA SET @V201122 00187000
- BO CALLROS YES, GO TO DMSROS @V201122 00188000
- LR R4,R0 00189000
- L R5,0(R4) GET ITEM NO. 00190000
- CLI FCBDEV,FCBTAP IS DEVICE TAPE 00191000
- BE LESS1 YES, THEN DON'T SHIFT TTR 00192000
- SRL R5,8 00193000
- CLI 3(R4),X'01' SHOULD WE ADD ONE 00194000
- BNE LESS1 NO, DON'T ADD ONE P3036 00195000
- AH R5,FCBCOUT YES, ADD ONE BLOCK TO PTR P3036 00196000
- LESS1 BCTR R5,R0 SUBTRACT ONE FROM TTR 00197000
- STPTR STH R5,FCBOP ALLIGN ITEM NO. 00198000
- MVC DCBFDAD+6(2),FCBOP MOVE IT INTO DCBFDAD 00199000
- MVI DCBFDAD,C'P' INDICATE POINT 00200000
- NI DCBOFLGS,X'7F' 00201000
- BAL R14,CKCONCAT CHECK FOR PDS CONCATONATION V0313 00202000
- B NTPT2 RETURN 00203000
- NOTE DS 0H 00204000
- STM R14,R12,12(R13) SAVE REGS IN CALLERS SAVEAREA 00205000
- L R12,16(,R13) SETUP BASE REG V0313 00206000
- * 00207000
- * SOME HOUSEKEEPING 00208000
- * 00209000
- LR R2,R1 GET V(DCB) 00210000
- L R11,DCBDEBAD GET ADDR OF DEB 00211000
- SH R11,=AL2(IHADEB-FCBINIT) GET ADDR OF FCB 00212000
- * EXECUTE "NOTE": RECORD PRESENT I/O POINTERS 00213000
- SR R0,R0 INDICATE NOTE @V201122 00214000
- LA R5,SETR1 SET RETURN ADDRESS @V201122 00215000
- TM FCBINIT,FCBOS IS THIS AN OS FCB @V201122 00216000
- BNO GETITEM NO, DON'T GO TO DMSROS @V201122 00217000
- CALLROS DMSKEY NUCLEUS @V201122 00218000
- L R15,ADMSROS GET ADDRESS OF DMSROS @V201122 00219000
- BAL R14,16(R15) BAL TO DMSROS @V201122 00220000
- DMSKEY RESET @V201122 00221000
- BR R5 RETURN TO CALLER @V201122 00222000
- GETITEM EQU * GET ITEM NO. @V201122 00223000
- LH R0,FCBITEM GET FCBITEM 00224000
- N R0,HALFWORD 00225000
- CLI DCBFDAD,C'P' WAS A POINT ISSUED 00226000
- BNE SETCOUT NO, GO SAVE ITEM NO. 00227000
- CLC DCBFDAD+6(2),=XL2'FFF8' WAS THIS POINT ISSUED BY EOB 00228000
- BE SETCOUT YES, THEN IGNORE 00229000
- MVC FCBOP+1(3),DCBFDAD+5 ALLIGN ITEM NO. 00230000
- LH R3,FCBOP+2 GET ITEM NO. 00231000
- LA R0,1(R3) ADD ONE TO IT 00232000
- SETCOUT LR R3,R0 SAVE ITEM NO. 00233000
- SH R0,FCBCOUT GET ITEM NO. OF LAST BLK 00234000
- BNM ALIGN BRANCH ZERO OR POSITIVE @VA09010 00235000
- LR R0,R3 DO NOT ADJUST FOR LAST BLK 00236000
- ALIGN CLI FCBDEV,FCBTAP IS DEVICE TAPE 00237000
- BE SETR1 YES, THEN SET R1 IN SAVE AREA 00238000
- SLL R0,8 SHIFT TTR LEFT 8 FOR DISK 00239000
- SETR1 ST R0,24(,R13) SET R1 IN SAVE AREA 00240000
- NTPT2 EQU * EXIT FROM 'NOTE' OR 'POINT' ... 00241000
- ST R13,FCBR13 00242000
- LM R14,R12,12(R13) RESTORE REGS 00243000
- BR 14 RETURN 00244000
- HALFWORD DC F'65535' 00245000
- EJECT 00246000
- * "CHECK": DETERMINE STATUS OF PREVIOUS READ/WRITE OPERATION 00247000
- * 00248000
- DMSSCTCK DS 0H 00249000
- STM R14,R12,12(R13) SAVE REGS IN CALLER SAVEAREA 00250000
- USING DMSSCTCK,R12 00251000
- USING IHADECB,R6 00252000
- SPACE 00253000
- SPACE 00254000
- LR R12,R15 SETUP BASE REG 00255000
- LR R6,R1 SETUP DECB REG 00256000
- L R2,DECDCBAD GET V(DCB) 00257000
- CK1 TM DECSDECB,X'40' TEST ECB COMPLETION BIT 00258000
- BZ POSTERR SET ERROR BYTE 00259000
- CLI DECSDECB+3,0 TEST FOR I/O ERRORS 00260000
- BNE CK2 ERRORS. GOSH! 00261000
- CKRET EQU * 00262000
- LM R14,R12,12(R13) RESTORE USER6S REGS 00263000
- BR R14 RETURN TO USER 00264000
- POSTERR MVI DECSDECB+3,254 SET NOT COMPLETE ERROR CODE 00265000
- CK2 L R11,DCBDEBAD GET ADDR OF DEB IN FCB 00266000
- SH R11,=AL2(IHADEB-FCBINIT) GET ADDR OF FCB 00267000
- L R4,DECIOBPT GET ADDR OF IOB 00268000
- SH R4,=H'8' GET ADDR OF IOB PREFIX 00269000
- MVC IOBIOFLG(1),IOBBFLG(R4) GET PROPER IOB FLG 00270000
- DMSSCTCE EQU * 00271000
- LA R7,64 SET OUTPUT CODE 00272000
- TM IOBIOFLG,IOBOUT OUTPUT? 00273000
- BO GETSYNAD YES, USE ERROR EXIT 00274000
- LA R7,128 SET INPUT CODE 00275000
- CLI DECSDECB+3,X'0C' END-OF-FILE? 00276000
- BNE GETSYNAD PRINT I/O ERROR MSG 00277000
- L R1,DCBEODAD GET ADDR OF EOF RTN 00278000
- LA R15,0(R1) CLEAR HIGH ORDER BYTE 00279000
- CH R15,=H'1' IS EOF RTN SPECIFIED ? 00280000
- BNH GETSYNAD NO, ABEND V0277 00281000
- LM R0,R12,20(R13) RESTORE REGS V0277 00282000
- BALR R14,R15 CALL EXIT ROUTINE V0277 00283000
- LM R14,R12,12(R13) RESTORE V0277 00284000
- BR R14 RETURN TO CALLER V0277 00285000
- GETSYNAD L R1,DCBSYNAD GET SYNAD ADDR 00286000
- TM FCBIOSW,FCBCLOSE WAS ERROR DURING CLOSE @VA06290 00287000
- BO CKABEND YES, THEN DIE @VA06290 00288000
- LA R15,0(R1) ZERO HIGH ORDER BYTE @VA07120 00289000
- CH R15,=H'1' IS SYNAD ROUTINE SPECIFIED 00290000
- BH CKTYPE NO, ABEND 00291000
- CKABEND LA R15,SYNABEND GET ADDR OF ABEND ROUTINE 00292000
- CKTYPE ST R6,20(R13) SET R0 TO A(DECB) 00293000
- TM DCBCIND2,1 BSAM? 00294000
- BZ SYNADRTN YES, CONTINUE 00295000
- L R8,AOPSECT GET ADDR OF CMSOP 00296000
- XC 0(32,R8),0(R8) CLEAR FIRST 32 BYTES 00297000
- MVC CMSOP(4),DECSDECB SETUP STATUS BITS 00298000
- LA R9,16(R8) GET ADDR OF FAKE CCW 00299000
- ST R9,FILENAME USE IT FOR ADDR OF CCW 00300000
- MVC 14(2,R8),IOBCSW+6 SET LENGTH IN CSW 00301000
- ST R8,20(R13) SET R0 TO A(STATUS BITS) 00302000
- MVI 20(R13),8 SET DISPLACEMENT TO CCW ADDR 00303000
- SYNADRTN ST R2,24(R13) SET DCB ADDR IN REG1 SAVE AREA 00304000
- STC R7,24(R13) SET I/O CODE IN SAVE AREA 00305000
- CLC DECSDECB+1(2),=XL2'2000' IS THIS NO SPACE FOUND 00306000
- BNE ERREXIT NO, THEN CONTINUE 00307000
- MVI 24(R13),X'41' YES, THEN SIGNAL NO SPACE FOUND 00308000
- ERREXIT EQU * 00309000
- LM R0,R12,20(R13) RESTORE REGS 00310000
- BALR R14,R15 CALL EXIT ROUTINE 00311000
- LM R14,R1,12(R13) RESTORE BDAM REGS V0213 00312000
- TM X'1A'(R1),DA DCBDSORG= DA SPECIFIED V0300 00313000
- BCR 1,R14 YES, RETURN TO CALLER V0213 00314000
- LM R14,R12,12(R13) RESTORE REGS 00315000
- BR R14 RETURN TO USER 00316000
- SYNABEND BALR R14,R0 SETUP BASE REG 00317000
- USING *,R14 00318000
- SYNADAF ACSMETH=BSAM 00319000
- LA R4,54(R1) SET ADDR OF MSG. 00320000
- DMSERR MF=I,NUM=120,LET=S,SUB=(CHARA,(R4)), X00321000
- TEXT='.............................' 00322000
- SYNADRLS 00323000
- ABEND 1 00324000
- DROP R14 00325000
- EJECT 00326000
- FINDC STM R14,R12,12(R13) SAVE REGS 00327000
- LR R12,R15 SETUP BASE REG 00328000
- USING DMSSCT,R12 00329000
- LR R2,R1 SET DCB BASE REG V0313 00330000
- L R11,DCBDEBAD GET DEB ADDRESS V0313 00331000
- SH R11,=AL2(IHADEB-FCBINIT) GET FCB ADDRESS V0313 00332000
- MVC FCBITEM(2),DCBRELAD+1 SET ITEM NO. V0313 00333000
- BAL R14,CKCONCAT CHECK FOR CONCATONATION V0313 00334000
- TM FCBINIT,FCBOS OS FCB? @V201122 00335000
- BNO FINDCRET NO, RETURN TO CALLER @V201122 00336000
- L R6,DCBRELAD SAVE CONCAT BYTE @V201122 00337000
- MVI DCBRELAD+3,0 SETUP FOR POINT @V201122 00338000
- LA R0,DCBRELAD GET ADDR OF TTR @V201122 00339000
- BAL R5,CALLROS BRANCH TO OS POINT @V201122 00340000
- STC R6,DCBRELAD+3 RESTORE CONCAT @V201122 00341000
- FINDCRET LM R14,R12,12(R13) RESTORE REGS @V201122 00342000
- SR R15,R15 RETURN 00343000
- BR R14 RETURN TO CALLER 00344000
- CKCONCAT TM FCBINIT,FCBCATML CONCATONATION SPECIFIED V0313 00345000
- BCR 14,R14 NO, RETURN V0313 00346000
- SR R6,R6 ZERO REG FOR INSERT V0313 00347000
- IC R6,DCBRELAD+3 GET CONCAT NO. V0313 00348000
- NI FCBINIT,255-FCBOS TURN OFF FCB OS SWITCH @V201122 00349000
- L R15,MACDIRC(R6) GET ADDRESS OF FCB OR PDS @V201122 00350000
- LTR R15,R15 OS FCB? @V201122 00351000
- BNM GETMACNM NO, GET MACLIB NAME @V201122 00352000
- OI FCBINIT,FCBOS TURN ON FCB OS SWITCH @V201122 00353000
- ST R15,FCBOSFST SET OS FST POINTER @V201122 00354000
- BR R14 RETURN TO CALLER @V201122 00355000
- GETMACNM SLL R6,1 MULTIPLY BY 2 @V201122 00356000
- ST R15,FCBPDS SET NEW PDS ADDRESS @V201122 00357000
- LA R5,MACLIBL(R6) GET ADDR OF NAME IN MAC LIST @V201122 00358000
- MVC FCBDSNAM(8),0(R5) SET FCB TO NEW PDS NAME V0313 00359000
- BR R14 RETURN TO CALLER V0313 00360000
- EJECT 00361000
- ********************************************************************** 00362000
- * 00363000
- * DCB LAYOUT 00364000
- * 00365000
- ********************************************************************** 00366000
- DCBD DSORG=(PS) 00367000
- EJECT 00368000
- NUCON 00369000
- CMSCB 00370000
- IO 00371000
- EJECT 00372000
- REGEQU 00373000
- UTSAV EQU IOBCSW 00374000
- NOTEWD EQU SAVER14 00375000
- END 00376000
ibm/vm370-lib/cms/dmssct.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator