Type ASSEMBLE
Source Lines : 1,744
Fixes Applied : 22
Most Recent Version : Tuesday, December 12, 1978
Last Fix ID : [R14488DS]
Module
DMSSOP (SOOPCL)
Function
TO PROCESS OS OPEN AND CLOSE MACROS.
Attributes
REENTRANT, NUCLEUS RESIDENT.
Operation
INITIALIZATION IOTYPE IS SET TO INDICATE OPEN OR OPENJ, UPON ENTRY TO SOOPCL, AND THE ADDRESS OF THE CURRENT DCB IS OBTAINED FROM THE LIST POINTED TO BY REGISTER 1. VSAM IF ANY OR ALL OF THE CONTROL BLOCKS POINTED TO BY THE ADDRESSES IN THE PLIST ARE ACB'S, A BALR IS MADE TO THE OS VSAM INTERFACE AFTER COMPLETION OF DCB PROCESSING. THE ADDRESS OF THE INTERFACE IS OBTAINED FROM CVT+256( PRIOR TO THE FIRST CALL, THIS CELL CONTAINS THE ADDRESS OF THE INTERFACE BOOTSTRAP). A PARAMETER LIST IS CONSTRUCTED IN THE USER SAVE AREA AS FOLLOWS: DC CL1'O' OPTION BYTE (C'O'-OPEN, C'C'-CLOSE, C'T'-TCLOSE) DC CL3'SOP' SOP IDENTIFIER UPON RETURN FROM DMSVIP, REGISTER 15 CONTAINS THE RETURN CODE FROM THE DOS VSAM OPEN ROUTINE. DETERMINATION OF ACCESS METHOD THE DATA SET ORGANIZATION (DCBDSORG) SWITCH IS CHECKED TO BE SURE IT IS EITHER PHYSICAL SEQUENTIAL, PARTITIONED, OR DIRECT ACCESS (EFFECTIVELY ELIMINATING ONLY ISAM). IF NONE OF THE ABOVE, THE DCB WILL NOT BE OPENED. NEXT THE MACRO FORMAT FIELD (DCBMACRF) IS CHECKED TO SEE WHICH ACCESS METHOD IS REQUESTED, AND THE ACCESS METHOD INDICATOR (DCBCIND2) IS SET TO SIGNAL QSAM OR BSAM. QSAM IF THE ACCESS METHOD IS QSAM, DCBMACRF IS TESTED FOR A GET, UPDATE OR PUT REQUEST, AND THE RELEVANT ROUTINE ADDRESS IS PLACED IN THE CORRESPONDING DCB ACCESS FIELD (NOTE THAT GET, UPDATE AND PUT ARE IN THE CMS ROUTINE DMSSQS) BSAM IF THE ACCESS METHOD IS BSAM, THE ADDRESS OF DMSSBS IS PLACED IN DCB ACCESS FIELD; THE CHECK ADDRESS IS PLACED IN THE DCB CHECK FIELD; AND IF POINT IS REQUESTED, THE DMSSCT ADDRESS IS PLACED IN THE DCBNOTE FIELD. SETTING UP DCB FIELDS AFTER THE RELEVANT QSAM OR BSAM PROCESSING, THE CMSCB(FCB) CHAIN IS TESTED TO SEE IF THERE IS A CMSCB FOR THIS DCB. THAT IS, IF A FILEDEF COMMAND FOR THE RESPECTIVE DATA SET HAS BEEN ISSUED. IF ONE DOES NOT EXIST, THE ASSUMPTION IS MADE THAT THE USER HAS SET UP THE REQUIRED DCB FIELDS, AND FILEDEF IS CALLED TO CREATE A CMSCB WITH A FILENAME OBTAINABLE FROM LOCATION CMSNAME (INITIALIZED AS 'FILE'), A FILEMODE OF A1, AND A FILETYPE EQUAL TO THE DCB DDNAME. AFTER A MATCHING CMSCB IS FOUND OR CREATED, IT IS USED TO FILL IN VACANT ENTRIES IN THE DCB. IF THE MACLIB CONCAT OPTION IS ON IN THE CMSCB, OPEN CHECKS THE MACLIB NAMES IN THE GLOBAL LIST AND FILLS IN THE ADDRESSES OF OS FSTS FOR ANY MACLIBS THAT ARE ON OS DISKS. THE CMSCB OF THE 1ST MACLIB IN THE GLOBAL LIST IS USED FOR CMSCB MERGING AND INITIAL- IZATION. THE FOLLOWING TABLE SHOWS THE CMSCB FIELDS THAT ARE USED TO COMPLETE DCB FILEDS NOT INITIALIZED BY THE USER PRIOR TO ISSUING THE OPEN CALL. IT ALSO SHOWS THE JFCBMASK BIT SETTING WHICH IS ON IF THE ASSOCIATED CMSCB FIELD MUST BE USED. IF THE CMSCB FIELDS ARE NOT SPECIFIED BY A FILEDEF COMMAND, NO DEFAULTS WILL BE USED TO FILL IN THE RESPECTIVE FIELDS OF THE CMSCB. _______________________________________ | DCB || FCB | JFCBMASK | |___________||____________|___________| |-----------||------------|-----------| | || | | | DCBBLKSI || JFCBLKSI |+2 X'10' | | DCBDSORG || JFCDSORG |+3 X'01' | | DCBLRECL || JFCLRECL |+3 X'02' | | DCBRECFM || JFCRECFM |+2 X'04' | | DCBKEYLE || JFCKEYLE |+3 X'20' | | DCBOPTCD || JFCOPTCD |+2 X'80' | | DCBLIMCT || JFCLIMCT |+2 X'40' | |___________||____________|___________| SETTING UP A NEW CMSCB THIS ROUTINE IS ENTERED IF IT IS NECESSARY TO SET UP AND INITIALIZE A NEW CMSCB FOR THE DCB CURRENTLY BEING OPENED. IT ISSUES A FILEDEF WITH THE FOLLOWING FIELDS FILLED IN: ________________________________________________________ | FIELD || CONTENT | DESCRIPTION | |____________||_____________|__________________________| |------------||-------------|--------------------------| | FCBSECT || X'08' | INDICATES OPEN ACQUIRED | | || | THIS CMSCB. | | FCBDEV || X'14' | DISK DEFAULT | | FCBDSNAM || FILENAME | CMS FILENAME ('FILE') | | FCBDD || DCBDDNAM | CMS FILETYPE | | FCBDSTYP || DCBDDNAM | CMS FILETYPE | | FCBDSMD || FILEMODE | CMS FILEMODE ('A1') | |____________||_____________|__________________________| SETTING UP CONTROL BLOCK POINTERS AFTER THE CMSCB IS INITIALIZED, THE ADDRESS POINTERS ARE SET TO LINK THE VARIOUS SIMULATED CONTROL BLOCKS. ___________________________________________________________ | CONTROL | || | | BLOCK | FIELD || CONTENTS AFTER COMPLETION | |___________|___________||________________________________| | | || | | DCB | DCBDEBAD || DEB ADDRESS | | DCB | DCBIOBAD || IOB ADDRESS | | DCB | DCBIOBA || IOB ADDRESS | | DCB | DCBIOBL || LENGTH IN DOUBLE WORDS OF IOB | |___________|___________||________________________________| | IOB | IOBDCBPT || DCB POINTER | |___________|___________||________________________________| | DEB | DEBDCBAD || DCB POINTER | | DEB | DEBDEBID || X'0F' FLAG TO SHOW BLOCK IS DEB| | DEB | DEBOPATB || OPEN OPTION BYTE | |___________|___________||________________________________|
Calls to Other Routines
DMSFLD, DMSSTT, DMSERS, DMSERR, DMSCPF, DMSTIO, DMSFNS, GETMAIN, OPEN EXIT ROUTINE, PDSSAVE AND KEYSAVE IN DMSSVT, GETPOOL, FIND, DMSSCTCE, DMSVIB, DMSVIP.