ibm:vm370-lib:cms:dmsstt.assemble_src
Table of Contents
DMSSTT Source
References
- Fixes Applied : 4
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [HRC105DS]
Source Listing
- DMSSTT.ASSEMBLE.txt
- STT TITLE 'DMSSTT (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- *. 00003000
- * 00004000
- * 00005000
- * 00006000
- * 00007000
- * MODULE NAME: 00008000
- * 00009000
- * DMSSTT 00010000
- * 00011000
- * FUNCTION: 00012000
- * 00013000
- * TO LOCATE THE FILE STATUS TABLE ENTRY FOR A GIVEN 00014000
- * FILE, AND IF FOUND TO PROVIDE THE CALLER WITH A COPY 00015000
- * THEREOF. 00016000
- * 00017000
- * ATTRIBUTES: 00018000
- * 00019000
- * NUCLEUS RESIDENT, REENTRANT 00020000
- * 00021000
- * ENTRY POINTS: 00022000
- * 00023000
- * DMSSTTE - (STATE) 00024000
- * DMSSTTW - (STATEW) 00025000
- * 00026000
- * ENTRY CONDITIONS: 00027000
- * 00028000
- * LA R1, PLIST R1 MUST POINT TO P-LIST AS USUAL 00029000
- * 00030000
- * THEN EITHER 00031000
- * 00032000
- * SVC X'CA' CALL STATE VIA SVC 00033000
- * DC AL4(NOT FOUND) ERROR-RETURN (IF NOT FOUND) 00034000
- * 00035000
- * OR 00036000
- * 00037000
- * L R15, ASTATE WHERE ASTATE=V(STATE) 00038000
- * BALR R14,R15 CALL STATE VIA BALR 00039000
- * BNZ NOTFOUND TRANSFER IF ERROR (NOT FOUND) 00040000
- * 00041000
- * 00042000
- * R1 MUST POINT TO STATE PARAMETER LIST: 00043000
- * 00044000
- * DS 0F 00045000
- * PLIST DC CL8'STATE' (NOTE-IMMATERIAL IF CALLED BY BALR) 00046000
- * DC CL8' ' FILENAME 00047000
- * DC CL8' ' FILETYPE 00048000
- * DC CL2' ' FILEMODE 00049000
- * DC CL2' ' NOT USED 00050000
- * ADCON DC A(*-*) ADDRESS OF COPY OF FST ENTRY RETURNED 00051000
- * HERE IF FILE WAS FOUND. IF THIS V0409 00052100
- * CONTAINS **** AT ENTRY TO STATE V0409 00052200
- * THEN * WILL BE INVALID CHAR. IN V0409 00052300
- * FILENAME OR FILETYPE V0409 00052400
- * 00053000
- * EXIT CONDITIONS: 00054000
- * 00055000
- * FILE FOUND 00056000
- * R15=0 (AND CONDITION-CODE=0) 00057000
- * ALSO,ADCON IN P-LIST FILLED IN TO V(STATEFST) 00058000
- * 00059000
- * FILE NOT FOUND 00060000
- * R15=20 ILLEGAL CHARACTER IN FILEID 00061000
- * 24 INVALID FILE MODE 00062000
- * INVALID PARAMETER (TERMINAL REQUESTS ONLY) 00063000
- * INCOMPLETE FILEID (TERMINAL REQUESTS ONLY) 00064000
- * 28 FILE NOT FOUND 00065000
- * 36 DISK MODE NOT ACCESSED 00066000
- * 80 I/O ERROR ACCESSING OS DATA SET 00066050
- * 81 OS READ PASSWORD PROTECTED DATA SET 00066100
- * 82 DATA SET ORGANIZATION IS NOT BSAM, 00066150
- * QSAM OR BPAM 00066200
- * 83 DATA SET HAS MORE THAN 16 EXTENTS 00066250
- * 00067000
- * CALLS TO OTHER ROUTINES: 00068000
- * 00069000
- * DMSLAF,DMSLFS,DMSLAD,DMSERR 00070000
- * 00071000
- * EXTERNAL REFERENCES 00072000
- * 00073000
- * ADTSECT,AFTSECT,FVSECT,DMSNUC,FSTSECT,OSFST 00074000
- * 00075000
- * TABLES/WORKAREAS 00076000
- * 00077000
- * NONE 00078000
- * 00079000
- * REGISTER USAGE 00080000
- * 00081000
- * R13 FVSECT 00082000
- * R1,R3 FSTSECT 00083000
- * R1,R3 FSTSECT 00084000
- * R4 ADTSECT 00085000
- * REST WORK 00086000
- * 00086100
- * NOTES: 00086150
- * 00086200
- * | "STATE/STATEW" IS TREATED AS A "COMMAND" OR A "FUNCTION" 00086250
- * | ACCORDING TO THE HIGH-ORDER BYTE OF R1 AT INPUT, VIZ: 00086300
- * | IF = X'0C', IT WAS ISSUED AS A COMMAND FROM DMSINT. 00086350
- * | IF = X'0D', IT WAS ISSUED FROM AN EXEC FILE (DMSEXT), 00086400
- * | WITH "&CONTROL" SET TO EITHER "CMS" OR "ALL". 00086450
- * | IF = X'0E', IT WAS ISSUED FROM AN EXEC FILE (DMSEXT), 00086500
- * | WITH "&CONTROL OFF" IN EFFECT. 00086550
- * | IF < X'0C' OR > X'0E', IT IS ASSUMED TO BE A FUNCTION, 00086600
- * | I.E. CALLED FROM ANOTHER PROGRAM. 00086650
- * 00086700
- * | FOR STATE/STATEW CALLED AS A COMMAND (EITHER FROM THE 00086750
- * | TERMINAL OR FROM AN EXEC FILE), A CHECK IS MADE THAT 00086800
- * | THE MODE (IF GIVEN) IS NO MORE THAN TWO CHARACTERS. 00086850
- * 00086900
- * | FOR STATE/STATEW CALLED AS A COMMAND FROM THE TERMINAL, 00086950
- * | A CHECK IS ALSO MADE THAT NO ADDITIONAL (EXTRANEOUS) 00087000
- * | PARAMETERS (FOLLOWING THE FILE MODE) ARE PRESENT. 00087050
- * | (THIS CHECK IS PURPOSELY OMITTED IF STATE/STATEW IS 00087100
- * | CALLED FROM AN EXEC FILE, SO THAT ADDITIONAL PARAMETERS 00087150
- * | FROM A STANDARD CMS EXEC FILE CREATED BY LISTFILE WILL 00087200
- * | NOT CAUSE STATE/STATEW TO FAIL.) 00087250
- * 00087300
- * | FOR STATE/STATEW CALLED AS A FUNCTION (OR FROM AN EXEC FILE 00087350
- * | WITH "&CONTROL OFF" IN EFFECT), THE "FILE NOT FOUND" 00087400
- * | AND THE "DISK NOT ACCESSED" ERROR MESSAGES 00087450
- * ARE NOT ISSUED. ALL OTHER MESSAGES 00087470
- * | ARE GIVEN IRRESPECTIVE OF WHETHER STATE/STATEW WAS CALLED 00087500
- * | AS A COMMAND OR AS A FUNCTION. 00087550
- * 00087600
- * OPERATION: 00088000
- * 00089000
- * DMSSTT CHECKS THE FILE NAME AND FILE TYPE 00090000
- * FOR ILLEGAL CHARACTERS AND RETURNS IF ONE IS 00091000
- * FOUND. THEN CHECK FOR VALID MODE SPECIFICATION 00092000
- * IF INVALID RETURN. IF A MODE LETTER WAS GIVEN 00093000
- * CALL DMSLAD TO FIND ADT. RETURN IF DISK IS NOT 00094000
- * ACCESSED. 00095000
- * 00096000
- * DMSSTTE CALLS DMSLAF TO SEE IF THE GIVEN FILE IS IN 00097000
- * THE ACTIVE FILE TABLE. 00098000
- * IF FOUND, THE ACTIVE 40-BYTE FST ENTRY IS MOVED FROM 00099000
- * AFTFST IN THE AFT BLOCK TO THE COPY AT STATEFST TO BE 00100000
- * PROVIDED TO THE CALLER, AND THE STATER0 AND STATER1 00101000
- * WORDS FOLLOWING STATEFST ARE SET TO THE ADDRESSES OF 00102000
- * THE ADT BLOCK AND THE FST ENTRY RESPECTIVELY; THEN 00103000
- * V(STATEFST) IS STORED IN THE CALLER'S P-LIST (IF 00104000
- * NECESSARY) AS DESCRIBED BELOW. 00105000
- * 00106000
- * IF THE FILE WAS NOT FOUND BY DMSLAF, DMSSTTE THEN 00107000
- * CALLS DMSLFS TO FIND THE GIVEN FILE. IF NOT FOUND BY 00108000
- * DMSLFS, THE ERROR CODE FROM DMSLFS (28 FOR FILE NOT 00109000
- * FOUND) IS RETURNED TO THE CALLER AS SHOWN IN THE EXIT 00110000
- * CONDITIONS. 00111000
- * 00112000
- * IF THE FILE WAS FOUND BY DMSLFS, THEN THE 40-BYTE 00113000
- * ENTRY IS MOVED TO STATEFST, AND 00114000
- * THE R0 AND R1 VALUES OBTAINED FROM DMSLFS ARE STORED 00115000
- * AT THE STATER0 AND STATER1 00116000
- * WORDS FOLLOWING STATEFST. (THESE WORDS ARE USED BY 00117000
- * RDBUF TO AVOID AN EXTRA 00118000
- * SEARCH OF THE FST TABLES UNDER THE CIRCUMSTANCES 00119000
- * GIVEN IN THE DMSBRD DESCRIPTION). 00120000
- * WHERE THE FILE WAS FOUND BY FSTLKP, THE MODE LETTER 00121000
- * IS STORED IN THE STATEFST COPY 00122000
- * USING THE SAME ALGORITHM AS DMSLAFFE, BEING CAREFULLY 00123000
- * CHOSEN FROM THAT OF THE CALLER'S 00124000
- * PARAMETER LIST, OR THE ADTM OR ADTMX MODE GIVEN BY 00125000
- * THE ACTIVE DISK TABLE. 00126000
- * 00127000
- * THE RESULT OF THE CHOICE OF MODE-LETTER FACILITATES 00128000
- * THE FEATURE OF A READ-ONLY EXTENSION OF A GIVEN DISK. 00129000
- * FOR EXAMPLE, IF A B-DISK IS A READ-ONLY EXTENSION OF 00130000
- * A A-DISK, IF THE CALLER'S PARAMETER LIST SPECIFIED 00131000
- * THE B-MODE, THE MODE STORED IN STATEFST WILL BE B; 00132000
- * BUT IF THE CALLER SPECIFIED A OR '*', THE MODE STORED 00133000
- * IN STATEFST WILL BE A. 00134000
- * 00135000
- * AFTER SETTING UP STATEFST AND THE TWO WORDS THAT 00136000
- * FOLLOW, AS DESCRIBED DMSSTT STORES THE ADDRESS OF 00137000
- * STATEFST IN THE CALLER'S P-LIST (UNLESS IT IS ALREADY 00138000
- * THERE), AND RETURNS TO THE CALLER AS SHOWN IN THE 00139000
- * EXIT CONDITIONS. 00140000
- * 00141000
- * Also fill in various members in an extended STATEFST. HRC105DS 00141100
- * This is done for compatibility with later software HRC105DS 00141200
- * which targets VM/SP, however, it is not possible to HRC105DS 00141300
- * use the greater capacity of some of these counters HRC105DS 00141400
- * with 800 byte disk blocks which are limited to 40 HRC105DS 00141500
- * byte FSTs and cannot accomodate the larger values. HRC105DS 00141600
- *. 00142000
- EJECT 00143000
- DMSSTTE START 0 CHECK BOTH READ AND READ/WRITE DISKS 00144000
- ENTRY DMSSTTW,STATEW,STATE 00145000
- STATE EQU DMSSTTE 00146000
- USING NUCON,R0 00147000
- FSENTR REGSAV3 ENTER 'STATE', SAVE REGISTERS 00148000
- L R10,=V(DMSLFS) A(FSTLKP) FOR 'STATE' 00149000
- LA R12,BALR12 COMMON ADDRESSABILITY, 00150000
- USING BALR12,R12 ... 00151000
- B JOIN JOIN FORCES WITH 'STATEW'. 00152000
- DROP R12,R13 00153000
- SPACE 2 00154000
- DMSSTTW DS 0H 00155000
- STATEW EQU DMSSTTW 00156000
- FSENTR REGSAV3 00157000
- BALR12 EQU * (COMMON ADDRESSABILITY HERE) 00158000
- L R10,=V(DMSLFSW) A(FSTLKW) FOR 'STATEW' 00159000
- JOIN LA R3,0(0,R1) SAVE PLIST ADR 00160000
- CLI REGSAV3+4,X'0C' COMMAND OR FUNCTION ? @VA01154 00161100
- BL NOCHECK FUNCTION: OMIT FILE-MODE CHECKS @VA01154 00161200
- CLI REGSAV3+4,X'0E' CHECK FURTHER (0C/0D/0E)... @VA01154 00161300
- BH NOCHECK FUNCTION: OMIT FILE-MODE CHECKS @VA01154 00161400
- * STATE/STATEW ISSUED AS A COMMAND FROM TERMINAL OR FROM AN EXEC FILE: 00161500
- CLI 8(R3),X'FF' FNAME SPECIFIED 00163000
- BE ERR054E NO, ERROR 00164000
- CLI 16(R3),X'FF' FTYPE SPECIFIED 00165000
- BE ERR054E NO, ERROR 00166000
- CLI 24(R3),X'FF' MODE SPECIFIED 00167000
- BE NOCHECK NO, PLIST OK 00168000
- CLI 26(R3),C' ' IS MODE LONGER THAN TWO CHARS. 00169000
- BNE ERR048E YES, ERROR 00170000
- CLI 32(R3),X'FF' ANY EXTRA PARAMETERS 00171000
- BE NOCHECK NOPE ("FENCE" IS THERE) - OK. @VA01154 00172100
- CLI REGSAV3+4,X'0C' WAS IT FROM TERMINAL OR EXEC ? @VA01154 00172200
- BE ERR070E FROM TERMINAL - IT'S AN "ERROR" @VA01154 00172300
- NOCHECK LA R5,7(,R1) SET END OF SCAN 00173000
- LA R2,8(,R1) SCAN FILENAME FOR INVALID CHARS 00174000
- BALR R9,0 SET TO ITERATE TWICE 00175000
- LA R5,8(,R5) ADJUST END OF SCAN PTR 00176000
- CLC 28(4,R3),=4C'*' SHOULD * BE INVALID V0409 00176100
- BE TEST YES V0409 00176200
- CLC 0(8,R2),=CL8'*' STATE ALL FNAMES OR FTYPES 00177000
- BNE TEST NO, CHECK FNAME (OR FTYPE) 00178000
- LA R2,8(,R2) GET OVER FNAME (OR FTYPE) 00179000
- B BALR99 LOOK AT FTYPE (OR FMODE) 00180000
- TEST L R6,=V(INVTBL) TRANSLATE TABLE FOR INVALID CHARS. P3074 00181000
- TRT 0(8,R2),0(R6) LOOK FOR INVALID CHARS 00182000
- BZ BALR99 NO INVALID CHARS. 00183000
- LR R2,R1 CHECK FOR IMBEDDED BLANKS 00184000
- ENDSCAN CLI 0(R2),X'40' BLANK 00185000
- BNE ERR062E NO, INVALID CHARACTER 00186000
- LA R2,1(,R2) NEXT CHAR 00187000
- CR R2,R5 END OF FNAME OR FTYPE 00188000
- BC 12,ENDSCAN NO 00189000
- BALR99 LA R2,1(R5) INSURE R2 POINTS TO NEXT @VA02470 00190300
- BALR R9,R9 FIELD, WONT IF NO BLNK IN FN@VA02470 00190600
- OK CLI 24(R3),C'A' COMPARE MODE LETTER WITH 'A' 00191000
- BL SPCCHK LOWER THAN 'A' 00192000
- CLI 24(R3),C'I' COMPARE MODE LETTER WITH 'I' HRC002DS 00193690
- BNH OK1 MODE OK (A-I) HRC002DS 00194380
- CLI 24(R3),C'J' COMPARE MODE LETTER WITH 'J' HRC002DS 00195070
- BL ERR048E MODE BAD(< J) HRC002DS 00195760
- CLI 24(R3),C'R' COMPARE MODE LETTER WITH 'R' HRC002DS 00196450
- BNH OK1 MODE OK (J-R) HRC002DS 00197140
- CLI 24(R3),C'S' COMPARE MODE LETTER WITH 'S' HRC002DS 00197830
- BL ERR048E MODE BAD(< S) HRC002DS 00198520
- CLI 24(R3),C'Z' COMPARE WITH 'Z' HRC002DS 00199210
- BNH OK1 MODE OK IF BTWEEN A AND Z HRC002DS 00199900
- CLI 24(R3),X'FF' NO FMODE SPEC 00201000
- BE OK2 YES 00202000
- B ERR048E ANYTHING ELSE IS AN ERROR HRC002DS 00202500
- SPCCHK CLI 24(R3),X'00' MODE = BINARY ZERO 00203000
- BE OK2 YES 00204000
- CLC 24(2,R3),=CL2'*' ALL FMODES 00205000
- BE OK2 YES 00206000
- CLC 24(2,R3),=CL2' ' BLANK FMODE 00207000
- BNE ERR048E IT MUST BE INVALID 00208000
- B OK2 OMIT MODE NUMBER CHECK 00209000
- OK1 CLI 25(R3),C' ' MODE NUMBER BLANK 00210000
- BE OK1A YES 00211000
- CLI 25(R3),C'0' COMPARE WITH ZERO 00212000
- BL ERR048E 00213000
- CLI 25(R3),C'5' 00214000
- BH ERR048E INVALID MODE NUMBER 00215000
- OK1A LR R1,R3 00216000
- L R15,=V(DMSLAD) SEE IF DISK IS ACCESSED @V305665 00217100
- BALR R14,R15 00218000
- BNZ ERR069E NOT ACCESSED 00219000
- USING ADTSECT,R1 00220000
- TM ADTFLG2,ADTFROS OS DISK @V201105 00220100
- BZ OK1B TRF IF NOT @VA14295 00220120
- CLM R10,7,VCFSTLKW+1 WAS THIS A STATEW CALL? @VA14295 00220140
- BNE OK2 TRF IF NOT @VA14295 00220160
- TM ADTFLG3,ADTFRWOS READ/WRITE OS DISK? @VA14295 00220180
- BO OK2 YES, OK @V201105 00220200
- LR R5,R3 ERROR - SET UP R5 @VA14295 00221000
- B ERR002E @VA14295 00221300
- OK1B TM ADTFLG1,ADTFRO+ADTFRW IS DISK ACCESSED @VA14295 00221600
- DROP R1 00222000
- BZ ERR069E NO, ERROR 00223000
- OK2 LR R1,R3 00224000
- LR R2,R3 00225000
- LA R3,STATEFST LET R3 POINT TO 'STATEFST' (NEED LATER) 00226000
- SR R0,R0 INITIALIZE R0 AND 00227000
- L R15,AACTLKP CALL 'ACTLKP' TO SEE IF IN 00228000
- BALR R14,R15 ACTIVE-FILE-TABLE 00229000
- BNZ LR1510 BNZ IF NOT. 00230000
- USING AFTSECT,R1 IF FOUND, REFERENCE ACTIVE-FILE-TABLE, 00231000
- L R0,AFTADT LET R0 POINT TO ACTIVE-DISK-TABLE, 00232000
- LA R15,FSTFAW MAYBE AN ACTIVE WRITE ? 00233000
- TM AFTFLG,AFTWRT ... 00234000
- BO JS2 TRF IF YES (R15 ALL SET - NO PROBLEMS). 00235000
- C R10,=V(DMSLFSW) WAS THIS A STATEW CALL? 00236000
- BNE JS1 TRF IF NOT (NO PROBLEM) 00237000
- LR R4,R0 IF STATEW CALL, CHECK 00238000
- USING ADTSECT,R4 ACTIVE-DISK-TABLE 00239000
- TM ADTFLG1,ADTFRW MAKE SURE THIS IS A READ-WRITE-DISK 00240000
- BZ JS3 IF NOT, RESTORE R1 & CALL FSTLKW INSTEAD. 00241000
- DROP R4 00242000
- JS1 LA R15,FSTFAR PROBABLY AN ACTIVE READ ? 00243000
- TM AFTFLG,AFTRD ... 00244000
- BO JS2 TRF IF YES (ALL SET). 00245000
- LA R15,FSTFAP IF NEITHER, MUST BE AN ACTIVE POINT. 00246000
- JS2 LA R1,AFTFST POINT R1 TO FST-BLOCK IN ACTIVE-FILE-TABLE 00247000
- B JS4 JOIN CODE BELOW. 00248000
- DROP R1 00249000
- * 00250000
- JS3 LR R1,R2 RESTORE R1 FOR SPECIAL CASE, AND: 00251000
- * 00252000
- LR1510 LR R15,R10 A(FSTLKP) OR A(FSTLKW) INTO R15, AND 00253000
- LR R5,R1 SAVE IN CASE ERROR 00254000
- BALR R14,R15 CALL FSTLKP OR FSTLKW 00255000
- ENTRY DMSSTTR @V201105 00256100
- DMSSTTR LTR R15,R15 CHECK RETURN CODE @V201105 00256110
- BZ JS4 FOUND SOMETHING @V201105 00256120
- CH R15,=H'79' CHECK FOR UNSUPPORTED OS DATASET @V201105 00256130
- BH ERR229 BRANCH IF SO @V201105 00256140
- B ERR002E CMS FILE NOT FOUND @V201105 00256150
- USING FSTSECT,R3 REFERENCE FST-BLOCK IN 'STATEFST', 00257000
- JS4 LR R4,R0 REFERENCE ACTIVE-DISK-TABLE 00258000
- USING ADTSECT,R4 ... 00259000
- TM ADTFLG2,ADTFROS OS DISK @V201105 00259010
- BNO CMSJS4 NO @V201105 00259020
- USING OSFST,R1 @V201105 00259030
- MVC FVSFSTN(16),8(R2) SET FNAME FTYPE IN FST COPY @V201105 00259040
- XC FVSFSTDT(FVSFSTAD-FVSFSTDT),FVSFSTAD @V201105 00259050
- * CLEAR OS FST COPY AREA @V201105 00259060
- MVC FVSFSTM(OSFSTFLG-OSFSTFM),OSFSTFM MOVE OS PARTS @V201105 00259070
- DROP R1 @V201105 00259080
- B SETFSTFB CONTINUE BELOW @V201105 00259090
- CMSJS4 EQU * @V201105 00259100
- MVC STATEFST(40),0(R1) COPY 'FST ENTRY' INTO 'STATEFST' 00260000
- XC FVSFSTAB+0(2),FVSFSTAB Clear top half of word HRC105DS 00260005
- MVC FVSFSTAB+2(2),FVSFSTDB Store alt. block count HRC105DS 00260010
- XC FVSFSTAI+0(2),FVSFSTAI Clear top half of word HRC105DS 00260015
- MVC FVSFSTAI+2(2),FVSFSTIC Store alt. item count HRC105DS 00260020
- PACK FVSFSTAT(2),FVSFSTYR(3) Put year into 1st byte HRC105DS 00260025
- MVC FVSFSTAT+1(4),FVSFSTDT Rest of date and time HRC105DS 00260030
- MVI FVSFSTAT+5,X'29' Pull seconds from thin air HRC105DS 00260035
- * Somebody fix this properly before 2070. HRC105DS 00260040
- CLI FVSFSTAT,X'69' Is year greater than 69? HRC105DS 00260045
- BH LASTCENT Year is probably 1970-1999 then HRC105DS 00260050
- O R15,=F'8' Set flag bit for 21st century HRC105DS 00260055
- LASTCENT EQU * HRC105DS 00260060
- SETFSTFB EQU * COMMON FST COPY SET @V201105 00260100
- STC R15,FSTFB AND STORE 00, OR FLAG COMPUTED ABOVE. 00261000
- STM R0,R1,STATER0 SAVE ADDRESSES OF ADT AND FST BLOCKS 00262000
- IC R5,ADTM TENTATIVELY CHOOSE PRIMARY MODE LETTER 00263000
- LA R6,FSTFRW AND READ-WRITE DISK FLAG-BIT 00264000
- TM ADTFLG1,ADTFRW IS IT A READ/WRITE DISK ? 00265000
- BO JS6 TRF IF YES, GO FINIS UP. 00266000
- LA R6,FSTFRO TENTATIVELY CHOOSE READ-ONLY FLAG-BIT, 00267000
- CLI ADTMX,C' ' CHECK EXTENSION-MODE-LETTER 00268000
- BE JS6 TRF IF BLANK, GO FINISH UP. 00269000
- CLC ADTM,PRMODE(R2) DID CALLER SPECIFY THIS VERY DISK ? 00270000
- BE JS5 TRF IF YES - STAY WITH PRIMARY LETTER. 00271000
- IC R5,ADTMX CHOOSE EXTENSION LETTER IF NONE OF ABOVE. 00272000
- JS5 LA R6,FSTFRWX TENTATIVELY CHOOSE EXT. OF R/W DISK FLAG 00273000
- LA R1,ADTMX-24 POINT TO DISK IT'S AN EXTENSION OF, 00274000
- L R15,=V(DMSLADW) CALL 'ADTLKW' TO SEE IF A RW DISK 00275000
- BALR R14,R15 ... 00276000
- BZ JS6 TRF IF YES (WE'RE ALL SET). 00277000
- LA R6,FSTFROX IF NOT, CALL IT R/O EXT. OF R/O DISK. 00278000
- * 00279000
- JS6 STC R5,FSTM STORE CAREFULLY-CHOSEN MODE-LETTER, 00280000
- O R6,FSTFB-3 AND 'OR' IN THE FLAG-BITS 00281000
- ST R6,FSTFB-3 INTO THE STATEFST FLAG-BYTE (FSTFB). 00282000
- SR R15,R15 CLEAR R15 FOR NORMAL RETURN 00283000
- CL R3,PRETN(,R2) NECESSARY TO STORE A(STATEFST) ? @VA01154 00283100
- BE EXITLM NO - EXIT FORTHWITH (C.C. = 0) @VA01154 00283200
- * (AVOIDING NEEDLESS SETTING OF CHANGE-BIT, 00283300
- * AND POSSIBLE CP PROTECTION-KEY THRASHING) 00283400
- ST R3,PRETN(,R2) BUT DO STORE A(STATEFST) IF WE MUST. 00284000
- EXIT LTR R15,R15 SET COND. CODE FROM RETURN-CODE, @VA01154 00285100
- EXITLM LM R0,R14,REGSAV3 RESTORE THE OTHER REGISTERS, @VA01154 00286100
- BR R14 AND EXIT (WITH R15 ALREADY OK) 00289000
- SPACE 3 00290000
- * 00291000
- * CONSTANTS 00292000
- * 00293000
- PRMODE EQU 24 DISPLACEMENT OF MODE (IF GIVEN) IN P-LIST 00294000
- PRETN EQU 28 DISPLACEMENT IN P-LIST FOR A(STATEFST) AD-CON 00295000
- * 00296000
- ERR002E DS 0H CMS "FILE NOT FOUND": @VA01154 00297100
- CLI REGSAV3+4,X'0C' COMMAND OR FUNCTION ? @VA01154 00297200
- BL CODE28 FUNCTION: OMIT ERROR MESSAGE @VA01154 00297300
- CLI REGSAV3+4,X'0D' CHECK FURTHER (0C/0D)... @VA01154 00297400
- BH CODE28 FUNCTION: OMIT ERROR MESSAGE @VA01154 00297500
- * OMIT THE ERROR MESSAGE IF THE STATE/STATEW WAS ISSUED AS A 00297600
- * FUNCTION, OR FROM AN EXEC FILE WITH "&CONTROL OFF" IN EFFECT; 00297700
- * BUT GIVE THE ERROR MESSAGE IF THE STATE/STATEW WAS ISSUED FROM 00297800
- * THE TERMINAL (I.E. FROM DMSINT), OR IF IT WAS ISSUED FROM AN 00297900
- * EXEC FILE (I.E. FROM DMSEXT) WITH &CONTROL CMS OR ALL IN EFFECT: 00298000
- LA R2,8(R5) POINT TO FILE ID 00300000
- CLI 16(R2),X'FF' NO FILEMODE SPECIFIED? @VA02247 00300300
- BNE CONTINUE NO, CONTINUE PROCESSING @VA02247 00300600
- MVC 16(2,R2),=CL2' ' SET FILEMODE TO BLANK @VA02247 00300900
- CONTINUE DMSERR TEXT='FILE ''....................'' NOT FOUND', X00301500
- NUM=2,LET=E,SUB=(CHAR8A,(R2)),TYPCALL=BALR 00302000
- CODE28 LA R15,28 00303000
- B EXIT 00304000
- ERR048E LA R2,24(R3) POINT TO MODE 00305000
- LA R4,2 SET TO TYPE 2-CHARACTER FILEMODE @VA01154 00305100
- CLI REGSAV3+4,X'0C' COMMAND OR FUNCTION ? @VA01154 00305200
- BL R4OK FUNCTION: USE 2 CHARS. IN MSG @VA01154 00305300
- CLI REGSAV3+4,X'0E' CHECK FURTHER (0C/0D/0D)... @VA01154 00305400
- BH R4OK FUNCTION: USE 2 CHARS. IN MSG @VA01154 00305500
- LA R4,8 SET TO TYPE 8-CHARACTER FILEMODE @VA01154 00305600
- R4OK EQU * NOW GIVE INVALID-MODE ERROR-MSG: @VA01154 00305700
- DMSERR TEXT='INVALID MODE ''........''',NUM=48,LET=E, X00306000
- SUB=(CHAR8A,((R2),(R4))),TYPCALL=BALR @VA01154 00307100
- CODE24 LA R15,24 00308000
- B EXIT 00309000
- ERR054E DMSERR TEXT='INCOMPLETE FILEID SPECIFIED',NUM=54,LET=E, X00310000
- TYPCALL=BALR 00311000
- B CODE24 GO SET RETURN-CODE = 24 @VA01154 00312100
- ERR062E LA R3,8(,R3) POINT TO FILEID 00314000
- DMSERR TEXT='INVALID CHARACTER ''..'' IN FILEID X00315100
- ''.................''',NUM=62,LET=E,MF=(E,'SYS'), X00316500
- SUB=(CHARA,((R2),1),CHAR8A,(R3)),TYPCALL=BALR 00317000
- CODE20 LA R15,20 00318000
- B EXIT 00319000
- ERR069E DS 0H CMS "DSIK NOT ACCESSED" @VA09015 00320000
- CLI REGSAV3+4,X'0C' COMMAND OR FUNCTION ? @VA09015 00320020
- BL CODE36 FUNCTION: OMIT ERROR MESSAGE @VA09015 00320040
- CLI REGSAV3+4,X'0D' CHECK FURTHER (0C/0D)... @VA09015 00320060
- BH CODE36 FUNCTION: OMIT ERROR MESSAGE @VA09015 00320080
- ERR069 LA R3,24(R3) POINT TO MODE LETTER @VA03409 00320300
- DMSERR TEXT='DISK ''..'' NOT ACCESSED',NUM=69, X00321000
- LET=E,SUB=(CHARA,((R3),1)),TYPCALL=BALR 00322000
- CODE36 LA R15,36 00323000
- B EXIT 00324000
- ERR070E LA R2,32(R1) 00325000
- DMSERR TEXT='INVALID PARAMETER ''........''',NUM=70, X00326000
- LET=E,SUB=(CHAR8A,(R2)),TYPCALL=BALR 00327000
- B CODE24 GO SET RETURN-CODE = 24 @VA01154 00328100
- ERR229 LR R2,R15 @V201105 00329010
- DMSERR TEXT='UNSUPPORTED OS DATASET, ERROR ''..''', X00329020
- NUM=229,LET=E,SUB=(DEC,(R15)) @V201105 00329030
- LTR R15,R2 RESTORE R15 & SET COND. CODE, @VA01154 00329100
- B EXITLM AND GO RESTORE R0-R14 AND EXIT. @VA01154 00329200
- SPACE 00329300
- LTORG @VA01154 00329400
- EJECT 00329500
- OSFST @VA01154 00329600
- NUCON 00331000
- REGEQU 00332000
- AFT 00333000
- FVS 00334000
- ADT 00335000
- FSTB 00336000
- END 00337000
ibm/vm370-lib/cms/dmsstt.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator