cdc:nos2.source:opl.opl871:deck:sxstge
Deck SXSTGE
Library Member Format: MODIFY
Listing Sections
- Deck SXSTGE Start
- Deck SXSTGE Part 1 (Line 2042)
Source
Seq # *Modification Id* Act ----------------------------+ 00001 M00S00001.sxstge +++|PROC ST$$DOC; 00002 M00S00002.sxstge +++| 00003 M00S00003.sxstge +++|# TITLE ST$$DOC - DOCUMENTATION FOR FILE STAGING. # 00004 M00S00004.sxstge +++| 00005 M00S00005.sxstge +++| BEGIN # ST$$DOC # 00006 M00S00006.sxstge +++| 00007 M00S00007.sxstge +++|# 00008 M00S00008.sxstge +++|* 00009 M00S00009.sxstge +++|* 00010 M00S00010.sxstge +++|* S T A G I N G O V E R V I E W 00011 M00S00011.sxstge +++|* 00012 M00S00012.sxstge +++|* A USER MAKES A PERMANENT FILE MANAGER (*PFM*) REQUEST TO *ATTACH* 00013 M00S00013.sxstge +++|* OR *GET* A PERMANENT FILE. *PFM* DETECTS THAT THE FILE DOES NOT 00014 M00S00014.sxstge +++|* EXIST ON DISK AND NEEDS TO BE STAGED TO DISK FROM THE M860. 00015 M00S00015.sxstge +++|* *PFM* BUILDS A STAGING (*TDAM*) REQUEST WHICH TOGETHER WITH THE 00016 M00S00016.sxstge +++|* M860 CATALOGS (*SFMCAT* FILES) PROVIDES ALL THE INFORMATION 00017 M00S00017.sxstge +++|* NEEDED BY THE *SSEXEC* TO LOCATE THE DATA FOR THE FILE ON THE 00018 M00S00018.sxstge +++|* M860 CARTRIDGE(S) AND STAGE THIS DATA BACK TO DISK. 00019 M00S00019.sxstge +++|* 00020 M00S00020.sxstge +++|* *PFM* MAKES A SYSTEM MONITOR REQUEST TO TRANSFER THIS *TDAM* 00021 M00S00021.sxstge +++|* ENTRY TO *SSEXEC* WHERE IT IS STORED AT LOCATION *RA$TDAM* IN THE 00022 M00S00022.sxstge +++|* FIELD LENGTH OF *SSEXEC*. 00023 M00S00023.sxstge +++|* 00024 M00S00024.sxstge +++|* ON A MASTER MAINFRAME, THE STAGING *TDAM* REQUEST IS MOVED FROM 00025 M00S00025.sxstge +++|* *RA$TDAM* TO A QUEUE CALLED THE REAL TIME REQUEST QUEUE (*RTRQ*). 00026 M00S00026.sxstge +++|* ITS STAYS IN THIS QUEUE UNTIL IT CAN BE SCHEDULED FOR STAGING AT 00027 M00S00027.sxstge +++|* WHICH TIME IT IS PLACED INTO AN *HLRQ* ENTRY. WHEN THE FILE IS 00028 M00S00028.sxstge +++|* STAGED, A SYSTEM EVENT IS POSTED WHICH WILL RESTART ANY JOB 00029 M00S00029.sxstge +++|* WAITING FOR THIS FILE SO THE ORIGINAL *ATTACH* OR *GET* REQUEST 00030 M00S00030.sxstge +++|* CAN BE SATISFIED. 00031 M00S00031.sxstge +++|* 00032 M00S00032.sxstge +++|* ON A SLAVE MAINFRAME, THE STAGING *TDAM* REQUEST IS WRITTEN TO A 00033 M00S00033.sxstge +++|* FILE (IN *ECS*) USED TO COMMUNICATE *TDAM* REQUESTS FROM THE 00034 M00S00034.sxstge +++|* SLAVE MAINFRAME TO THE MASTER MAINFRAME. *SSEXEC* ON THE MASTER 00035 M00S00035.sxstge +++|* MAINFRAME PERIODICALLY EXAMINES THIS COMMUNICATION FILE. WHEN IT 00036 M00S00036.sxstge +++|* SEES A NEW STAGING REQUEST, IT ADDS IT TO THE *RTRQ*. WHEN THE 00037 M00S00037.sxstge +++|* FILE HAS BEEN STAGED, A RESPONSE TO THE STAGE REQUEST IS WRITTEN 00038 M00S00038.sxstge +++|* ON A COMPANION COMMUNICATION FILE USED TO SEND INFORMATION FROM 00039 M00S00039.sxstge +++|* THE MASTER TO THE SLAVE MAINFRAME. UPON RECEIPT OF THE RESPONSE, 00040 M00S00040.sxstge +++|* THE SLAVE MAINFRAME ISSUES A SYSTEM EVENT TO RESTART ANY JOBS 00041 M00S00041.sxstge +++|* WAITING FOR THE FILE TO BE STAGED. 00042 M00S00042.sxstge +++|# 00043 M00S00043.sxstge +++| 00044 M00S00044.sxstge +++| CONTROL EJECT; 00045 M00S00045.sxstge +++| 00046 M00S00046.sxstge +++|# 00047 M00S00047.sxstge +++|* R O U T I N E S U S E D T O S T A G E F I L E S 00048 M00S00048.sxstge +++|* 00049 M00S00049.sxstge +++|* F O R M A S T E R M A I N F R A M E J O B S 00050 M00S00050.sxstge +++|* 00051 M00S00051.sxstge +++|* 1) MAINLOOP/NEWWORK WHEN *MAINLP* SENSES A *TDAM* REQUEST IN 00052 M00S00052.sxstge +++|* *RA$TDAM*, IT CALLS *TRYTDAM* TO PUT THE *TDAM* ENTRY INTO THE 00053 M00S00053.sxstge +++|* *RTRQ*. *MAINLP* ALSO SENSES *TDAM* ENTRIES IN THE *RTRQ* AND 00054 M00S00054.sxstge +++|* WHEN APPROPRIATE, CALLS *NEWWORK* TO CALL *TDAM$RP* TO PROCESS 00055 M00S00055.sxstge +++|* THESE *TDAM* REQUESTS. FOR STAGING *TDAM* REQUESTS, THIS 00056 M00S00056.sxstge +++|* CONSISTS OF BUILDING AN *HLRQ* ENTRY FOR THE FILE TO BE STAGED. 00057 M00S00057.sxstge +++|* 00058 M00S00058.sxstge +++|* 2) TRYTDAM CALLS *ENTDAM* TO ADD THE STAGING REQUEST TO THE 00059 M00S00059.sxstge +++|* *RTRQ*. IT SETS A BIT IN THE *TDAM* REQUEST TO INDICATE THAT THE 00060 M00S00060.sxstge +++|* REQUEST CAME FROM A JOB ON THE MASTER MAINFRAME. IT ALSO CLEARS 00061 M00S00061.sxstge +++|* *RA$TDAM* SO THE NEXT *TDAM* REQUEST CAN BE SUBMITTED. 00062 M00S00062.sxstge +++|* 00063 M00S00063.sxstge +++|* 3) ENTDAM SEARCHES THE *RTRQ* AND ACTIVE *HLRQ* CHAINS TO SEE 00064 M00S00064.sxstge +++|* IF A DUPLICATE OF THIS REQUEST ALREADY EXISTS. IF ITS NOT A 00065 M00S00065.sxstge +++|* DUPLICATE AND AN *RTRQ* ENTRY IS AVAILABLE, THE *TDAM* ENTRY IS 00066 M00S00066.sxstge +++|* ADDED TO THE *RTRQ*. 00067 M00S00067.sxstge +++|* 00068 M00S00068.sxstge +++|* 4) TDAM$RP IS CALLED BY *NEWWORK* TO SCHEDULE A FILE TO BE 00069 M00S00069.sxstge +++|* STAGED. *TDAM$RP* WILL NOT SCHEDULE A FILE TO BE STAGED WHEN ITS 00070 M00S00070.sxstge +++|* CARTRIDGE IS IN USE, OR IF THE STORAGE MODULE TO BE USED HAS NO 00071 M00S00071.sxstge +++|* AVAILABLE TRANSPORTS ON WHICH THE CARTRIDGE CAN BE MOUNTED. IF A 00072 M00S00072.sxstge +++|* FILE IS BEING DESTAGED TO THE SAME CARTRIDGE, THE *DOSTG* FLAG 00073 M00S00073.sxstge +++|* IS SET IN THE *HLRQ* ENTRY SO THE *HLRQ* CAN BE PREEMPTED FROM 00074 M00S00074.sxstge +++|* DESTAGING AND USED TO STAGE THIS FILE BEFORE THE CARTRIDGE IS 00075 M00S00075.sxstge +++|* UNLOADED. *TDAM$RP* ALSO BUILDS A MASK IN *STG$MSK* TO CONTROL 00076 M00S00076.sxstge +++|* THE NEXT TIME IT IS TO BE CALLED. SEE ADDITIONAL DOCUMENTATION 00077 M00S00077.sxstge +++|* FOR THIS IN *TDAM$RP* AND *COMXMSC*. 00078 M00S00078.sxstge +++|* 00079 M00S00079.sxstge +++|* 5) STAGER ACTUALLY CONTROLS THE STAGING OF THE FILE. IT USES 00080 M00S00080.sxstge +++|* THE *ASA* VALUE FROM THE FILE'S *TDAM* ENTRY TO LOCATE THE 00081 M00S00081.sxstge +++|* INITIAL PORTION OF THE FILE DATA (VOLUME) ON AN M860 CARTRIDGE. 00082 M00S00082.sxstge +++|* IT USES LINKAGE INFORMATION IN THE *SFMCAT* FILE TO IDENTIFY 00083 M00S00083.sxstge +++|* OTHER VOLUMES CONTAINING THE REMAINING PORTIONS OF THE FILE DATA. 00084 M00S00084.sxstge +++|* IT CALLS *HLLOAD* TO LOAD THE CARTRIDGE AND *HLCPYCD* TO COPY THE 00085 M00S00085.sxstge +++|* DATA FROM THE CARTRIDGE TO DISK. WHEN THE LAST VOLUME HAS BEEN 00086 M00S00086.sxstge +++|* COPIED, *STAGER* CALLS *PFM* TO UPDATE THE *PFC* ENTRY FOR THE 00087 M00S00087.sxstge +++|* FILE TO LINK TO THE DISK IMAGE. FINALLY, *STAGER* CALLS *PFM* TO 00088 M00S00088.sxstge +++|* POST A SYSTEM EVENT INDICATING THAT THE FILE HAS BEEN STAGED SO 00089 M00S00089.sxstge +++|* ANY JOBS WAITING FOR THIS FILE CAN BE RESTARTED. *STAGER* THEN 00090 M00S00090.sxstge +++|* CALLS *STNTDAM* TO GET A *TDAM* ENTRY FOR ANOTHER FILE WHICH CAN 00091 M00S00091.sxstge +++|* BE RETRIEVED FROM THE CURRENTLY AVAILABLE CARTRIDGE. 00092 M00S00092.sxstge +++|* 00093 M00S00093.sxstge +++|* 6) STNTDAM SCANS THE *RTRQ* TO LOCATE A FILE WHICH CAN BE 00094 M00S00094.sxstge +++|* STAGED FROM THE CURRENTLY LOADED CARTRDIGE. IF SEVERAL SUCH 00095 M00S00095.sxstge +++|* FILES ARE FOUND, IT WILL SELECT THE ONE CLOSEST TO THE BEGINNING 00096 M00S00096.sxstge +++|* OF THE CARTRIDGE. IF NONE IS FOUND, THE *HLRQ* ENTRY IS RELEASED 00097 M00S00097.sxstge +++|* AND THE NEXT FILE TO BE STAGED WILL BE SELECTED BY *TDAM$RP*. 00098 M00S00098.sxstge +++|# 00099 M00S00099.sxstge +++| 00100 M00S00100.sxstge +++| CONTROL EJECT; 00101 M00S00101.sxstge +++| 00102 M00S00102.sxstge +++|# 00103 M00S00103.sxstge +++|* M U L T I M A I N F R A M E R O U T I N E S 00104 M00S00104.sxstge +++|* 00105 M00S00105.sxstge +++|* 7) SLAVERP/SLVRBP *SLAVERP* IS PERIODICALLY CALLED BY BOTH THE 00106 M00S00106.sxstge +++|* MAINLOOP AND THE IDLE ROUTINE (*DOZER*) OF *SSEXEC* TO READ THE 00107 M00S00107.sxstge +++|* SLAVE TO MASTER COMMUNICATION FILE(S) AND RECOGNIZE ANY NEW 00108 M00S00108.sxstge +++|* STAGING *TDAM* REQUESTS. IF *SLAVERP* IS CALLED BY *DOZER* IT 00109 M00S00109.sxstge +++|* CLEARS A FLAG WHICH CAUSES CONTROL TO BE RETURNED TO THE 00110 M00S00110.sxstge +++|* MAINLOOP. IF CALLED BY THE MAINLOOP WHEN A NEW REQUEST IS FOUND, 00111 M00S00111.sxstge +++|* IT CALLS *SLVRBP* WHICH CALLS *SLVTDAM* WHICH CALLS *ENTDAM* TO 00112 M00S00112.sxstge +++|* ADD THE REQUEST TO THE *RTRQ*. 00113 M00S00113.sxstge +++|* 00114 M00S00114.sxstge +++|* 8) SLVTDAM CALLS *ENTDAM* TO ADD THE REQUEST TO THE *RTRQ*. 00115 M00S00115.sxstge +++|* IF THIS REQUEST CAN NOT BE ACCEPTED BECAUSE THE *RTRQ* IS FULL, A 00116 M00S00116.sxstge +++|* FLAG IS SET WHICH ENSURES THAT THIS REQUEST WILL BE THE FIRST 00117 M00S00117.sxstge +++|* ACCEPTED *TDAM* REQUEST FROM ANY OF THE SLAVE MAINFRAMES. 00118 M00S00118.sxstge +++|* 00119 M00S00119.sxstge +++|* 9) TELLSLV IS CALLED BY *STAGER* WHEN A FILE IS STAGED IF A 00120 M00S00120.sxstge +++|* SLAVE MAINFRAME ISSUED A *TDAM* REQUEST TO STAGE THE FILE. IT 00121 M00S00121.sxstge +++|* WRITES A RESPONSE TO THE COMMUNICATION FILE USED TO SEND REPLIES 00122 M00S00122.sxstge +++|* FROM THE MASTER TO THE SLAVE MAINFRAME. 00123 M00S00123.sxstge +++|# 00124 M00S00124.sxstge +++| 00125 M00S00125.sxstge +++| CONTROL EJECT; 00126 M00S00126.sxstge +++| 00127 M00S00127.sxstge +++|# 00128 M00S00128.sxstge +++|* S T A G I N G P R O C E S S I N G F L O W 00129 M00S00129.sxstge +++|* 00130 M00S00130.sxstge +++|* ( D E T A I L E D ) 00131 M00S00131.sxstge +++|* 00132 M00S00132.sxstge +++|* THE PROCEDURE *STAGER* USES THE FOLLOWING STEPS AS IT STAGES A 00133 M00S00133.sxstge +++|* FILE FROM A CARTRIDGE TO DISK. THIS SEQUENCE OF STEPS WILL BE 00134 M00S00134.sxstge +++|* REFERENCED IN THE FOLLOWING DISCUSSION OF STAGING ERROR 00135 M00S00135.sxstge +++|* PROCESSING. 00136 M00S00136.sxstge +++|* 00137 M00S00137.sxstge +++|* 1) IT CALLS *PFM* WITH AN *ASIGNPF* REQUEST TO ENSURE THAT A 00138 M00S00138.sxstge +++|* DIRECT ACCESS FILE IS STAGED TO A DISK (RESPECTING THE SECONDARY 00139 M00S00139.sxstge +++|* DEVICE MASKS) WHICH HAS ENOUGH SPACE TO HOLD THE ENTIRE FILE. 00140 M00S00140.sxstge +++|* 00141 M00S00141.sxstge +++|* 2) IT CALLS *ACQ$FCT* TO READ THE *FCT* ENTRY FOR THE FIRST 00142 M00S00142.sxstge +++|* CARTRIDGE TO MEMORY AND THEN CALLS *HLLOAD* TO LOAD THE CARTRIDGE 00143 M00S00143.sxstge +++|* SO DATA CAN BE READ FROM IT. 00144 M00S00144.sxstge +++|* 00145 M00S00145.sxstge +++|* 3) IT THEN PREPARES TO COPY DATA FROM THE FIRST (NEXT) VOLUME TO 00146 M00S00146.sxstge +++|* DISK. 00147 M00S00147.sxstge +++|* 00148 M00S00148.sxstge +++|* 4) IT THEN CALLS *HLCPYCD* TO COPY DATA FROM THE FIRST (NEXT) 00149 M00S00149.sxstge +++|* VOLUME FROM THE CARTRIDGE TO DISK. 00150 M00S00150.sxstge +++|* 00151 M00S00151.sxstge +++|* 5) STEPS 2-4 ARE REPEATED AS NECESSARY UNTIL THE ENTIRE FILE IS 00152 M00S00152.sxstge +++|* COPIED TO DISK. 00153 M00S00153.sxstge +++|* 00154 M00S00154.sxstge +++|* 6) *PFM* IS THEN CALLED TO BIND THE DISK IMAGE TO THE FILE'S 00155 M00S00155.sxstge +++|* *PFC* ENTRY. 00156 M00S00156.sxstge +++|* 00157 M00S00157.sxstge +++|* 7) *PFM* IS CALLED TO CLEAR THE *ASA* VALUE IN THE FILE'S *PFC* 00158 M00S00158.sxstge +++|* ENTRY IF APPROPRIATE. 00159 M00S00159.sxstge +++|* 00160 M00S00160.sxstge +++|* 8) PROCEDURE *EESET* IS THEN CALLED IF A JOB ON THE MASTER 00161 M00S00161.sxstge +++|* MAINFRAME WANTED THIS FILE TO BE STAGED. PROCEDURE *TELLSLV* IS 00162 M00S00162.sxstge +++|* CALLED IF A JOB ON A SLAVE MAINFRAME WANTED THIS FILE TO BE 00163 M00S00163.sxstge +++|* STAGED. 00164 M00S00164.sxstge +++|# 00165 M00S00165.sxstge +++| 00166 M00S00166.sxstge +++| CONTROL EJECT; 00167 M00S00167.sxstge +++| 00168 M00S00168.sxstge +++|# 00169 M00S00169.sxstge +++|* S T A G I N G E R R O R P R O C E S S I N G 00170 M00S00170.sxstge +++|* 00171 M00S00171.sxstge +++|* 00172 M00S00172.sxstge +++|* TWO TYPES OF ERRORS CAN BE ENCOUNTERED WHILE TRYING TO STAGE A 00173 M00S00173.sxstge +++|* FILE TO DISK (RESOLVED AND UNRESOLVED). RESOLVED ERRORS ARE 00174 M00S00174.sxstge +++|* DEFINED TO BE THOSE WHICH PRESENT A DEFINITIVE STATUS BACK TO THE 00175 M00S00175.sxstge +++|* JOB ATTEMPTING TO ACCESS THE FILE WHICH WAS TO BE STAGED. AN 00176 M00S00176.sxstge +++|* EXAMPLE OF A RESOLVED ERROR IS AN UNRECOVERABLE READ ERROR WHICH 00177 M00S00177.sxstge +++|* IS REPORTED TO A JOB AS A PERMANENT ERROR. ANOTHER EXAMPLE 00178 M00S00178.sxstge +++|* WOULD BE WHEN THE USER PURGED THE FILE AS IT WAS BEING STAGED. 00179 M00S00179.sxstge +++|* *STAGER* WOULD NOT BE ABLE TO BIND THE DATA TO THE (NON-EXISTING) 00180 M00S00180.sxstge +++|* *PFC* ENTRY AND WOULD REPORT THIS AS AN ERROR. THE USER WOULD 00181 M00S00181.sxstge +++|* NOT BE IN DOUBT ABOUT THE STATUS OF THE STAGE SINCE THE FILE 00182 M00S00182.sxstge +++|* WOULD NO LONGER EXIST. AN EXAMPLE OF AN UNRESOLVED ERROR IS WHEN 00183 M00S00183.sxstge +++|* A CARTRIDGE IS LOST OR THE PATH TO THE HARDWARE IS DOWN SO THAT 00184 M00S00184.sxstge +++|* THE STAGE OF THE FILE CAN NOT BE ATTEMPTED. IN THESE EXAMPLES, 00185 M00S00185.sxstge +++|* THE STAGING SOFTWARE CAN NOT DECLARE A PERMANENT ERROR BECAUSE 00186 M00S00186.sxstge +++|* THE ERROR CONDITION MAY BE RESOLVED. HOWEVER, THE USER WILL BE 00187 M00S00187.sxstge +++|* WAITING FOR THE FILE TO BE STAGED WITHOUT RECEIVING A STATUS OF 00188 M00S00188.sxstge +++|* THE PROBLEM FROM THE SOFTWARE. ALSO, THE *SSEXEC* WILL 00189 M00S00189.sxstge +++|* CONTINUALLY BE REQUESTED TO STAGE THE FILE BECAUSE *PFM* REISSUES 00190 M00S00190.sxstge +++|* THE STAGING *TDAM* REQUEST EVERY FEW SECONDS. CONSEQUENTLY, FOR 00191 M00S00191.sxstge +++|* UNRESOLVED ERRORS, THE OPERATOR WILL BE REQUESTED TO INTERVENE 00192 M00S00192.sxstge +++|* AND PASS A STATUS BACK TO THE REQUESTING JOB TO RESOLVE THIS 00193 M00S00193.sxstge +++|* STALEMATE. 00194 M00S00194.sxstge +++|# 00195 M00S00195.sxstge +++| 00196 M00S00196.sxstge +++| CONTROL EJECT; 00197 M00S00197.sxstge +++| 00198 M00S00198.sxstge +++|# 00199 M00S00199.sxstge +++|* THE FOLLOWING ERRORS CAN OCCUR IN EACH OF THE STEPS USED TO STAGE 00200 M00S00200.sxstge +++|* A FILE. THE NUMBER OF EACH PARAGRAPH CORRESPONDS TO THE NUMBER OF 00201 M00S00201.sxstge +++|* THE PARAGRAPH IN THE PRECEEDING SECTION ON STAGING PROCESSING 00202 M00S00202.sxstge +++|* FLOW. 00203 M00S00203.sxstge +++|* 00204 M00S00204.sxstge +++|* 1) THE *ASIGNPF* REQUEST CAN REPORT THAT NO DISK HAS ENOUGH 00205 M00S00205.sxstge +++|* SPACE FOR THE SPECIFIED DIRECT ACCESS FILE. THIS IS AN 00206 M00S00206.sxstge +++|* UNRESOLVED ERROR. THE OPERATOR WILL BE EXPECTED TO TAKE SOME 00207 M00S00207.sxstge +++|* ACTION TO FREE DISK SPACE. 00208 M00S00208.sxstge +++|* 00209 M00S00209.sxstge +++|* 2) ACQ$*FCT* ERRORS: SEVERAL ERROR STATUS REPLIES ARE POSSIBLE 00210 M00S00210.sxstge +++|* WHEN CALLING *ACQ$FCT* TO READ THE *FCT* ENTRY TO MEMORY. IF THE 00211 M00S00211.sxstge +++|* SUBFAMILY CATALOG CANNOT BE FOUND, AN UNRESOLVABLE ERROR IS 00212 M00S00212.sxstge +++|* DECLARED. THIS COULD OCCUR IF A REMOVABLE FAMILY WAS MOUNTED 00213 M00S00213.sxstge +++|* AFTER THE *SSEXEC* WAS INITIALIZED. THE RESOLUTION IS FOR THE 00214 M00S00214.sxstge +++|* OPERATOR TO RESTART *SSEXEC*. IF THE STORAGE MODULE OR *FCT* 00215 M00S00215.sxstge +++|* ENTRY CANNOT BE LOCATED IN THE SUBFAMILY CATALOG, A PERMANENT 00216 M00S00216.sxstge +++|* ERROR IS DECLARED WITH THE APPROPRIATE ERROR BIT SET IN THE 00217 M00S00217.sxstge +++|* FILE'S *PFC* ENTRY. THIS COULD OCCUR IF THE FILE'S *PFC* ENTRY 00218 M00S00218.sxstge +++|* HAD BEEN RELOADED FROM AN OBSOLETE DUMP TAPE. OPERATOR ACTION IS 00219 M00S00219.sxstge +++|* ALSO REQUIRED TO RECOVER FROM AN READ/WRITE ERROR WHICH OCCURS 00220 M00S00220.sxstge +++|* WHEN ACCESSING A SUBFAMILY CATALOG. 00221 M00S00221.sxstge +++|* 00222 M00S00222.sxstge +++|* CARTRIDGE LOAD ERRORS: UNRESOLVED LOAD ERRORS INCLUDE HAVING 00223 M00S00223.sxstge +++|* THE HARDWARE DOWN SO THE STORAGE MODULE CAN NOT BE ACCESSED AND 00224 M00S00224.sxstge +++|* THE CARTRIDGE BEING LOST ( NOT LOCATED IN ITS ASSIGNED CUBICLE). 00225 M00S00225.sxstge +++|* IF A LABEL CHECK ERROR OCCURS WITH THE CARTRIDGE, A PERMANENT 00226 M00S00226.sxstge +++|* ERROR IS DECLARED FOR THE FILE WHICH WAS TO BE STAGED. 00227 M00S00227.sxstge +++|* 00228 M00S00228.sxstge +++|* 3) IF *STAGER* DETERMINES THAT THE ALLOCATION UNITS OF THE NEXT 00229 M00S00229.sxstge +++|* VOLUME TO BE STAGED ARE INVALID, IT DECLARES A PERMANENT ERROR. 00230 M00S00230.sxstge +++|* IF *STAGER* OR *SSVAL* HAVE DETECTED NON-FATAL ERRORS WITH THE AU 00231 M00S00231.sxstge +++|* OF THE VOLUME TO BE STAGED, AN INTERNAL FLAG IS SET WHICH WILL 00232 M00S00232.sxstge +++|* CAUSE THE *ASA* VALUE IN THE FILE'S *PFC* ENTRY TO BE CLEARED 00233 M00S00233.sxstge +++|* UPON SUCCESSFUL COMPLETION OF THE STAGE. THIS PREVENTS THE DISK 00234 M00S00234.sxstge +++|* SPACE FROM BEING RELEASED WITHOUT FIRST MAKING A CLEAN COPY OF 00235 M00S00235.sxstge +++|* THE FILE VIA ANOTHER DESTAGE. 00236 M00S00236.sxstge +++|# 00237 M00S00237.sxstge +++| 00238 M00S00238.sxstge +++| CONTROL EJECT; 00239 M00S00239.sxstge +++| 00240 M00S00240.sxstge +++|# 00241 M00S00241.sxstge +++|* 4) THE FOLLOWING UNRESOLVED ERRORS CAN OCCUR WHILE COPYING A 00242 M00S00242.sxstge +++|* VOLUME OF DATA TO DISK - DISK WRITE ERROR, DISK FULL, HARDWARE 00243 M00S00243.sxstge +++|* DOWN. IF AN UNRECOVERABLE READ ERROR IS DETECTED, THE STAGER 00244 M00S00244.sxstge +++|* WILL RESTAGE THE FILE, FIRST UNLOADING THE CARTRIDGE SO IT WILL 00245 M00S00245.sxstge +++|* HOPEFULLY BE RELOADED ON THE OTHER DATA RECORDING DEVICE. IF TWO 00246 M00S00246.sxstge +++|* UNRECOVERABLE READ ERRORS ARE DETECTED, A PERMANENT ERROR STATUS 00247 M00S00247.sxstge +++|* IS RECORDED IN THE FILE'S *PFC* ENTRY. ANOTHER TYPE OF PERMANENT 00248 M00S00248.sxstge +++|* ERROR WILL BE REPORTED IF THE SYSTEM LINKAGE INFORMATION RECORDED 00249 M00S00249.sxstge +++|* ON EACH VOLUME DOES NOT AGREE WITH WHAT IS EXPECTED. THIS 00250 M00S00250.sxstge +++|* INFORMATION CONSISTS OF THE FILE'S USER INDEX, THE CREATION DATE 00251 M00S00251.sxstge +++|* AND TIME, AND THE IDENTITY OF PREVIOUS VOLUME (CARTRIDGE, VOLUME 00252 M00S00252.sxstge +++|* AND VOLUME LENGTH). 00253 M00S00253.sxstge +++|* 00254 M00S00254.sxstge +++|* 5) SEE STEPS 2-4 FOR ANY ERROR CONDITIONS. 00255 M00S00255.sxstge +++|* 00256 M00S00256.sxstge +++|* 6) A REQUEST TO RESTORE THE FILE'S DISK IMAGE CAN FAIL, BUT 00257 M00S00257.sxstge +++|* THESE ERRORS ARE CONSIDERED TO BE RESOLVED SINCE THEY SHOULD ONLY 00258 M00S00258.sxstge +++|* OCCUR IF THE USER DID SOMETHING TO THE FILE (PURGE OR REPLACE THE 00259 M00S00259.sxstge +++|* DATA FOR AN INDIRECT ACCESS FILE). 00260 M00S00260.sxstge +++|* 00261 M00S00261.sxstge +++|* 7) AS IN STEP 6, A USER ACTION COULD CAUSE A RESOLVED ERROR TO 00262 M00S00262.sxstge +++|* OCCUR WHILE *STAGER* IS CALLING *PFM* TO CLEAR THE FILE'S *ASA* 00263 M00S00263.sxstge +++|* VALUE. 00264 M00S00264.sxstge +++|* 00265 M00S00265.sxstge +++|* 8) NO ERRORS CAN OCCUR IN THIS STEP. 00266 M00S00266.sxstge +++|# 00267 M00S00267.sxstge +++| 00268 M00S00268.sxstge +++| END # ST$$DOC # 00269 M00S00269.sxstge +++| 00270 M00S00270.sxstge +++| TERM 00271 M00S00271.sxstge +++|PROC STAGER((HLRQADR)); 00272 M00S00272.sxstge +++| 00273 M00S00273.sxstge +++|# TITLE STAGER - STAGE A FILE FROM CARTRIDGE TO DISK. # 00274 M00S00274.sxstge +++| 00275 M00S00275.sxstge +++| BEGIN # STAGER # 00276 M00S00276.sxstge +++| 00277 M00S00277.sxstge +++|# 00278 M00S00278.sxstge +++|** STAGER - STAGE A FILE. 00279 M00S00279.sxstge +++|* 00280 M00S00280.sxstge +++|* *STAGER* COPIES A FILE FROM THE M860 TO DISK. UPON COMPLETION OF 00281 M00S00281.sxstge +++|* THE STAGE THE DISK ADDRESS OF THE LOCAL FILE IS ENTERED INTO 00282 M00S00282.sxstge +++|* THE *PFC* ENTRY TO BIND THE DISK IMAGE TO THE ENTRY. 00283 M00S00283.sxstge +++|* PERFORMANCE (TRACE) MESSAGES ARE WRITTEN TO THE ACCOUNT 00284 M00S00284.sxstge +++|* DAYFILE IF EXEC IS IN TRACE MODE. 00285 M00S00285.sxstge +++|* 00286 M00S00286.sxstge +++|* PROC STAGER((HLRQADR)) 00287 M00S00287.sxstge +++|* 00288 M00S00288.sxstge +++|* ENTRY (HLRQADR) - ADDRESS OF THE *HLRQ* ENTRY CONTAINING THE 00289 M00S00289.sxstge +++|* STAGE REQUEST. 00290 M00S00290.sxstge +++|* THE PROCESS STATE FIELD IN THE *HLRQ* ENTRY IS SET TO 00291 M00S00291.sxstge +++|* INDICATE THE NEXT PROCESSING ACTION. 00292 M00S00292.sxstge +++|* 00293 M00S00293.sxstge +++|* EXIT THE PROCESS STATE FIELD IN THE *HLRQ* ENTRY HAS BEEN 00294 M00S00294.sxstge +++|* ADVANCED TO INDICATE WHERE PROCESSING OF THIS REQUEST 00295 M00S00295.sxstge +++|* LEFT OFF, AND THUS WHAT TO DO NEXT TO ADVANCE THE 00296 M00S00296.sxstge +++|* REQUEST. UPON COMPLETION (SUCCESSFUL OR 00297 M00S00297.sxstge +++|* OTHERWISE) OF A FILE STAGE, THE PROCEDURE 00298 M00S00298.sxstge +++|* *NEXTSTG* IS CALLED TO OBTAIN THE *TDAM* 00299 M00S00299.sxstge +++|* ENTRY FOR THE NEXT FILE TO BE STAGED. 00300 M00S00300.sxstge +++|* THE OBJECTIVE IS TO FIND ANOTHER FILE ON THE 00301 M00S00301.sxstge +++|* SAME CARTRIDGE TO REDUCE CARTRIDGE ACCESSES 00302 M00S00302.sxstge +++|* AND IMPROVE STAGING PERFORMANCE. WHEN NO MORE 00303 M00S00303.sxstge +++|* FILES REMAIN TO BE STAGED, *STAGER* IS CALLED 00304 M00S00304.sxstge +++|* ONE MORE TIME TO UNLOAD THE LAST USED CARTRIDGE. 00305 M00S00305.sxstge +++|* AT THAT TIME, THE PROCESS STATE IS SET TO COMPLETE. 00306 M00S00306.sxstge +++|* 00307 M00S00307.sxstge +++|* MESSAGES * EXEC ABNORMAL, STAGER.* 00308 M00S00308.sxstge +++|* 00309 M00S00309.sxstge +++|# 00310 M00S00310.sxstge +++| 00311 M00S00311.sxstge +++| ITEM HLRQADR U; # *HLRQ* ENTRY ADDRESS # 00312 M00S00312.sxstge +++| 00313 M00S00313.sxstge +++|# 00314 M00S00314.sxstge +++|**** PROC STAGER - XREF LIST BEGIN. 00315 M00S00315.sxstge +++|# 00316 M00S00316.sxstge +++| 00317 M00S00317.sxstge +++| XREF 00318 M00S00318.sxstge +++| BEGIN 00319 M00S00319.sxstge +++| PROC ABORT; # ABORT # 00320 M00S00320.sxstge +++| PROC ACQ$FCT; # ACQUIRE AN *FCT* ENTRY # 00321 M00S00321.sxstge +++| PROC ADD$LNK; # ADD ENTRY TO CHAIN # 00322 M00S00322.sxstge +++| PROC ASIGNPF; # ASSIGN PERMANENT FILE SPACE # 00323 M00S00323.sxstge +++| PROC CFLUSH; # FLUSH MSF CATALOG BUFFER # 00324 M00S00324.sxstge +++| PROC CKPFETC; # CHECK *PFM* FET COMPLETION # 00325 M00S00325.sxstge +++| PROC CRDAST; # READ MSF CATALOG *AST* # 00326 M00S00326.sxstge +++| PROC CWTAST; # WRITE MSF CATALOG *AST* # 00327 M00S00327.sxstge +++| PROC DELAY; # TIMED DELAY # 00328 M00S00328.sxstge +++| PROC EESET; # SET EVENT TABLE # 00329 M00S00329.sxstge +++| PROC HLCPYCD; # CHECK COPY RETURN CODES # 00330 M00S00330.sxstge +++| PROC HLLOAD; # CHECK LOAD RETURN CODES # 00331 M00S00331.sxstge +++| PROC HLLDSET; # MOVE *HLRQ* INTO *LLRQ* # 00332 M00S00332.sxstge +++| PROC UPUSAGE; # UPDATE CART. USAGE DATA # 00333 M00S00333.sxstge +++| PROC MESSAGE; # ISSUE MESSAGE # 00334 M00S00334.sxstge +++| PROC MSGAFDF; # ISSUE ACCOUNT-DAYFILE MESSAGE # 00335 M00S00335.sxstge +++| PROC RECALL; # RELEASE CPU FOR A MOMENT # 00336 M00S00336.sxstge +++| PROC REQWEST; # REQUEST EQUIPMENT ASSIGNMENT # 00337 M00S00337.sxstge +++| PROC RETERN; # RETURN A FILE # 00338 M00S00338.sxstge +++| PROC RLS$FCT; # RELEASE AN *FCT* ENTRY # 00339 M00S00339.sxstge +++| PROC SETAF; # SET ALTERNATE STORAGE FLAG # 00340 M00S00340.sxstge +++| PROC SETDA; # SET DISK ADDRESS # 00341 M00S00341.sxstge +++| PROC STERCAT; # STAGE ERROR PROCESSOR # 00342 M00S00342.sxstge +++| PROC STERPFM; # STAGE ERROR PROCESSOR # 00343 M00S00343.sxstge +++| PROC STNTDAM; # GET NEXT FILE TO STAGE # 00344 M00S00344.sxstge +++| PROC TELLSLV; # NOTIFY SLAVE # 00345 M00S00345.sxstge +++| PROC UREPLAC; # UTILITY REPLACE # 00346 M00S00346.sxstge +++| PROC ZSETFET; # INITIALIZE A FET # 00347 M00S00347.sxstge +++| END 00348 M00S00348.sxstge +++| 00349 M00S00349.sxstge +++|# 00350 M00S00350.sxstge +++|**** PROC STAGER - XREF LIST END. 00351 M00S00351.sxstge +++|# 00352 M00S00352.sxstge +++| 00353 M00S00353.sxstge +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 00354 M00S00354.sxstge +++|*CALL,COMBFAS 00355 M00S00355.sxstge +++|*CALL,COMBCHN 00356 M00S00356.sxstge +++|*CALL,COMBCMD 00357 M00S00357.sxstge +++|*CALL,COMBCMS 00358 M00S00358.sxstge +++|*CALL,COMBCPR 00359 M00S00359.sxstge +++|*CALL COMBLRQ 00360 M00S00360.sxstge +++|*CALL,COMBKDD 00361 M00S00361.sxstge +++|*CALL,COMBFET 00362 M00S00362.sxstge +++|*CALL,COMBMCT 00363 M00S00363.sxstge +++|*CALL,COMBPFP 00364 M00S00364.sxstge +++|*CALL,COMBPFS 00365 M00S00365.sxstge +++|*CALL,COMBTDM 00366 M00S00366.sxstge +++|*CALL,COMXCTF 00367 M00S00367.sxstge +++|*CALL,COMXEMC 00368 M00S00368.sxstge +++|*CALL COMBUDT 00369 M00S00369.sxstge +++|*CALL,COMXFCQ 00370 M00S00370.sxstge +++|*CALL,COMXHLR 00371 M00S00371.sxstge +++|*CALL,COMXIPR 00372 M00S00372.sxstge +++|*CALL,COMXJCA
Line S00001 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00373 M01S00001.sxstge3 +++|*CALL COMXMFD 00374 M00S00373.sxstge +++|*CALL,COMXMSC 00375 M00S00374.sxstge +++|*CALL,COMSPFM 00376 M00S00375.sxstge +++|
Line S00001 Modification History | |
---|---|
M01 (Added by) | sxstge2 |
Seq # *Modification Id* Act ----------------------------+ 00377 M01S00001.sxstge2 +++| ITEM FCTQADDR U; # FCTQ ADDRESS # 00378 M00S00376.sxstge +++| ITEM FLAG B; # FLAG # 00379 M00S00377.sxstge +++| ITEM QADDR U; # *FCTQ* ENTRY ADDRESS # 00380 M00S00378.sxstge +++| ITEM ACCL I; # ACCESS LEVEL # 00381 M00S00379.sxstge +++| ITEM STAT I; # STATUS # 00382 M00S00380.sxstge +++| ITEM DRDCOUNT U; # DRD COUNT #
Line S00002 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00383 M01S00002.sxstge3 +++| ITEM STDRDCT I; # DRD-S AVAILABLE FOR STAGING # 00384 M00S00381.sxstge +++| ITEM FULL B; # DRD RESERVATION TAKEN # 00385 M00S00382.sxstge +++| ITEM I I; # SM INDEX #
Line S00003 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00386 M01S00003.sxstge3 +++| ITEM J I; # SUBFAMILY INDEX # 00387 M00S00383.sxstge +++| ITEM TFCT U; # ASAFCT # 00388 M00S00384.sxstge +++| ITEM CURFCT U; # *FCT* OF A PARALLEL *HLRQ* # 00389 M00S00385.sxstge +++| ITEM TTDAMSBF U; # SUBFAMILY NUMBER # 00390 M00S00386.sxstge +++| ITEM TEMP I; # TEMPORARY #
Line S00001 Modification History | |
---|---|
M01 (Added by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00391 M01S00001.msea026 +++| ITEM TFAM C(7); # TEMPORARY FAMILY # 00392 M00S00387.sxstge +++| ITEM TMSG I; # TRACE MODE INDICATOR #
Line S00388 Modification History | |
---|---|
M01 (Removed by) | mse0012 |
Seq # *Modification Id* Act ----------------------------+ 00393 M01S00388.mse0012 ---|
Line S00001 Modification History | |
---|---|
M01 (Added by) | mse0012 |
Seq # *Modification Id* Act ----------------------------+ 00394 M01S00001.mse0012 +++| ITEM PASS B; # TEMPORARY PASS FLAG # 00395 M00S00389.sxstge +++| ITEM TEMP1 I; # TEMPORARY # 00396 M00S00390.sxstge +++| 00397 M00S00391.sxstge +++| ARRAY SCR$FET [0:0] P(SFETL); ; # SCRATCH FET # 00398 M00S00392.sxstge +++| 00399 M00S00393.sxstge +++| STATUS STLBL 00400 M00S00394.sxstge +++| ST1A, # RETRY *ASIGNPF* CALL # 00401 M00S00395.sxstge +++| ST2A, # RETRY *RLS$FCT* CALL # 00402 M00S00396.sxstge +++| ST2B, # RETRY *CFLUSH* CALL # 00403 M00S00397.sxstge +++| ST2C, # RE-ENTER AFTER "NORMAL" UNLOAD # 00404 M00S00398.sxstge +++| ST2D, # RE-ENTER AFTER "FORCED" LOAD # 00405 M00S00399.sxstge +++| ST2E, # RE-ENTER AFTER "FORCED" UNLOAD # 00406 M00S00400.sxstge +++| ST3A, # RE-ENTRY IF NO *DRD* # 00407 M00S00401.sxstge +++| ST3B, # RETRY *ACQ$FCT* CALL # 00408 M00S00402.sxstge +++| ST3C, # RE-ENTRY AFTER CARTRIDGE LOAD # 00409 M00S00403.sxstge +++| ST4A, # RE-ENTER AFTER *HLCPYCD* CALL # 00410 M00S00404.sxstge +++| ST6A, # RETRY *SETDA* OR *UREPLAC* CALL 00411 M00S00405.sxstge +++| # 00412 M00S00406.sxstge +++| ST6B, # *UREPLACE* COMPLETE # 00413 M00S00407.sxstge +++| ST7A, # WAIT FOR K-DISPLAY REPLY # 00414 M00S00408.sxstge +++| ST7B, # RETRY *SETAF* CALL # 00415 M00S00409.sxstge +++| STEND; # END OF LIST # 00416 M00S00410.sxstge +++| 00417 M00S00411.sxstge +++| 00418 M00S00412.sxstge +++| SWITCH STGENT:STLBL 00419 M00S00413.sxstge +++| ST1A:ST1A, 00420 M00S00414.sxstge +++| ST2A:ST2A, 00421 M00S00415.sxstge +++| ST2B:ST2B, 00422 M00S00416.sxstge +++| ST2C:ST2C, 00423 M00S00417.sxstge +++| ST2D:ST2D, 00424 M00S00418.sxstge +++| ST2E:ST2E, 00425 M00S00419.sxstge +++| ST3A:ST3A, 00426 M00S00420.sxstge +++| ST3B:ST3B, 00427 M00S00421.sxstge +++| ST3C:ST3C, 00428 M00S00422.sxstge +++| ST4A:ST4A, 00429 M00S00423.sxstge +++| ST6A:ST6A, 00430 M00S00424.sxstge +++| ST6B:ST6B, 00431 M00S00425.sxstge +++| ST7A:ST7A, 00432 M00S00426.sxstge +++| ST7B:ST7B; 00433 M00S00427.sxstge +++| 00434 M00S00428.sxstge +++| 00435 M00S00429.sxstge +++| BASED 00436 M00S00430.sxstge +++| ARRAY CLEAR [0:0] S(1); 00437 M00S00431.sxstge +++| BEGIN 00438 M00S00432.sxstge +++| ITEM CLN U(00,36,24); # CLEAR *DRD* ASSIGNMENTS # 00439 M00S00433.sxstge +++| ITEM DRDADR U(00,42,18); 00440 M00S00434.sxstge +++| END 00441 M00S00435.sxstge +++|
Line S00436 Modification History | |
---|---|
M01 (Removed by) | mse3 |
Seq # *Modification Id* Act ----------------------------+ 00442 M01S00436.mse3 ---| 00443 M01S00437.mse3 ---| ARRAY PFMRET [0:0] S(4); # PFM RETURN MESSAGE AREA # 00444 M01S00438.mse3 ---| BEGIN 00445 M01S00439.mse3 ---| ITEM PFMRETM C(00,00,40); # PFM RETURN MESSAGE # 00446 M01S00440.mse3 ---| END 00447 M01S00441.mse3 ---| 00448 M01S00442.mse3 ---| 00449 M00S00443.sxstge +++| CONTROL EJECT; 00450 M00S00444.sxstge +++| P<HLRQ> = HLRQADR; 00451 M00S00445.sxstge +++| P<TDAM> = LOC(HLR$TDAM[0]); 00452 M00S00446.sxstge +++| P<FCT> = HLR$FCTQ[0] + FCTQHL; 00453 M00S00447.sxstge +++| 00454 M00S00448.sxstge +++| GOTO STGENT[HLR$HPS[0]]; 00455 M00S00449.sxstge +++| CONTROL EJECT; 00456 M00S00450.sxstge +++| 00457 M00S00451.sxstge +++|# 00458 M00S00452.sxstge +++|* STEP 1 - SET UP TO STAGE THE NEXT FILE. 00459 M00S00453.sxstge +++|* - ASSIGN STAGING DISK TO A DIRECT ACCESS FILE. 00460 M00S00454.sxstge +++|* - INITIALIZE *HLRQ* FIELDS. 00461 M00S00455.sxstge +++|# 00462 M00S00456.sxstge +++| 00463 M00S00457.sxstge +++|ST1A: # TO RETRY *ASIGNPF* CALL # 00464 M00S00458.sxstge +++|RETRYFILE: # IF UNRECOVERABLE READ ERRORS # 00465 M00S00459.sxstge +++| 00466 M00S00460.sxstge +++| IF TDAMFC[0] NQ TDAMFCODE"NOREQ" 00467 M00S00461.sxstge +++| THEN # A FILE IS TO BE STAGED # 00468 M00S00462.sxstge +++| BEGIN # STEP 1 # 00469 M00S00463.sxstge +++| HLR$RESP[0] = ERRST"NOERR"; 00470 M00S00464.sxstge +++| IF NOT TDAMIA[0] 00471 M00S00465.sxstge +++| THEN # DIRECT ACCESS # 00472 M00S00466.sxstge +++| BEGIN # ASSIGN STAGING DISK # 00473 M00S00467.sxstge +++| NAMEC[0] = HLR$FLNM[0]; 00474 M00S00468.sxstge +++| NAMEC[1] = TDAMFAM[0]; 00475 M00S00469.sxstge +++| ACCL = TDAMAL[0]; 00476 M00S00470.sxstge +++| ASIGNPF(NAME[0],STAT,6,TDAMFLN[0], ## 00477 M00S00471.sxstge +++| 00478 M00S00472.sxstge +++| TDAMUI[0],NAME[1],ACCL,LOC(PFMRET)); 00479 M00S00473.sxstge +++| 00480 M00S00474.sxstge +++| IF STAT EQ LNP 00481 M00S00475.sxstge +++| THEN # LEVEL INVALID ON DEVICE # 00482 M00S00476.sxstge +++| BEGIN 00483 M00S00477.sxstge +++| HLR$RESP[0] = ERRST"PERM"; 00484 M00S00478.sxstge +++| HLR$PEF[0] = AFTMP; 00485 M00S00479.sxstge +++| HLR$ERRC[0] = STGERRC"NOLVL"; 00486 M00S00480.sxstge +++| GOTO STGERR; 00487 M00S00481.sxstge +++| END 00488 M00S00482.sxstge +++| 00489 M00S00483.sxstge +++| IF STAT NQ OK 00490 M00S00484.sxstge +++| THEN 00491 M00S00485.sxstge +++| BEGIN 00492 M00S00486.sxstge +++| STERPFM(HLRQADR,STAT); 00493 M00S00487.sxstge +++| IF HLR$RESP[0] NQ ERRST"NOERR" 00494 M00S00488.sxstge +++| THEN 00495 M00S00489.sxstge +++| BEGIN 00496 M00S00490.sxstge +++| HLR$HPS[0] = STLBL"ST1A"; 00497 M00S00491.sxstge +++| HLR$ERRC[0] = STGERRC"DSKFULL"; 00498 M00S00492.sxstge +++| GOTO STGERR; 00499 M00S00493.sxstge +++| END 00500 M00S00494.sxstge +++| 00501 M00S00495.sxstge +++| END 00502 M00S00496.sxstge +++| 00503 M00S00497.sxstge +++| END # ASSIGN STAGING DISK # 00504 M00S00498.sxstge +++| 00505 M00S00499.sxstge +++|# 00506 M00S00500.sxstge +++|* INITIALIZE *HLRQ* FIELDS. 00507 M00S00501.sxstge +++|# 00508 M00S00502.sxstge +++| 00509 M00S00503.sxstge +++| P<ASA> = LOC(TDAMASA[0]); 00510 M00S00504.sxstge +++| HLR$VOLAU[0] = ASAAU[0]; 00511 M00S00505.sxstge +++| HLR$FCTXN[0] = ASAFCT[0]; 00512 M00S00506.sxstge +++| HLR$SM[0] = ASASM[0]; 00513 M00S00507.sxstge +++| 00514 M00S00508.sxstge +++| HLR$PRU[0] = 0; 00515 M00S00509.sxstge +++| HLR$VOLAUP[0] = 0; 00516 M00S00510.sxstge +++| HLR$VOLLNP[0] = 0; 00517 M00S00511.sxstge +++| HLR$CSNDP[0] = ""; 00518 M00S00512.sxstge +++| HLR$CCODP[0] = ""; 00519 M00S00513.sxstge +++| 00520 M00S00514.sxstge +++| HLR$FFF[0] = TDAMFFF[0]; 00521 M00S00515.sxstge +++| HLR$FVOL = TRUE; 00522 M00S00516.sxstge +++| HLR$EOI[0] = FALSE; 00523 M00S00517.sxstge +++| END # STEP 1 # 00524 M00S00518.sxstge +++| 00525 M00S00519.sxstge +++| CONTROL EJECT; 00526 M00S00520.sxstge +++| 00527 M00S00521.sxstge +++|# 00528 M00S00522.sxstge +++|* STEP 2 - UNLOAD CARTRIDGE. 00529 M00S00523.sxstge +++|* - USE *HLUNLD* TO DO THE UNLOAD. 00530 M00S00524.sxstge +++|* IT UPDATES USAGE DATA IN THE *FCT* ENTRY. 00531 M00S00525.sxstge +++|* - RELEASE THE *FCT* ENTRY. 00532 M00S00526.sxstge +++|* - EXIT FROM STAGER IF NO MORE FILES REMAIN. 00533 M00S00527.sxstge +++|# 00534 M00S00528.sxstge +++| 00535 M00S00529.sxstge +++|UNLOAD: # TO RETRY READ ON OTHER *DRD* OR 00536 M00S00530.sxstge +++| ADVANCE TO NEXT CARTRIDGE # 00537 M00S00531.sxstge +++| 00538 M00S00532.sxstge +++| IF HLR$UNLD[0] OR ## 00539 M00S00533.sxstge +++| (HLR$FCTX[0] NQ 0 AND ## 00540 M00S00534.sxstge +++| (HLR$FCTX[0] NQ HLR$FCTXN[0])) 00541 M00S00535.sxstge +++| THEN # UNLOAD A CARTRIDGE # 00542 M00S00536.sxstge +++| BEGIN # STEP 2 # 00543 M00S00537.sxstge +++| IF HLR$FCTQ[0] NQ 0 00544 M00S00538.sxstge +++| THEN 00545 M00S00539.sxstge +++| BEGIN 00546 M00S00540.sxstge +++| UPUSAGE(HLRQADR,HLR$FCTQ[0]); 00547 M00S00541.sxstge +++| END 00548 M00S00542.sxstge +++| 00549 M00S00543.sxstge +++|ST2A: # TO RETRY *RLS$FCT* CALL # 00550 M00S00544.sxstge +++| IF HLR$FCTQ[0] NQ 0 00551 M00S00545.sxstge +++| THEN 00552 M00S00546.sxstge +++| BEGIN 00553 M00S00547.sxstge +++| RLS$FCT(HLR$FCTQ[0],0,STAT); 00554 M00S00548.sxstge +++| 00555 M00S00549.sxstge +++| IF STAT NQ CMASTAT"NOERR" 00556 M00S00550.sxstge +++| THEN 00557 M00S00551.sxstge +++| BEGIN 00558 M00S00552.sxstge +++| HLR$HPS[0] = STLBL"ST2A"; 00559 M00S00553.sxstge +++| STERCAT(HLRQADR,STAT); 00560 M00S00554.sxstge +++| GOTO STGERR; 00561 M00S00555.sxstge +++| END 00562 M00S00556.sxstge +++| 00563 M00S00557.sxstge +++|ST2B: 00564 M00S00558.sxstge +++| CFLUSH(TDAMFAM[0],TDAMSBF[0],HLRQADR,STAT); 00565 M00S00559.sxstge +++| 00566 M00S00560.sxstge +++| IF STAT NQ CMASTAT"NOERR" 00567 M00S00561.sxstge +++| THEN 00568 M00S00562.sxstge +++| BEGIN 00569 M00S00563.sxstge +++| HLR$HPS[0] = STLBL"ST2B"; 00570 M00S00564.sxstge +++| STERCAT(HLRQADR,STAT); 00571 M00S00565.sxstge +++| GOTO STGERR; 00572 M00S00566.sxstge +++| END 00573 M00S00567.sxstge +++| 00574 M00S00568.sxstge +++| END 00575 M00S00569.sxstge +++| 00576 M00S00570.sxstge +++| HLR$FCTQ[0] = 0; 00577 M00S00571.sxstge +++| HLR$FCTX[0] = 0; 00578 M00S00572.sxstge +++| 00579 M00S00573.sxstge +++| IF HLR$HLRQW[0] NQ 0 00580 M00S00574.sxstge +++| THEN # SWITCH CONTROL OF *DRD* TO WAITTING *HLRQ* # 00581 M00S00575.sxstge +++| BEGIN 00582 M00S00576.sxstge +++| TEMP = HLR$DRDRA[0]; 00583 M00S00577.sxstge +++| TEMP1 = HLR$LRQADR[0]; 00584 M00S00578.sxstge +++| P<HLRQ> = HLR$HLRQW[0]; 00585 M00S00579.sxstge +++| HLR$DRDRA[0] = TEMP; 00586 M00S00580.sxstge +++| HLR$LRQADR[0] = TEMP1;
Line S00004 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00587 M01S00004.sxstge3 +++| 00588 M01S00005.sxstge3 +++| IF HLR$LRQADR[0] EQ 0 00589 M01S00006.sxstge3 +++| THEN 00590 M01S00007.sxstge3 +++| BEGIN # TELL NEXT HLRQ CARTRIDGE LOADED BAD # 00591 M01S00008.sxstge3 +++| HLR$RESP[0] = ERRST"TEMP"; 00592 M01S00009.sxstge3 +++| END 00593 M01S00010.sxstge3 +++| 00594 M00S00581.sxstge +++| P<HLRQ> = HLRQADR; 00595 M00S00582.sxstge +++| ADD$LNK(HLR$HLRQW[0],LCHN"HL$READY",0); 00596 M00S00583.sxstge +++| P<LLRQ> = HLR$LRQADR[0]; 00597 M00S00584.sxstge +++| LLR$UCPRA[0] = HLR$HLRQW[0]; #INSURE PPU POINTS TO NEW *HLRQ*# 00598 M00S00585.sxstge +++| P<CLEAR> = HLR$DRDRA[0] ; 00599 M00S00586.sxstge +++| DRDADR = HLR$HLRQW[0]; 00600 M00S00587.sxstge +++| HLR$HLRQW[0] = 0; 00601 M00S00588.sxstge +++| HLR$DRDRA[0] = 0; 00602 M00S00589.sxstge +++| HLR$LRQADR[0] = 0; 00603 M00S00590.sxstge +++| END 00604 M00S00591.sxstge +++| 00605 M00S00592.sxstge +++| IF HLR$LRQADR[0] NQ 0 00606 M00S00593.sxstge +++| THEN 00607 M00S00594.sxstge +++| BEGIN # PHYSICAL UNLOAD # 00608 M00S00595.sxstge +++| P<LLRQ> = HLR$LRQADR[0]; 00609 M00S00596.sxstge +++| MSGAFDF("I","UL",0,HLRQADR); 00610 M00S00597.sxstge +++| LLR$DR[0] = ERRST"NOERR"; 00611 M00S00598.sxstge +++| LLR$PRCNME[0] = REQTYP4"UNLD$CART"; 00612 M00S00599.sxstge +++| LLR$PRCST[0] = PROCST"INITIAL"; 00613 M00S00600.sxstge +++| HLR$HPS[0] = STLBL"ST2C"; 00614 M00S00601.sxstge +++| ADD$LNK(HLR$LRQADR[0],LCHN"LL$READY",0); 00615 M00S00602.sxstge +++| RETURN; 00616 M00S00603.sxstge +++| 00617 M00S00604.sxstge +++|ST2C: # RETURN FROM UNLOAD OF CARTRIDGE # 00618 M00S00605.sxstge +++| 00619 M00S00606.sxstge +++| IF HLR$RESP[0] NQ RESPTYP4"OK4" 00620 M00S00607.sxstge +++| THEN 00621 M00S00608.sxstge +++| BEGIN 00622 M00S00609.sxstge +++| 00623 M00S00610.sxstge +++|# 00624 M00S00611.sxstge +++|* PROCESS UNLOAD CARTRIDGE ERROR AS FOLLOWS: 00625 M00S00612.sxstge +++|* -DRIVER PLACED ORIGINAL CARTRIDGE IN OUTPUT STATION. 00626 M00S00613.sxstge +++|* -ASSUME A SECOND CARTRIDGE WAS IN DESTINATION CELL. 00627 M00S00614.sxstge +++|* -ATTEMPT TO MOVE THIS 2ND CARTRIDGE TO THE OUTPUT 00628 M00S00615.sxstge +++|* STATION BY LOADING IT. 00629 M00S00616.sxstge +++|* -IF THE LOAD SUCCEEDS, DO A SECOND UNLOAD BACK TO 00630 M00S00617.sxstge +++|* THE ORIGINAL DESTINATION. 00631 M00S00618.sxstge +++|# 00632 M00S00619.sxstge +++| 00633 M00S00620.sxstge +++| HLLDSET((HLRQADR)); # SET UP SECOND LOAD # 00634 M00S00621.sxstge +++| P<HLRQ> = HLRQADR; 00635 M00S00622.sxstge +++| HLR$HPS[0] = STLBL"ST2D"; 00636 M00S00623.sxstge +++| RETURN; 00637 M00S00624.sxstge +++| 00638 M00S00625.sxstge +++|ST2D: # RETURN FROM SECOND LOAD # 00639 M00S00626.sxstge +++| 00640 M00S00627.sxstge +++| IF HLR$RESP[0] EQ RESPTYP4"OK4" 00641 M00S00628.sxstge +++| THEN # UNLOAD 2ND CARTRIDGE # 00642 M00S00629.sxstge +++| BEGIN 00643 M00S00630.sxstge +++| LLR$PRCNME[0] = REQTYP4"UNLD$CART"; 00644 M00S00631.sxstge +++| LLR$PRCST[0] = PROCST"INITIAL"; 00645 M00S00632.sxstge +++| HLR$HPS[0] = STLBL"ST2E"; 00646 M00S00633.sxstge +++| ADD$LNK(HLR$LRQADR[0],LCHN"LL$READY",0); 00647 M00S00634.sxstge +++| RETURN; 00648 M00S00635.sxstge +++| 00649 M00S00636.sxstge +++|ST2E: 00650 M00S00637.sxstge +++| END # UNLOAD OF 2ND REQUEST # 00651 M00S00638.sxstge +++| END # LOAD OF 2ND REQUEST # 00652 M00S00639.sxstge +++| 00653 M00S00640.sxstge +++| 00654 M00S00641.sxstge +++| HLR$RESP[0] = ERRST"NOERR"; 00655 M00S00642.sxstge +++| IF HLR$DRDRA[0] NQ 0 00656 M00S00643.sxstge +++| THEN # DROP *DRD* RESERVATION # 00657 M00S00644.sxstge +++| BEGIN 00658 M00S00645.sxstge +++| P<CLEAR> = HLR$DRDRA[0]; 00659 M00S00646.sxstge +++| CLN = 0 ; 00660 M00S00647.sxstge +++| HLR$DRDRA[0] = 0; 00661 M00S00648.sxstge +++| END 00662 M00S00649.sxstge +++| END # PHYSICAL UNLOAD # 00663 M00S00650.sxstge +++| 00664 M00S00651.sxstge +++| 00665 M00S00652.sxstge +++| IF TDAMFC[0] EQ TDAMFCODE"NOREQ" 00666 M00S00653.sxstge +++| THEN # NO MORE FILES TO STAGE # 00667 M00S00654.sxstge +++| BEGIN 00668 M00S00655.sxstge +++|
Line S00011 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00669 M01S00011.sxstge3 +++| IF DSC$WRESRS NQ 0 00670 M01S00012.sxstge3 +++| THEN # FORCE A DESTAGE RESTART # 00671 M01S00013.sxstge3 +++| BEGIN 00672 M01S00014.sxstge3 +++| DSC$WRESRS = 0; 00673 M01S00015.sxstge3 +++| DSC$INIT = 1; 00674 M01S00016.sxstge3 +++| END 00675 M01S00017.sxstge3 +++| 00676 M00S00656.sxstge +++| SLOWFOR I=1 STEP 1 UNTIL MAXSMUNIT 00677 M00S00657.sxstge +++| DO 00678 M00S00658.sxstge +++| BEGIN # FIND *SM* # 00679 M00S00659.sxstge +++| IF HLR$SM[0] EQ SM$ID[I] 00680 M00S00660.sxstge +++| THEN 00681 M00S00661.sxstge +++| BEGIN
Line S00662 Modification History | |
---|---|
M01 (Removed by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00682 M01S00662.sxstge3 ---| SM$DSRQF[I] = FALSE;
Line S00018 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00683 M01S00018.sxstge3 +++| IF SM$DSRFW[I] NQ 0 00684 M01S00019.sxstge3 +++| THEN 00685 M01S00020.sxstge3 +++| BEGIN # DESTAGE WAITING *DRD* # 00686 M01S00021.sxstge3 +++| 00687 M01S00022.sxstge3 +++| SLOWFOR J = 0 STEP 1 UNTIL MAXSF 00688 M01S00023.sxstge3 +++| DO 00689 M01S00024.sxstge3 +++| BEGIN # CHECK FOR DESTAGE WAITING # 00690 M01S00025.sxstge3 +++| 00691 M01S00026.sxstge3 +++| IF B<J>SM$DSRFW0[I] NQ 0 00692 M01S00027.sxstge3 +++| THEN 00693 M01S00028.sxstge3 +++| BEGIN 00694 M01S00029.sxstge3 +++| B<J>SM$DSRFW0[I] = 0; 00695 M01S00030.sxstge3 +++| SCR$WTDRD[J] = FALSE; 00696 M01S00031.sxstge3 +++| DSC$INIT = 1; 00697 M01S00032.sxstge3 +++| GOTO FREE; 00698 M01S00033.sxstge3 +++| END 00699 M01S00034.sxstge3 +++| END # COMPLETED CHECK OF WAITING # 00700 M01S00035.sxstge3 +++| END 00701 M00S00663.sxstge +++| END 00702 M00S00664.sxstge +++| END 00703 M00S00665.sxstge +++|
Line S00036 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00704 M01S00036.sxstge3 +++|FREE: 00705 M00S00666.sxstge +++| 00706 M00S00667.sxstge +++| IF HLR$DRDRA[0] NQ 0 00707 M00S00668.sxstge +++| THEN # DROP *DRD* RESERVATION # 00708 M00S00669.sxstge +++| BEGIN 00709 M00S00670.sxstge +++| P<CLEAR> = HLR$DRDRA[0]; 00710 M00S00671.sxstge +++| CLN = 0; 00711 M00S00672.sxstge +++| END 00712 M00S00673.sxstge +++| 00713 M00S00674.sxstge +++| HLR$HPS[0] = PROCST"COMPLETE"; 00714 M00S00675.sxstge +++| RETURN; 00715 M00S00676.sxstge +++| END 00716 M00S00677.sxstge +++| 00717 M00S00678.sxstge +++| IF HLR$PRU[0] NQ 0 00718 M00S00679.sxstge +++| THEN # CONTINED AU FROM AN OTHER CARTRIDGE # 00719 M00S00680.sxstge +++| BEGIN 00720 M00S00681.sxstge +++| HLR$CSNTPS[0] = HLR$CSNTCU[0]; 00721 M00S00682.sxstge +++| END 00722 M00S00683.sxstge +++| 00723 M00S00684.sxstge +++| END # STEP 2 # 00724 M00S00685.sxstge +++| 00725 M00S00686.sxstge +++| CONTROL EJECT; 00726 M00S00687.sxstge +++| 00727 M00S00688.sxstge +++|# 00728 M00S00689.sxstge +++|* STEP 3 - LOAD NEXT CARTRIDGE, IF NEEDED. 00729 M00S00690.sxstge +++|* - ACQUIRE *FCT* ENTRY FOR NEW CARTRIDGE. 00730 M00S00691.sxstge +++|* - SET UP *HLRQ* FIELDS TO IDENTIFY CARTRIDGE. 00731 M00S00692.sxstge +++|* - USE *HLLOAD* TO DO THE PHYSICAL LOAD. 00732 M00S00693.sxstge +++|* - SET THE FREE FILE FLAG IN THE *HLRQ* IF ITS 00733 M00S00694.sxstge +++|* SET IN THE *FCT*. 00734 M00S00695.sxstge +++|# 00735 M00S00696.sxstge +++| 00736 M00S00697.sxstge +++|ST3A: # TO RETRY CALL TO *ACQ$FCT* # 00737 M00S00698.sxstge +++| SLOWFOR I=1 STEP 1 UNTIL MAXSMUNIT 00738 M00S00699.sxstge +++| DO 00739 M00S00700.sxstge +++| BEGIN # FIND *SM* # 00740 M00S00701.sxstge +++| IF HLR$SM[0] EQ SM$ID[I] 00741 M00S00702.sxstge +++| THEN 00742 M00S00703.sxstge +++| BEGIN 00743 M00S00704.sxstge +++| GOTO SMFOUND; 00744 M00S00705.sxstge +++| END 00745 M00S00706.sxstge +++| END 00746 M00S00707.sxstge +++| 00747 M00S00708.sxstge +++|SMFOUND: 00748 M00S00709.sxstge +++| 00749 M00S00710.sxstge +++| DRDCOUNT = 0; 00750 M00S00711.sxstge +++| FULL = FALSE; 00751 M00S00712.sxstge +++| 00752 M00S00713.sxstge +++| IF D0$ON[I] 00753 M00S00714.sxstge +++| THEN 00754 M00S00715.sxstge +++| BEGIN 00755 M00S00716.sxstge +++| DRDCOUNT = 1; 00756 M00S00717.sxstge +++| END 00757 M00S00718.sxstge +++| 00758 M00S00719.sxstge +++| IF D1$ON[I] 00759 M00S00720.sxstge +++| THEN 00760 M00S00721.sxstge +++| BEGIN 00761 M00S00722.sxstge +++| DRDCOUNT = DRDCOUNT + 1; 00762 M00S00723.sxstge +++| END 00763 M00S00724.sxstge +++| 00764 M00S00725.sxstge +++| IF SM$REQRES1[I] NQ 0 00765 M00S00726.sxstge +++| AND SM$REQRES2[I] NQ 0 00766 M00S00727.sxstge +++| THEN 00767 M00S00728.sxstge +++| BEGIN 00768 M00S00729.sxstge +++| FULL = TRUE; 00769 M00S00730.sxstge +++| END 00770 M00S00731.sxstge +++| 00771 M00S00732.sxstge +++| IF DRDCOUNT EQ 1 00772 M00S00733.sxstge +++| THEN 00773 M00S00734.sxstge +++| BEGIN 00774 M00S00735.sxstge +++| IF (SM$REQRES1[I] NQ 0) 00775 M00S00736.sxstge +++| OR (SM$REQRES2[I] NQ 0) 00776 M00S00737.sxstge +++| THEN 00777 M00S00738.sxstge +++| BEGIN 00778 M00S00739.sxstge +++| FULL = TRUE; 00779 M00S00740.sxstge +++| END 00780 M00S00741.sxstge +++| END 00781 M00S00742.sxstge +++| 00782 M00S00743.sxstge +++| HLR$HPS[0] = STLBL"ST3A"; 00783 M00S00744.sxstge +++| 00784 M00S00745.sxstge +++| IF HLR$DRDRA EQ 0 00785 M00S00746.sxstge +++| THEN 00786 M00S00747.sxstge +++| BEGIN 00787 M00S00748.sxstge +++| TTDAMSBF = HLR$SBF[0]; 00788 M00S00749.sxstge +++| TFCT = HLR$FCTXN[0];
Line S00002 Modification History | |
---|---|
M01 (Added by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00789 M01S00002.msea026 +++| TFAM = HLR$FAM[0]; 00790 M00S00750.sxstge +++| 00791 M00S00751.sxstge +++| IF NOT SM$LLRQ1[I] 00792 M00S00752.sxstge +++| THEN 00793 M00S00753.sxstge +++| BEGIN 00794 M00S00754.sxstge +++| 00795 M00S00755.sxstge +++| IF SM$REQRES1[I] NQ 0 00796 M00S00756.sxstge +++| AND SM$REQRES1[I] NQ HLRQADR 00797 M00S00757.sxstge +++| THEN 00798 M00S00758.sxstge +++| BEGIN 00799 M00S00759.sxstge +++| P<HLRQ> = SM$REQRES1[I]; 00800 M00S00760.sxstge +++| 00801 M00S00761.sxstge +++| IF HLR$FCTX[0] NQ 0 00802 M00S00762.sxstge +++| THEN 00803 M00S00763.sxstge +++| BEGIN 00804 M00S00764.sxstge +++| CURFCT = HLR$FCTX[0]; 00805 M00S00765.sxstge +++| END 00806 M00S00766.sxstge +++| ELSE 00807 M00S00767.sxstge +++| BEGIN 00808 M00S00768.sxstge +++| CURFCT = HLR$ASAFCT[0]; 00809 M00S00769.sxstge +++| END 00810 M00S00770.sxstge +++| 00811 M00S00771.sxstge +++|
Line S00772 Modification History | |
---|---|
M01 (Removed by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00812 M01S00772.msea026 ---| IF TFCT EQ CURFCT 00813 M01S00773.msea026 ---| AND TTDAMSBF EQ HLR$SBF[0]
Line S00003 Modification History | |
---|---|
M01 (Added by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00814 M01S00003.msea026 +++| IF (TFCT EQ CURFCT) 00815 M01S00004.msea026 +++| AND (TTDAMSBF EQ HLR$SBF[0]) 00816 M01S00005.msea026 +++| AND (TFAM EQ HLR$FAM[0]) 00817 M00S00774.sxstge +++| THEN # REQUESTING CARTRIDGE MOUNTED # 00818 M00S00775.sxstge +++| BEGIN 00819 M00S00776.sxstge +++|NEXTHLRQ: 00820 M00S00777.sxstge +++| IF HLR$HLRQW[0] EQ 0 00821 M00S00778.sxstge +++| THEN 00822 M00S00779.sxstge +++| BEGIN # END OF *HLRQ* WRITING CARTRIDGE # 00823 M00S00780.sxstge +++| HLR$HLRQW[0] = HLRQADR; 00824 M00S00781.sxstge +++| P<HLRQ> = HLRQADR; 00825 M00S00782.sxstge +++| STG$MSK = 0; 00826 M00S00783.sxstge +++| RETURN; 00827 M00S00784.sxstge +++| END 00828 M00S00785.sxstge +++| ELSE 00829 M00S00786.sxstge +++| BEGIN # FIND END OF *HLRQ* WRITING # 00830 M00S00787.sxstge +++| P<HLRQ> = HLR$HLRQW[0]; 00831 M00S00788.sxstge +++| GOTO NEXTHLRQ; 00832 M00S00789.sxstge +++| END 00833 M00S00790.sxstge +++| END 00834 M00S00791.sxstge +++| END 00835 M00S00792.sxstge +++| END # SM$LLRQ1 CHECK # 00836 M00S00793.sxstge +++| 00837 M00S00794.sxstge +++| IF NOT SM$LLRQ2[I] 00838 M00S00795.sxstge +++| THEN 00839 M00S00796.sxstge +++| BEGIN 00840 M00S00797.sxstge +++| 00841 M00S00798.sxstge +++| IF SM$REQRES2[I] NQ 0 00842 M00S00799.sxstge +++| AND SM$REQRES2[I] NQ HLRQADR 00843 M00S00800.sxstge +++| THEN 00844 M00S00801.sxstge +++| BEGIN 00845 M00S00802.sxstge +++| P<HLRQ> = SM$REQRES2[I]; 00846 M00S00803.sxstge +++| 00847 M00S00804.sxstge +++| IF HLR$FCTX[0] NQ 0 00848 M00S00805.sxstge +++| THEN 00849 M00S00806.sxstge +++| BEGIN 00850 M00S00807.sxstge +++| CURFCT = HLR$FCTX[0]; 00851 M00S00808.sxstge +++| END 00852 M00S00809.sxstge +++| ELSE 00853 M00S00810.sxstge +++| BEGIN 00854 M00S00811.sxstge +++| CURFCT = HLR$ASAFCT[0]; 00855 M00S00812.sxstge +++| END 00856 M00S00813.sxstge +++| 00857 M00S00814.sxstge +++|
Line S00815 Modification History | |
---|---|
M01 (Removed by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00858 M01S00815.msea026 ---| IF TFCT EQ CURFCT 00859 M01S00816.msea026 ---| AND TTDAMSBF EQ HLR$SBF[0]
Line S00006 Modification History | |
---|---|
M01 (Added by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00860 M01S00006.msea026 +++| IF (TFCT EQ CURFCT) 00861 M01S00007.msea026 +++| AND (TTDAMSBF EQ HLR$SBF[0]) 00862 M01S00008.msea026 +++| AND (TFAM EQ HLR$FAM[0]) 00863 M00S00817.sxstge +++| THEN # REQUESTING CARTRIDGE MOUNTED # 00864 M00S00818.sxstge +++| BEGIN 00865 M00S00819.sxstge +++|NEXTHLRQ1: 00866 M00S00820.sxstge +++| IF HLR$HLRQW[0] EQ 0 00867 M00S00821.sxstge +++| THEN 00868 M00S00822.sxstge +++| BEGIN # END OF *HLRQ* WRITING CARTRIDGE # 00869 M00S00823.sxstge +++| HLR$HLRQW[0] = HLRQADR; 00870 M00S00824.sxstge +++| P<HLRQ> = HLRQADR; 00871 M00S00825.sxstge +++| STG$MSK = 0; 00872 M00S00826.sxstge +++| RETURN; 00873 M00S00827.sxstge +++| END 00874 M00S00828.sxstge +++| ELSE 00875 M00S00829.sxstge +++| BEGIN # FIND END OF *HLRQ* WRITING # 00876 M00S00830.sxstge +++| P<HLRQ> = HLR$HLRQW[0]; 00877 M00S00831.sxstge +++| GOTO NEXTHLRQ1; 00878 M00S00832.sxstge +++| END 00879 M00S00833.sxstge +++| END 00880 M00S00834.sxstge +++| END 00881 M00S00835.sxstge +++| END # SM$LLRQ2 CHECK # 00882 M00S00836.sxstge +++| 00883 M00S00837.sxstge +++| P<HLRQ> = HLRQADR; 00884 M00S00838.sxstge +++|
Line S00002 Modification History | |
---|---|
M01 (Added by) | sxstge2 |
Seq # *Modification Id* Act ----------------------------+ 00885 M01S00002.sxstge2 +++| FCTQADDR = CHN$BOC[LCHN"FCT$FRSPC"]; 00886 M00S00839.sxstge +++| IF FULL
Line S00003 Modification History | |
---|---|
M01 (Added by) | sxstge2 |
Seq # *Modification Id* Act ----------------------------+ 00887 M01S00003.sxstge2 +++| OR (FCTQADDR EQ 0) 00888 M00S00840.sxstge +++| THEN 00889 M00S00841.sxstge +++| BEGIN 00890 M00S00842.sxstge +++| ADD$LNK(HLRQADR,LCHN"HL$DRDRESW",0); 00891 M00S00843.sxstge +++| RETURN; 00892 M00S00844.sxstge +++| END 00893 M00S00845.sxstge +++| 00894 M00S00846.sxstge +++| ELSE 00895 M00S00847.sxstge +++| BEGIN 00896 M00S00848.sxstge +++| IF SM$REQRES1[I] EQ 0 00897 M00S00849.sxstge +++| THEN 00898 M00S00850.sxstge +++| BEGIN 00899 M00S00851.sxstge +++| SM$REQRES1[I] = HLRQADR; 00900 M00S00852.sxstge +++| HLR$DRDRA[0] = LOC(SM$REQRES1[I]); 00901 M00S00853.sxstge +++| END 00902 M00S00854.sxstge +++| 00903 M00S00855.sxstge +++| ELSE 00904 M00S00856.sxstge +++| BEGIN 00905 M00S00857.sxstge +++| SM$REQRES2[I] = HLRQADR; 00906 M00S00858.sxstge +++| HLR$DRDRA[0] = LOC(SM$REQRES2[I]); 00907 M00S00859.sxstge +++| END 00908 M00S00860.sxstge +++| END # RESERVE OF *DRD* # 00909 M00S00861.sxstge +++| END # DRD RESERVE # 00910 M00S00862.sxstge +++| 00911 M00S00863.sxstge +++|ST3B: # TO RETRY CALL TO *ACQ$FCT* # 00912 M00S00864.sxstge +++| IF HLR$FCTQ[0] EQ 0 00913 M00S00865.sxstge +++| THEN 00914 M00S00866.sxstge +++| BEGIN # STEP 3 # 00915 M00S00867.sxstge +++| HLR$FCTX[0] = HLR$FCTXN[0]; 00916 M00S00868.sxstge +++| ACQ$FCT(TDAMFAM[0],TDAMSBF[0],HLR$SM[0],HLR$FCTX[0], ## 00917 M00S00869.sxstge +++| QADDR,HLRQADR,STAT); 00918 M00S00870.sxstge +++| 00919 M00S00871.sxstge +++| IF STAT NQ CMASTAT"NOERR" 00920 M00S00872.sxstge +++| THEN 00921 M00S00873.sxstge +++| BEGIN 00922 M00S00874.sxstge +++| STERCAT(HLRQADR,STAT); 00923 M00S00875.sxstge +++| HLR$HPS[0] = STLBL"ST3B"; # IF WAIT FOR INTERLOCK #
Line S00876 Modification History | |
---|---|
M01 (Removed by) | msea027 |
Seq # *Modification Id* Act ----------------------------+ 00924 M01S00876.msea027 ---| GOTO STGERR;
Line S00001 Modification History | |
---|---|
M01 (Added by) | msea027 |
Seq # *Modification Id* Act ----------------------------+ 00925 M01S00001.msea027 +++| IF HLR$RESP[0] EQ ERRST"WAIT" 00926 M01S00002.msea027 +++| THEN 00927 M01S00003.msea027 +++| BEGIN 00928 M01S00004.msea027 +++| RETURN; 00929 M01S00005.msea027 +++| END 00930 M01S00006.msea027 +++| ELSE 00931 M01S00007.msea027 +++| BEGIN 00932 M01S00008.msea027 +++| GOTO STGERR; 00933 M01S00009.msea027 +++| END 00934 M00S00877.sxstge +++| END 00935 M00S00878.sxstge +++| 00936 M00S00879.sxstge +++|# 00937 M00S00880.sxstge +++| REM - CHANGE STERCAT TO REPLY "TEMPERR" NOT ABANDON. 00938 M00S00881.sxstge +++|# 00939 M00S00882.sxstge +++| 00940 M00S00883.sxstge +++|# 00941 M00S00884.sxstge +++|* UPDATE *HLRQ* TO REFLECT THIS CARTRIDGE. 00942 M00S00885.sxstge +++|# 00943 M00S00886.sxstge +++| 00944 M00S00887.sxstge +++| HLR$FCTQ[0] = QADDR; 00945 M00S00888.sxstge +++| P<FCT> = QADDR + FCTQHL; 00946 M00S00889.sxstge +++| 00947 M00S00890.sxstge +++|# 00948 M00S00891.sxstge +++|* CHECK FOR ZERO *FCT* ENTRY. 00949 M00S00892.sxstge +++|# 00950 M00S00893.sxstge +++| 00951 M00S00894.sxstge +++| IF FCT$CSND[0] EQ "" 00952 M00S00895.sxstge +++| OR FCT$1ST[0] EQ 0 00953 M00S00896.sxstge +++| THEN 00954 M00S00897.sxstge +++| BEGIN 00955 M00S00898.sxstge +++| STAT = CMASTAT"NOSUBCAT"; 00956 M00S00899.sxstge +++| STERCAT(HLRQADR,STAT); 00957 M00S00900.sxstge +++| GOTO STGERR; 00958 M00S00901.sxstge +++| END 00959 M00S00902.sxstge +++| 00960 M00S00903.sxstge +++| HLR$Y[0] = FCT$Y[0]; 00961 M00S00904.sxstge +++| HLR$Z[0] = FCT$Z[0]; 00962 M00S00905.sxstge +++| HLR$CSND[0] = FCT$CSND[0]; 00963 M00S00906.sxstge +++| HLR$CCOD[0] = FCT$CCOD[0]; 00964 M00S00907.sxstge +++| 00965 M00S00908.sxstge +++|# 00966 M00S00909.sxstge +++|* LOAD CARTRIDGE USING *HLLOAD*. 00967 M00S00910.sxstge +++|# 00968 M00S00911.sxstge +++| 00969 M00S00912.sxstge +++| HLR$HPS[0] = STLBL"ST3C"; 00970 M00S00913.sxstge +++| 00971 M00S00914.sxstge +++| IF HLR$LRQADR[0] EQ 0 00972 M00S00915.sxstge +++| THEN 00973 M00S00916.sxstge +++| BEGIN 00974 M00S00917.sxstge +++| HLLDSET((HLRQADR)); # MOVE *HLRQ* DATA TO *LLRQ* # 00975 M00S00918.sxstge +++| MSGAFDF("I","LD",0,HLRQADR); 00976 M00S00919.sxstge +++| RETURN; # WAIT LOAD OF CARTRIDGE # 00977 M00S00920.sxstge +++| 00978 M00S00921.sxstge +++|ST3C: # RETURN FROM DRIVER LOAD # 00979 M00S00922.sxstge +++| 00980 M00S00923.sxstge +++| HLLOAD((HLRQADR)); # CHECK RETURN CODES #
Line S00924 Modification History | |
---|---|
M01 (Removed by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00981 M01S00924.sxstge3 ---| END
Line S00037 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00982 M01S00037.sxstge3 +++| P<HLRQ> = HLRQADR; 00983 M01S00038.sxstge3 +++| P<FCT> = HLR$FCTQ[0] + FCTQHL; 00984 M01S00039.sxstge3 +++| END 00985 M00S00925.sxstge +++| 00986 M00S00926.sxstge +++| IF HLR$RESP[0] NQ ERRST"NOERR" 00987 M00S00927.sxstge +++| THEN 00988 M00S00928.sxstge +++| BEGIN 00989 M00S00929.sxstge +++| HLR$FCTX[0] = 0; 00990 M00S00930.sxstge +++| IF HLR$RESP[0] EQ ERRST"RETRY" 00991 M00S00931.sxstge +++| THEN 00992 M00S00932.sxstge +++| BEGIN
Line S00933 Modification History | |
---|---|
M01 (Removed by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00993 M01S00933.sxstge3 ---| HLR$FCTQ[0] = 0;
Line S00040 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 00994 M01S00040.sxstge3 +++| 00995 M01S00041.sxstge3 +++| IF HLR$FCTQ[0] NQ 0 00996 M01S00042.sxstge3 +++| THEN 00997 M01S00043.sxstge3 +++| BEGIN # RELEASE *FCT* TABLE # 00998 M01S00044.sxstge3 +++| RLS$FCT(HLR$FCTQ[0],0,STAT); 00999 M01S00045.sxstge3 +++| HLR$FCTQ[0] = 0; 01000 M01S00046.sxstge3 +++| END 01001 M01S00047.sxstge3 +++| 01002 M00S00934.sxstge +++| GOTO RETRYFILE; 01003 M00S00935.sxstge +++| END 01004 M00S00936.sxstge +++| 01005 M00S00937.sxstge +++| ELSE 01006 M00S00938.sxstge +++| BEGIN 01007 M00S00939.sxstge +++| GOTO STGERR; 01008 M00S00940.sxstge +++| END 01009 M00S00941.sxstge +++| 01010 M00S00942.sxstge +++| END 01011 M00S00943.sxstge +++| 01012 M00S00944.sxstge +++| END # STEP 3 # 01013 M00S00945.sxstge +++| 01014 M00S00946.sxstge +++| CONTROL EJECT; 01015 M00S00947.sxstge +++| 01016 M00S00948.sxstge +++|# 01017 M00S00949.sxstge +++|* STEP 4 - COPY THE NEXT VOLUME OF DATA TO DISK. 01018 M00S00950.sxstge +++|* - ISSUE ACCOUNT-DAYFILE MESSAGE, IF FIRST VOLUME. 01019 M00S00951.sxstge +++|* - VERIFY CHAIN CONTROL VALUES ARE CONSISTENT WITH 01020 M00S00952.sxstge +++|* WITH FIRST VOLUME STATUS. 01021 M00S00953.sxstge +++|* - SET FREE FILE FLAG IF AU CONFLICT FLAG IS SET. 01022 M00S00954.sxstge +++|* - USE *HLCPYCD* TO DO THE I/O. 01023 M00S00955.sxstge +++|* - IF A READ ERROR OCCURS, TRY AGAIN ON OTHER *DRD*. 01024 M00S00956.sxstge +++|# 01025 M00S00957.sxstge +++| 01026 M00S00958.sxstge +++| HLR$FFF[0] = HLR$FFF[0] OR FCT$FCF[0]; 01027 M00S00959.sxstge +++| 01028 M00S00960.sxstge +++| IF HLR$FVOL[0] 01029 M00S00961.sxstge +++| THEN 01030 M00S00962.sxstge +++| BEGIN 01031 M00S00963.sxstge +++| MSGAFDF("B","BS",0,HLRQADR); # INDICATE START OF STAGE # 01032 M00S00964.sxstge +++| END 01033 M00S00965.sxstge +++| 01034 M00S00966.sxstge +++| 01035 M00S00967.sxstge +++|NEXTVOL: # USED TO COPY NEXT VOLUME FROM 01036 M00S00968.sxstge +++| SAME CARTRIDGE # 01037 M00S00969.sxstge +++| 01038 M00S00970.sxstge +++|# 01039 M00S00971.sxstge +++|* VERIFY THE AU TO BE READ ARE VALID. 01040 M00S00972.sxstge +++|# 01041 M00S00973.sxstge +++| 01042 M00S00974.sxstge +++| TEMP = HLR$VOLAU[0]; 01043 M00S00975.sxstge +++| SETFCTX(TEMP); 01044 M00S00976.sxstge +++| HLR$VOLLN[0] = FCT$LEN(FWD,FPS) + 1; 01045 M00S00977.sxstge +++| TEMP1 = FCT$FLGS1(FWD,FPS); 01046 M00S00978.sxstge +++| 01047 M00S00979.sxstge +++| IF (TEMP LS 1) ## 01048 M00S00980.sxstge +++| OR (TEMP1 EQ 0) # NOT ALLOCATED # 01049 M00S00981.sxstge +++| OR (TEMP+HLR$VOLLN[0]-1 GR FCT$AVOT[0]) 01050 M00S00982.sxstge +++| THEN # AU ARE OUT OF RANGE # 01051 M00S00983.sxstge +++| BEGIN 01052 M00S00984.sxstge +++| HLR$RESP[0] = ERRST"PERM"; 01053 M00S00985.sxstge +++| HLR$PEF[0] = AFPSE; 01054 M00S00986.sxstge +++| HLR$ERRC[0] = STGERRC"AURNG"; 01055 M00S00987.sxstge +++| GOTO STGERR; 01056 M00S00988.sxstge +++| END 01057 M00S00989.sxstge +++| 01058 M00S00990.sxstge +++| 01059 M00S00991.sxstge +++| TEMP = FCT$CC(FWD,FPS); 01060 M00S00992.sxstge +++| FLAG = (TEMP EQ CHAINCON"FIRST") ## 01061 M00S00993.sxstge +++| OR (TEMP EQ CHAINCON"ONLY"); 01062 M00S00994.sxstge +++| 01063 M00S00995.sxstge +++| IF ( (NOT FLAG) AND HLR$FVOL[0] ) ## 01064 M00S00996.sxstge +++| OR ( (NOT HLR$FVOL[0]) AND FLAG) ## 01065 M00S00997.sxstge +++| OR (FCT$CAUF(FWD,FPS) EQ 1) 01066 M00S00998.sxstge +++| THEN # THEY ARE NOT CONSISTENT # 01067 M00S00999.sxstge +++| BEGIN 01068 M00S01000.sxstge +++| FCT$AUCF(FWD,FPS) = 1; 01069 M00S01001.sxstge +++| END 01070 M00S01002.sxstge +++| 01071 M00S01003.sxstge +++|# 01072 M00S01004.sxstge +++|* SET FREE FILE FLAG IF AU CONFLICT OR FROZEN CHAIN FLAGS ARE SET. 01073 M00S01005.sxstge +++|# 01074 M00S01006.sxstge +++| 01075 M00S01007.sxstge +++| IF ( FCT$AUCF(FWD,FPS) + FCT$FRCF(FWD,FPS) ) NQ 0 01076 M00S01008.sxstge +++| THEN 01077 M00S01009.sxstge +++| BEGIN 01078 M00S01010.sxstge +++| HLR$FFF[0] = TRUE; 01079 M00S01011.sxstge +++| END 01080 M00S01012.sxstge +++| 01081 M00S01013.sxstge +++| HLR$HPS[0] = STLBL"ST4A"; 01082 M00S01014.sxstge +++| P<LLRQ> = HLR$LRQADR[0]; 01083 M00S01015.sxstge +++| LLR$PRCNME[0] = REQTYP4"CPY$AD"; 01084 M00S01016.sxstge +++| LLR$PRCST[0] = PROCST"INITIAL"; 01085 M00S01017.sxstge +++| LLR$DR[0] = 0; 01086 M00S01018.sxstge +++| ADD$LNK(HLR$LRQADR[0],LCHN"LL$READY",0); 01087 M00S01019.sxstge +++| RETURN; # START COPY # 01088 M00S01020.sxstge +++| 01089 M00S01021.sxstge +++|ST4A: # RE-ENTER AFTER COPY COMPLETE # 01090 M00S01022.sxstge +++| 01091 M00S01023.sxstge +++| HLCPYCD((HLRQADR)); # CHECK RETURN CODES # 01092 M00S01024.sxstge +++| P<HLRQ> = HLRQADR;
Line S00048 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 01093 M01S00048.sxstge3 +++| P<FCT> = HLR$FCTQ + FCTQHL; 01094 M00S01025.sxstge +++| IF HLR$RESP EQ ERRST"RETRY" 01095 M00S01026.sxstge +++| THEN 01096 M00S01027.sxstge +++| BEGIN 01097 M00S01028.sxstge +++| HLR$RESP[0] = ERRST"NOERR"; 01098 M00S01029.sxstge +++| HLR$UNLD[0] = TRUE; 01099 M00S01030.sxstge +++| GOTO RETRYFILE; 01100 M00S01031.sxstge +++| END 01101 M00S01032.sxstge +++| 01102 M00S01033.sxstge +++| IF HLR$RESP[0] NQ ERRST"NOERR" 01103 M00S01034.sxstge +++| THEN 01104 M00S01035.sxstge +++| BEGIN 01105 M00S01036.sxstge +++| GOTO STGERR; 01106 M00S01037.sxstge +++| END 01107 M00S01038.sxstge +++| 01108 M00S01039.sxstge +++| HLR$FVOL[0] = FALSE; 01109 M00S01040.sxstge +++| 01110 M00S01041.sxstge +++|# 01111 M00S01042.sxstge +++|* STEP 4 - END. 01112 M00S01043.sxstge +++|# 01113 M00S01044.sxstge +++| 01114 M00S01045.sxstge +++| CONTROL EJECT; 01115 M00S01046.sxstge +++| 01116 M00S01047.sxstge +++|# 01117 M00S01048.sxstge +++|* STEP 5 - FINISH COPYING FILE TO DISK. 01118 M00S01049.sxstge +++|* - ALL DONE IF CHAIN CONTROL = ONLY OR LAST. 01119 M00S01050.sxstge +++|* - PREPARE TO DO NEXT VOLUME. 01120 M00S01051.sxstge +++|* - REPEAT STEP 4, COPY VOLUME, IF NO OVERFLOW. 01121 M00S01052.sxstge +++|* - REPEAT STEPS 2-4, IF OVERFLOW. 01122 M00S01053.sxstge +++|# 01123 M00S01054.sxstge +++| 01124 M00S01055.sxstge +++| IF HLR$RESP[0] EQ ERRST"NOERR" ## 01125 M00S01056.sxstge +++| AND NOT HLR$EOI[0] 01126 M00S01057.sxstge +++| THEN # COPY NEXT VOLUME # 01127 M00S01058.sxstge +++| BEGIN # STEP 5 # 01128 M00S01059.sxstge +++| SETFCTX(HLR$VOLAU[0]); 01129 M00S01060.sxstge +++| 01130 M00S01061.sxstge +++| HLR$VOLAUP[0] = HLR$VOLAU[0]; 01131 M00S01062.sxstge +++| HLR$VOLLNP[0] = HLR$VOLLN[0]; 01132 M00S01063.sxstge +++| 01133 M00S01064.sxstge +++| HLR$VOLAU[0] = FCT$LINK(FWD,FPS); 01134 M00S01065.sxstge +++| TEMP = FCT$CLKOCL(FWD,FPS); 01135 M00S01066.sxstge +++| 01136 M00S01067.sxstge +++| IF TEMP EQ 0 01137 M00S01068.sxstge +++| THEN # NO OVERFLOW # 01138 M00S01069.sxstge +++| BEGIN 01139 M00S01070.sxstge +++| GOTO NEXTVOL; 01140 M00S01071.sxstge +++| END 01141 M00S01072.sxstge +++| 01142 M00S01073.sxstge +++| TEMP = FCT$OCLNK(TEMP); 01143 M00S01074.sxstge +++| HLR$FCTXN[0] = (HLR$FCTX[0]/MAXGRT)*MAXGRT + TEMP; 01144 M00S01075.sxstge +++| GOTO UNLOAD; 01145 M00S01076.sxstge +++| 01146 M00S01077.sxstge +++| END # STEP 5 # 01147 M00S01078.sxstge +++| 01148 M00S01079.sxstge +++| CONTROL EJECT; 01149 M00S01080.sxstge +++| 01150 M00S01081.sxstge +++|# 01151 M00S01082.sxstge +++|* STEP 6 - RESTORE DISK IMAGE. 01152 M00S01083.sxstge +++|* - VERIFY FILE LENGTH IS OK. 01153 M00S01084.sxstge +++|* - IF NO ERRRORS, USE *SETDA* OR *UREPLAC* TO 01154 M00S01085.sxstge +++|* UPDATE THE *PFC* ENTRY FOR THIS FILE 01155 M00S01086.sxstge +++|* TO INDICATE THE STAGE WAS SUCCESSFUL. 01156 M00S01087.sxstge +++|* - IF THE FREE FILE FLAG IS SET, USE *SETAF* (*AFOBS* ) 01157 M00S01088.sxstge +++|* TO CLEAR THE *ASA* VALUE FOR THE FILE. 01158 M00S01089.sxstge +++|# 01159 M00S01090.sxstge +++| 01160 M00S01091.sxstge +++| TEMP = TDAMFLN[0] - HLR$PRU[0]; 01161 M00S01092.sxstge +++| IF NOT TDAMIA[0] 01162 M00S01093.sxstge +++| THEN 01163 M00S01094.sxstge +++| BEGIN 01164 M00S01095.sxstge +++| TEMP = TEMP - 1; 01165 M00S01096.sxstge +++| END 01166 M00S01097.sxstge +++| 01167 M00S01098.sxstge +++| IF TDAMFLN[0] EQ 1 ## 01168 M00S01099.sxstge +++| AND TDAMAFVER[0] 01169 M00S01100.sxstge +++| THEN 01170 M00S01101.sxstge +++| BEGIN # FILE RETURNED BY PFDUMP # 01171 M00S01102.sxstge +++| TEMP = 0; 01172 M00S01103.sxstge +++| END 01173 M00S01104.sxstge +++| 01174 M00S01105.sxstge +++| IF TEMP NQ 0 01175 M00S01106.sxstge +++| THEN # FILE LENGTH ERROR # 01176 M00S01107.sxstge +++| BEGIN 01177 M00S01108.sxstge +++| HLR$RESP[0] = ERRST"PERM"; 01178 M00S01109.sxstge +++| HLR$PEF[0] = AFPSE; 01179 M00S01110.sxstge +++| HLR$ERRC[0] = STGERRC"LENERR"; 01180 M00S01111.sxstge +++| END 01181 M00S01112.sxstge +++| 01182 M00S01113.sxstge +++| 01183 M00S01114.sxstge +++|ST6A: # TO RETRY CALL TO *SETDA* OR 01184 M00S01115.sxstge +++| *UREPLAC* # 01185 M00S01116.sxstge +++| IF HLR$RESP[0] EQ ERRST"NOERR" 01186 M00S01117.sxstge +++| THEN # FILE AT EOI # 01187 M00S01118.sxstge +++| BEGIN # STEP 6 # 01188 M00S01119.sxstge +++| NAMEC[0] = HLR$FLNM[0]; 01189 M00S01120.sxstge +++| NAMEC[1] = TDAMFAM[0]; 01190 M00S01121.sxstge +++| NAMEC[2] = TDAMPFN[0]; 01191 M00S01122.sxstge +++| 01192 M00S01123.sxstge +++| IF NOT TDAMIA[0] 01193 M00S01124.sxstge +++| THEN # DIRECT ACCESS FILE # 01194 M00S01125.sxstge +++| BEGIN 01195 M00S01126.sxstge +++| SETDA(NAME[0],PFMSTAT,6,TDAMUI[0],NAME[1], ## 01196 M00S01127.sxstge +++| TDAMPFID[0],TDAMASI[0],TDAMCDT[0],LOC(PFMRET)); 01197 M00S01128.sxstge +++| END 01198 M00S01129.sxstge +++| 01199 M00S01130.sxstge +++| ELSE # INDIRECT ACCESS FILE # 01200 M00S01131.sxstge +++| BEGIN 01201 M00S01132.sxstge +++| ZSETFET(LOC(SCR$FET[0]),NAMEC[0],0,0,SFETL); 01202 M00S01133.sxstge +++| FET$DT[0] = "MS"; 01203 M00S01134.sxstge +++| FET$SP[0] = TRUE; 01204 M00S01135.sxstge +++| FET$AL[0] = TDAMAL[0]; 01205 M00S01136.sxstge +++| FET$EP[0] = TRUE; 01206 M00S01137.sxstge +++| FET$UP[0] = TRUE; 01207 M00S01138.sxstge +++| FET$LFN[0] = NAMEC[0]; 01208 M00S01139.sxstge +++| REQWEST(FETSET[0],TMSG); # REQUEST EQUIPMENT # 01209 M00S01140.sxstge +++| IF FET$AT[0] EQ LNV # LEVEL NOT VALID # 01210 M00S01141.sxstge +++| OR FET$AT[0] EQ WEQ # EQUIPMENT UNAVAILABLE # 01211 M00S01142.sxstge +++| THEN 01212 M00S01143.sxstge +++| BEGIN 01213 M00S01144.sxstge +++| HLR$RESP[0] = ERRST"PERM"; 01214 M00S01145.sxstge +++| HLR$PEF[0] = AFTMP; 01215 M00S01146.sxstge +++| HLR$ERRC[0] = STGERRC"NOLVL"; 01216 M00S01147.sxstge +++| GOTO STGERR; 01217 M00S01148.sxstge +++| END 01218 M00S01149.sxstge +++| 01219 M00S01150.sxstge +++| UREPLAC(NAME[0],PFMSTAT,6,NAME[2],TDAMUI[0], ## 01220 M00S01151.sxstge +++| NAME[1],TDAMPFID[0],TDAMASI[0],TDAMCDT[0],LOC(PFMRET)); 01221 M00S01152.sxstge +++|
Line S01153 Modification History | |
---|---|
M01 (Removed by) | sxstge1 |
Seq # *Modification Id* Act ----------------------------+ 01222 M01S01153.sxstge1 ---| PFSTAT = -1;
Line S00001 Modification History | |
---|---|
M01 (Added by) | sxstge1 |
Seq # *Modification Id* Act ----------------------------+ 01223 M01S00001.sxstge1 +++| PFMSTAT = -1; 01224 M00S01154.sxstge +++| HLR$HPS[0] = STLBL"ST6B"; # RETURN *UREPLACE* COMPLETE # 01225 M00S01155.sxstge +++| GLPFMFL = TRUE; 01226 M00S01156.sxstge +++| ADD$LNK(HLRQADR,LCHN"HL$PFMWAIT",0); 01227 M00S01157.sxstge +++| RETURN; 01228 M00S01158.sxstge +++| 01229 M00S01159.sxstge +++| 01230 M00S01160.sxstge +++| END 01231 M00S01161.sxstge +++| 01232 M00S01162.sxstge +++|ST6B: 01233 M00S01163.sxstge +++| IF PFMSTAT NQ 0 01234 M00S01164.sxstge +++| THEN 01235 M00S01165.sxstge +++| BEGIN 01236 M00S01166.sxstge +++| HLR$HPS[0] = STLBL"ST6A"; # IF WAIT FOR INTERLOCK # 01237 M00S01167.sxstge +++| HLR$ERRC[0] = STGERRC"RESTORE"; 01238 M00S01168.sxstge +++| STERPFM(HLRQADR,PFMSTAT); 01239 M00S01169.sxstge +++| END 01240 M00S01170.sxstge +++| 01241 M00S01171.sxstge +++| IF HLR$RESP[0] EQ ERRST"NOERR" ## 01242 M00S01172.sxstge +++| AND HLR$FFF[0] 01243 M00S01173.sxstge +++| THEN 01244 M00S01174.sxstge +++| BEGIN 01245 M00S01175.sxstge +++| 01246 M00S01176.sxstge +++|# 01247 M00S01177.sxstge +++|* USE THE PERMANENT ERROR STATUS TO CLEAR THE *ASA* FIELD 01248 M00S01178.sxstge +++|* BY "SETTING" THE *AFOBS* FLAG. 01249 M00S01179.sxstge +++|# 01250 M00S01180.sxstge +++| 01251 M00S01181.sxstge +++| HLR$RESP[0] = ERRST"PERM"; 01252 M00S01182.sxstge +++| HLR$PEF[0] = AFOBS; 01253 M00S01183.sxstge +++| HLR$ERRC[0] = STGERRC"CLRASA";
Line S00002 Modification History | |
---|---|
M01 (Added by) | mse0012 |
Seq # *Modification Id* Act ----------------------------+ 01254 M01S00002.mse0012 +++| PASS = TRUE; # CLEAR LOCATION *HLR$ERRC* AFTER MESSAGE # 01255 M00S01184.sxstge +++| END 01256 M00S01185.sxstge +++| 01257 M00S01186.sxstge +++| END # STEP 6 # 01258 M00S01187.sxstge +++| 01259 M00S01188.sxstge +++| CONTROL EJECT; 01260 M00S01189.sxstge +++| 01261 M00S01190.sxstge +++|# 01262 M00S01191.sxstge +++|* STEP 7 - PROCESS ERRORS. 01263 M00S01192.sxstge +++|* - IF K-DISPLAY MESSAGE OUTSTANDING, WAIT FOR IT. 01264 M00S01193.sxstge +++|* - IF NEED TO WAIT FOR INTERLOCK, RETURN. 01265 M00S01194.sxstge +++|* - IF PERMANENT ERROR, DO XX. 01266 M00S01195.sxstge +++|# 01267 M00S01196.sxstge +++| 01268 M00S01197.sxstge +++|STGERR: # ENTRY VIA *GOTO STGERR* 01269 M00S01198.sxstge +++| STATEMENTS # 01270 M00S01199.sxstge +++| 01271 M00S01200.sxstge +++| IF HLR$RESP[0] EQ ERRST"WAIT" 01272 M00S01201.sxstge +++| THEN 01273 M00S01202.sxstge +++| BEGIN 01274 M00S01203.sxstge +++| HLR$RESP[0] = ERRST"NOERR"; 01275 M00S01204.sxstge +++| DELAY(PFM$INTV,HLRQADR,HLRQIND); 01276 M00S01205.sxstge +++| RETURN; 01277 M00S01206.sxstge +++| END 01278 M00S01207.sxstge +++| 01279 M00S01208.sxstge +++| IF HLR$RESP[0] EQ ERRST"NOERR" 01280 M00S01209.sxstge +++| THEN 01281 M00S01210.sxstge +++| BEGIN 01282 M00S01211.sxstge +++| HLR$ERRC[0] = STGERRC"NOERR"; 01283 M00S01212.sxstge +++| END 01284 M00S01213.sxstge +++| 01285 M00S01214.sxstge +++| STGCNT = STGCNT + 1; 01286 M00S01215.sxstge +++| MSGAFDF("E","ES",HLR$ERRC[0],HLRQADR);
Line S00003 Modification History | |
---|---|
M01 (Added by) | mse0012 |
Seq # *Modification Id* Act ----------------------------+ 01287 M01S00003.mse0012 +++| 01288 M01S00004.mse0012 +++| IF PASS 01289 M01S00005.mse0012 +++| THEN # FREE FLAG SET - CLEAR *HLR$ERRC*# 01290 M01S00006.mse0012 +++| BEGIN 01291 M01S00007.mse0012 +++| HLR$ERRC[0] = 0; 01292 M01S00008.mse0012 +++| END 01293 M00S01216.sxstge +++| 01294 M00S01217.sxstge +++|ST7A: # ENTRY IF WAITING FOR K-DISPLAY 01295 M00S01218.sxstge +++| TO BE COMPLETE # 01296 M00S01219.sxstge +++| IF HLR$RESP[0] NQ ERRST"NOERR" 01297 M00S01220.sxstge +++| THEN 01298 M00S01221.sxstge +++| BEGIN # STEP 7 # 01299 M00S01222.sxstge +++| P<KWORD> = LOC(HLR$KREQ[0]); 01300 M00S01223.sxstge +++| IF (KW$WORD[0] NQ 0) AND NOT KW$COMP[0] 01301 M00S01224.sxstge +++| THEN 01302 M00S01225.sxstge +++| BEGIN 01303 M00S01226.sxstge +++| DELAY(KDIS$INTV,HLRQADR,HLRQIND); 01304 M00S01227.sxstge +++| HLR$HPS[0] = STLBL"ST7A"; 01305 M00S01228.sxstge +++| RETURN; 01306 M00S01229.sxstge +++| END 01307 M00S01230.sxstge +++| 01308 M00S01231.sxstge +++| IF HLR$RESP[0] EQ ERRST"PERM" 01309 M00S01232.sxstge +++| THEN # SET FLAG FROM *HLR$PEF* IN *PFC* 01310 M00S01233.sxstge +++| ENTRY # 01311 M00S01234.sxstge +++| BEGIN 01312 M00S01235.sxstge +++|ST7B: # TO RETRY *SETAF* CALL # 01313 M00S01236.sxstge +++| NAMEC[0] = HLR$FLNM[0]; 01314 M00S01237.sxstge +++| NAMEC[1] = TDAMFAM[0]; 01315 M00S01238.sxstge +++| SETAF(NAME[0],STAT,6,TDAMUI[0],NAME[1], ## 01316 M00S01239.sxstge +++| TDAMPFID[0],TDAMASI[0],TDAMCDT[0],HLR$PEF[0],LOC(PFMRET)); 01317 M00S01240.sxstge +++| 01318 M00S01241.sxstge +++| IF STAT NQ 0 01319 M00S01242.sxstge +++| THEN 01320 M00S01243.sxstge +++| BEGIN 01321 M00S01244.sxstge +++| STERPFM(HLRQADR,STAT); 01322 M00S01245.sxstge +++| IF HLR$RESP[0] EQ ERRST"WAIT" 01323 M00S01246.sxstge +++| THEN 01324 M00S01247.sxstge +++| BEGIN 01325 M00S01248.sxstge +++| HLR$HPS[0] = STLBL"ST7B"; 01326 M00S01249.sxstge +++| DELAY(PFM$INTV,HLRQADR,HLRQIND); 01327 M00S01250.sxstge +++| RETURN; 01328 M00S01251.sxstge +++| END 01329 M00S01252.sxstge +++| 01330 M00S01253.sxstge +++| ELSE 01331 M00S01254.sxstge +++| BEGIN 01332 M00S01255.sxstge +++| HLR$ERRC[0] = STGERRC"SETAF"; 01333 M00S01256.sxstge +++| MSGAFDF("E","ES",HLR$ERRC[0],HLRQADR); 01334 M00S01257.sxstge +++| END 01335 M00S01258.sxstge +++| 01336 M00S01259.sxstge +++| END 01337 M00S01260.sxstge +++| 01338 M00S01261.sxstge +++| HLR$RESP[0] = ERRST"PERM"; 01339 M00S01262.sxstge +++| END 01340 M00S01263.sxstge +++| 01341 M00S01264.sxstge +++| END # STEP 7 # 01342 M00S01265.sxstge +++| 01343 M00S01266.sxstge +++| CONTROL EJECT; 01344 M00S01267.sxstge +++| 01345 M00S01268.sxstge +++|# 01346 M00S01269.sxstge +++|* STEP 8 - COMPLETE STAGING PROCESS. 01347 M00S01270.sxstge +++|* - RETURN STAGING FILE. 01348 M00S01271.sxstge +++|* - NOTIFY REQUESTOR. 01349 M00S01272.sxstge +++|* - GET NEXT STAGING REQUEST, IF ANY, AND RETURN 01350 M00S01273.sxstge +++|* TO *HLRQMTR*. 01351 M00S01274.sxstge +++|# 01352 M00S01275.sxstge +++| 01353 M00S01276.sxstge +++| ZSETFET(LOC(SCR$FET[0]),HLR$FLNM[0],0,0,SFETL); 01354 M00S01277.sxstge +++| RETERN(SCR$FET[0],RCL); 01355 M00S01278.sxstge +++| 01356 M00S01279.sxstge +++| IF HLR$RESP[0] EQ ERRST"NOERR" ## 01357 M00S01280.sxstge +++| OR HLR$RESP[0] EQ ERRST"PERM" 01358 M00S01281.sxstge +++| THEN # *PFC* WAS UPDATED TO SHOW STATUS 01359 M00S01282.sxstge +++| # 01360 M00S01283.sxstge +++| BEGIN 01361 M00S01284.sxstge +++| TEMP = 0; 01362 M00S01285.sxstge +++| END 01363 M00S01286.sxstge +++| 01364 M00S01287.sxstge +++| ELSE # *PFC* NOT UPDATED, *PFM* WILL 01365 M00S01288.sxstge +++| KEEP ISSUING *TDAM*S # 01366 M00S01289.sxstge +++| BEGIN 01367 M00S01290.sxstge +++| TEMP = 1; 01368 M00S01291.sxstge +++| END 01369 M00S01292.sxstge +++| 01370 M00S01293.sxstge +++| IF TDAMOSLV[0] 01371 M00S01294.sxstge +++| THEN 01372 M00S01295.sxstge +++| BEGIN 01373 M00S01296.sxstge +++| TELLSLV(TDAMSSN[0],TEMP); 01374 M00S01297.sxstge +++| END 01375 M00S01298.sxstge +++| 01376 M00S01299.sxstge +++| IF TDAMOMAST[0] ## 01377 M00S01300.sxstge +++| AND TDAMEVENT[0] NQ 0 ## 01378 M00S01301.sxstge +++| AND TEMP EQ 0 01379 M00S01302.sxstge +++| THEN 01380 M00S01303.sxstge +++| BEGIN 01381 M00S01304.sxstge +++| EESET(TDAMEVENT[0]); 01382 M00S01305.sxstge +++| END 01383 M00S01306.sxstge +++| 01384 M00S01307.sxstge +++| STNTDAM(HLRQADR); 01385 M00S01308.sxstge +++| RETURN; 01386 M00S01309.sxstge +++| 01387 M00S01310.sxstge +++|# 01388 M00S01311.sxstge +++|* END OF STEP 8. 01389 M00S01312.sxstge +++|# 01390 M00S01313.sxstge +++| 01391 M00S01314.sxstge +++| END # STAGER # 01392 M00S01315.sxstge +++| 01393 M00S01316.sxstge +++| TERM 01394 M00S01317.sxstge +++|PROC STERCAT((HLRQADR),(ERRSTAT)); 01395 M00S01318.sxstge +++| 01396 M00S01319.sxstge +++|# TITLE STERCAT - PROCESS STAGE CATALOG ACCESS ERRORS. # 01397 M00S01320.sxstge +++| 01398 M00S01321.sxstge +++| BEGIN # STERCAT # 01399 M00S01322.sxstge +++| 01400 M00S01323.sxstge +++|# 01401 M00S01324.sxstge +++|** STERCAT - PROCESS STAGE CATALOG ACCESS ERRORS. 01402 M00S01325.sxstge +++|* 01403 M00S01326.sxstge +++|* *STERCAT* PROCESSES ERROR RESPONSES RETURNED TO *STAGER* FROM A 01404 M00S01327.sxstge +++|* CATALOG ACCESS REQUEST AND RETURNS A STATUS IN THE *HLRQ* 01405 M00S01328.sxstge +++|* ENTRY OF THE STAGE REQUEST. 01406 M00S01329.sxstge +++|* 01407 M00S01330.sxstge +++|* PROC STERCAT((HLRQADR),(ERRSTAT)) 01408 M00S01331.sxstge +++|* 01409 M00S01332.sxstge +++|* ENTRY (HLRQADR) - ADDRESS OF *HLRQ* FOR THE STAGE REQUEST. 01410 M00S01333.sxstge +++|* (ERRSTAT) - CATALOG ACCESS ERROR CODE. 01411 M00S01334.sxstge +++|* 01412 M00S01335.sxstge +++|* EXIT (HLR$RESP[0]) - ERROR STATE. 01413 M00S01336.sxstge +++|* (VALUES DEFINED IN *COMEMSC*). 01414 M00S01337.sxstge +++|* = ERRST"WAIT". 01415 M00S01338.sxstge +++|* = ERRST"ABANDON". 01416 M00S01339.sxstge +++|# 01417 M00S01340.sxstge +++| 01418 M00S01341.sxstge +++| ITEM HLRQADR U; # *HLRQ* ENTRY ADDRESS # 01419 M00S01342.sxstge +++| ITEM ERRSTAT I; # CATALOG ACCESS ERROR CODE # 01420 M00S01343.sxstge +++| 01421 M00S01344.sxstge +++|# 01422 M00S01345.sxstge +++|**** PROC STERCAT - XREF LIST BEGIN. 01423 M00S01346.sxstge +++|# 01424 M00S01347.sxstge +++| 01425 M00S01348.sxstge +++| XREF 01426 M00S01349.sxstge +++| BEGIN 01427 M00S01350.sxstge +++| PROC ABORT; # ABORT # 01428 M00S01351.sxstge +++| PROC MESSAGE; # ISSUE MESSAGE # 01429 M00S01352.sxstge +++| END 01430 M00S01353.sxstge +++| 01431 M00S01354.sxstge +++|# 01432 M00S01355.sxstge +++|**** PROC STERCAT - XREF LIST END. 01433 M00S01356.sxstge +++|# 01434 M00S01357.sxstge +++| 01435 M00S01358.sxstge +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 01436 M00S01359.sxstge +++|*CALL,COMBFAS 01437 M00S01360.sxstge +++|*CALL,COMBCMS 01438 M00S01361.sxstge +++|*CALL COMSPFM 01439 M00S01362.sxstge +++|*CALL,COMXEMC 01440 M00S01363.sxstge +++|*CALL,COMXHLR 01441 M00S01364.sxstge +++|*CALL,COMXMSC 01442 M00S01365.sxstge +++| 01443 M00S01366.sxstge +++| CONTROL EJECT; 01444 M00S01367.sxstge +++| 01445 M00S01368.sxstge +++| P<HLRQ> = HLRQADR; 01446 M00S01369.sxstge +++| 01447 M00S01370.sxstge +++| IF ERRSTAT EQ CMASTAT"INTLK" 01448 M00S01371.sxstge +++| THEN # MSF CATALOG INTERLOCKED # 01449 M00S01372.sxstge +++| BEGIN 01450 M00S01373.sxstge +++| HLR$RESP[0] = ERRST"WAIT"; 01451 M00S01374.sxstge +++| RETURN; 01452 M00S01375.sxstge +++| END 01453 M00S01376.sxstge +++| 01454 M00S01377.sxstge +++| IF ERRSTAT EQ CMASTAT"NOTOPEN" ## 01455 M00S01378.sxstge +++| THEN # MSF CATALOG NOT ONLINE # 01456 M00S01379.sxstge +++| BEGIN 01457 M00S01380.sxstge +++| HLR$RESP[0] = ERRST"ABANDON"; 01458 M00S01381.sxstge +++| HLR$ERRC[0] = STGERRC"CATOFFLN"; 01459 M00S01382.sxstge +++| RETURN; 01460 M00S01383.sxstge +++| END 01461 M00S01384.sxstge +++| 01462 M00S01385.sxstge +++| IF ERRSTAT EQ CMASTAT"CIOERR" ## 01463 M00S01386.sxstge +++| THEN # MSF CATALOG NOT ONLINE # 01464 M00S01387.sxstge +++| BEGIN 01465 M00S01388.sxstge +++| HLR$RESP[0] = ERRST"ABANDON"; 01466 M00S01389.sxstge +++| HLR$ERRC[0] = STGERRC"CATIOER"; 01467 M00S01390.sxstge +++| RETURN; 01468 M00S01391.sxstge +++| END 01469 M00S01392.sxstge +++| 01470 M00S01393.sxstge +++| IF ERRSTAT EQ CMASTAT"NOSUBCAT" ## 01471 M00S01394.sxstge +++| OR ERRSTAT EQ CMASTAT"ORDERR" 01472 M00S01395.sxstge +++| THEN # OBSOLETE MSF CATALOG ONLINE # 01473 M00S01396.sxstge +++| BEGIN 01474 M00S01397.sxstge +++| HLR$RESP[0] = ERRST"PERM"; 01475 M00S01398.sxstge +++| HLR$ERRC[0] = STGERRC"PFCOBS"; 01476 M00S01399.sxstge +++| HLR$PEF[0] = AFPSE; 01477 M00S01400.sxstge +++| RETURN; 01478 M00S01401.sxstge +++| END 01479 M00S01402.sxstge +++| 01480 M00S01403.sxstge +++| FE$RTN[0] = "STERCAT."; 01481 M00S01404.sxstge +++| MESSAGE(FEMSG,UDFL1); 01482 M00S01405.sxstge +++| ABORT; 01483 M00S01406.sxstge +++| END # STERCAT # 01484 M00S01407.sxstge +++| 01485 M00S01408.sxstge +++| TERM 01486 M00S01409.sxstge +++|PROC STERPFM((HLRQADR),(ERRSTAT)); 01487 M00S01410.sxstge +++| 01488 M00S01411.sxstge +++|# TITLE STERPFM - PROCESS STAGE *PFM* ERRORS. # 01489 M00S01412.sxstge +++| 01490 M00S01413.sxstge +++| BEGIN # STERPFM # 01491 M00S01414.sxstge +++| 01492 M00S01415.sxstge +++|# 01493 M00S01416.sxstge +++|** STERPFM - PROCESS STAGE *PFM* ERRORS. 01494 M00S01417.sxstge +++|* 01495 M00S01418.sxstge +++|* *STERPFM* PROCESSES ERROR RESPONSES RETURNED TO CALLERS FROM A 01496 M00S01419.sxstge +++|* *PFM* REQUEST AND RETURNS A STATUS IN THE *HLRQ* ENTRY OF THE 01497 M00S01420.sxstge +++|* STAGE REQUEST. 01498 M00S01421.sxstge +++|* 01499 M00S01422.sxstge +++|* PROC STERPFM((HLRQADR),(ERRSTAT)) 01500 M00S01423.sxstge +++|* 01501 M00S01424.sxstge +++|* ENTRY (HLRQADR) - ADDRESS OF *HLRQ* FOR THE STAGE REQUEST. 01502 M00S01425.sxstge +++|* (ERRSTAT) - *PFM* ERROR CODE. 01503 M00S01426.sxstge +++|* 01504 M00S01427.sxstge +++|* EXIT (HLR$RESP[0]) - ERROR STATE. 01505 M00S01428.sxstge +++|* (VALUES DEFINED IN *COMEMSC*). 01506 M00S01429.sxstge +++|* = ERRST"NOERR". 01507 M00S01430.sxstge +++|* = ERRST"WAIT". 01508 M00S01431.sxstge +++|* = ERRST"ABANDON". 01509 M00S01432.sxstge +++|* IF THE ERROR STATE INDICATES A DELAY CONDITION 01510 M00S01433.sxstge +++|* (*ERRST"WAIT"*) THEN THE STAGE REQUEST HAS BEEN ADDED 01511 M00S01434.sxstge +++|* TO THE *HLRQ* DELAY CHAIN AND WILL BE PUT BACK ON THE 01512 M00S01435.sxstge +++|* *HLRQ* READY CHAIN AFTER A DELAY TIME HAS EXPIRED. 01513 M00S01436.sxstge +++|* PROCESSING WILL CONTINUE IN THE ROUTINE INDICATED 01514 M00S01437.sxstge +++|* BY *HLR$PN[0]* AND AT THE PROCESS STATE *HLR$PS[0]*. 01515 M00S01438.sxstge +++|# 01516 M00S01439.sxstge +++| 01517 M00S01440.sxstge +++| ITEM HLRQADR U; # *HLRQ* ENTRY ADDRESS # 01518 M00S01441.sxstge +++| ITEM ERRSTAT I; # *PFM* ERROR CODE # 01519 M00S01442.sxstge +++| 01520 M00S01443.sxstge +++|# 01521 M00S01444.sxstge +++|**** PROC STERPFM - XREF LIST BEGIN. 01522 M00S01445.sxstge +++|# 01523 M00S01446.sxstge +++| 01524 M00S01447.sxstge +++| XREF 01525 M00S01448.sxstge +++| BEGIN 01526 M00S01449.sxstge +++| PROC ABORT; # ABORT # 01527 M00S01450.sxstge +++| PROC MESSAGE; # ISSUE MESSAGE # 01528 M00S01451.sxstge +++| PROC PFMEC; # CONVERT *PFM* ERROR RESPONSE # 01529 M00S01452.sxstge +++| END 01530 M00S01453.sxstge +++| 01531 M00S01454.sxstge +++|# 01532 M00S01455.sxstge +++|**** PROC STERPFM - XREF - XREF LIST END. 01533 M00S01456.sxstge +++|# 01534 M00S01457.sxstge +++| 01535 M00S01458.sxstge +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 01536 M00S01459.sxstge +++|*CALL,COMBFAS 01537 M00S01460.sxstge +++|*CALL COMXEMC 01538 M00S01461.sxstge +++|*CALL,COMXHLR 01539 M00S01462.sxstge +++|*CALL,COMXIPR 01540 M00S01463.sxstge +++|*CALL,COMXMSC 01541 M00S01464.sxstge +++|*CALL,COMSPFM 01542 M00S01465.sxstge +++| 01543 M00S01466.sxstge +++| ITEM ACTION I; # ERROR PROCESSING ACTION # 01544 M00S01467.sxstge +++| 01545 M00S01468.sxstge +++| SWITCH SPFMER:ERRST # *PFM* ERROR STATES # 01546 M00S01469.sxstge +++| SPNOERR:NOERR, # NO ERROR # 01547 M00S01470.sxstge +++| SPDELAY:WAIT, # DELAY CONDITION # 01548 M00S01471.sxstge +++| SPFATAL:FATAL, # FATAL ERROR # 01549 M00S01472.sxstge +++| SPFATAL:RESTART, # RESPONSE INVALID FROM *PFMEC* # 01550 M00S01473.sxstge +++| SPFATAL:PERM, # RESPONSE INVALID FROM *PFMEC* # 01551 M00S01474.sxstge +++| SPABAN:ABANDON, # ABANDON CONDITION # 01552 M00S01475.sxstge +++| SPSPEC:SPECIAL; # SPECIAL CONDITION # 01553 M00S01476.sxstge +++| CONTROL EJECT; 01554 M00S01477.sxstge +++| 01555 M00S01478.sxstge +++| P<HLRQ> = HLRQADR; 01556 M00S01479.sxstge +++| 01557 M00S01480.sxstge +++| PFMEC(ERRSTAT,ACTION); 01558 M00S01481.sxstge +++| GOTO SPFMER[ACTION]; 01559 M00S01482.sxstge +++| 01560 M00S01483.sxstge +++|SPNOERR: # NO ERROR # 01561 M00S01484.sxstge +++| HLR$RESP[0] = ACTION; 01562 M00S01485.sxstge +++| RETURN; 01563 M00S01486.sxstge +++| 01564 M00S01487.sxstge +++|SPABAN: # ABANDON STAGE REQUEST # 01565 M00S01488.sxstge +++| IF ERRSTAT EQ FBS OR ERRSTAT EQ FDA OR ERRSTAT EQ FIA 01566 M00S01489.sxstge +++| THEN # RESPONSES INVALID FOR STAGE # 01567 M00S01490.sxstge +++| BEGIN 01568 M00S01491.sxstge +++| GOTO SPFATAL; 01569 M00S01492.sxstge +++| END 01570 M00S01493.sxstge +++| 01571 M00S01494.sxstge +++| HLR$RESP[0] = ACTION; 01572 M00S01495.sxstge +++| RETURN; 01573 M00S01496.sxstge +++| 01574 M00S01497.sxstge +++|SPDELAY: # DELAY STAGE REQUEST # 01575 M00S01498.sxstge +++| HLR$RESP[0] = ACTION; 01576 M00S01499.sxstge +++| RETURN; 01577 M00S01500.sxstge +++| 01578 M00S01501.sxstge +++|SPSPEC: # SPECIAL PROCESSING # 01579 M00S01502.sxstge +++| HLR$RESP[0] = ERRST"ABANDON"; 01580 M00S01503.sxstge +++| HLR$ERRC[0] = STGERRC"DSKFULL"; 01581 M00S01504.sxstge +++| RETURN; 01582 M00S01505.sxstge +++| 01583 M00S01506.sxstge +++|SPFATAL: # FATAL STAGE ERROR # 01584 M00S01507.sxstge +++| FE$RTN[0] = "STERPFM."; 01585 M00S01508.sxstge +++| MESSAGE(FEMSG,UDFL1); 01586 M00S01509.sxstge +++| ABORT; 01587 M00S01510.sxstge +++| 01588 M00S01511.sxstge +++| END # STERPFM # 01589 M00S01512.sxstge +++| 01590 M00S01513.sxstge +++| TERM 01591 M00S01514.sxstge +++|PROC STNTDAM((HLRQADR)); 01592 M00S01515.sxstge +++| 01593 M00S01516.sxstge +++|# TITLE STNTDAM - GET NEXT STAGING REQUEST # 01594 M00S01517.sxstge +++| 01595 M00S01518.sxstge +++| BEGIN # STNTDAM # 01596 M00S01519.sxstge +++| 01597 M00S01520.sxstge +++|# 01598 M00S01521.sxstge +++|** STNTDAM - GET NEXT STAGING REQUEST. 01599 M00S01522.sxstge +++|* 01600 M00S01523.sxstge +++|* THIS PROCEDURE SCANS THE *RTRQ* TO LOCATE A FILE STAGE 01601 M00S01524.sxstge +++|* REQUEST WHICH CAN BE INITIATED USING THE CARTRIDGE 01602 M00S01525.sxstge +++|* CURRENTLY MOUNTED FOR THE *HLRQ* ENTRY. IF SEVERAL 01603 M00S01526.sxstge +++|* SUCH FILES ARE FOUND, THE ONE SELECTED IS THE ONE 01604 M00S01527.sxstge +++|* WHICH BEGINS CLOSEST TO THE START OF THE CARTRIDGE. 01605 M00S01528.sxstge +++|* 01606 M00S01529.sxstge +++|* PROC STNTDAM((HLRQADR)) 01607 M00S01530.sxstge +++|* 01608 M00S01531.sxstge +++|* ENTRY (HLRQADR) - ADDRESS OF THE *HLRQ* ENTRY. 01609 M00S01532.sxstge +++|* 01610 M00S01533.sxstge +++|* THE FOLLOWING FIELDS IN THE *HLRQ* ENTRY AND 01611 M00S01534.sxstge +++|* THE *TDAM* PORTION IDENTIFY THE CARTRIDGE 01612 M00S01535.sxstge +++|* CURRENTLY MOUNTED. 01613 M00S01536.sxstge +++|* - *TDAMFAM*, *TDAMSBF* = SUBFAMILY, 01614 M00S01537.sxstge +++|* *HLR$SM*, *HLR$FCTX* = CARTRIDGE IN SUBFAMILY. 01615 M00S01538.sxstge +++|* 01616 M00S01539.sxstge +++|* EXIT THE *TDAM* PORTION OF THE *HLRQ* ENTRY IS UPDATED 01617 M00S01540.sxstge +++|* TO IDENTIFY THE NEXT ACTION. 01618 M00S01541.sxstge +++|* IF *TDAMFC* = "NOREQ", NO FILE WAS FOUND. 01619 M00S01542.sxstge +++|* OTHERWISE, THE *TDAM* ENTRY FOR THE NEW FILE 01620 M00S01543.sxstge +++|* WAS MOVED TO THE *HLRQ*. 01621 M00S01544.sxstge +++|# 01622 M00S01545.sxstge +++| 01623 M00S01546.sxstge +++| ITEM HLRQADR U; # *HLRQ* ADDRESS # 01624 M00S01547.sxstge +++| 01625 M00S01548.sxstge +++|# 01626 M00S01549.sxstge +++|**** PROC STNTDAM - XREF LIST BEGIN. 01627 M00S01550.sxstge +++|# 01628 M00S01551.sxstge +++| 01629 M00S01552.sxstge +++| XREF 01630 M00S01553.sxstge +++| BEGIN 01631 M00S01554.sxstge +++| PROC ADD$LNK; # ADD ENTRY TO CHAIN # 01632 M00S01555.sxstge +++| PROC DEL$LNK; # DELETE ENTRY FROM CHAIN # 01633 M00S01556.sxstge +++| PROC ZFILL; # ZERO FILL ARRAY # 01634 M00S01557.sxstge +++| END 01635 M00S01558.sxstge +++| 01636 M00S01559.sxstge +++|# 01637 M00S01560.sxstge +++|**** PROC STNTDAM - XREF LIST END. 01638 M00S01561.sxstge +++|# 01639 M00S01562.sxstge +++| 01640 M00S01563.sxstge +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 01641 M00S01564.sxstge +++|*CALL,COMBFAS 01642 M00S01565.sxstge +++|*CALL,COMBCHN 01643 M00S01566.sxstge +++|*CALL,COMBTDM 01644 M00S01567.sxstge +++|*CALL COMXCTF 01645 M00S01568.sxstge +++|*CALL COMBUDT 01646 M00S01569.sxstge +++|*CALL,COMXHLR
Line S00049 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 01647 M01S00049.sxstge3 +++|*CALL COMXMFD 01648 M00S01570.sxstge +++|*CALL,COMXMSC 01649 M00S01571.sxstge +++| 01650 M00S01572.sxstge +++| ITEM BESTAU U; # STARTING AU OF BEST FILE # 01651 M00S01573.sxstge +++| ITEM BESTQ U; # ADDRESS OF BEST ENTRY # 01652 M00S01574.sxstge +++| ITEM CANDIDATE U; # TEMPORARY # 01653 M00S01575.sxstge +++| ITEM FAM C(7); # FAMILY # 01654 M00S01576.sxstge +++| ITEM I I; # LOOP INDEX # 01655 M00S01577.sxstge +++| ITEM SF U; # SUBFAMILY INDEX # 01656 M00S01578.sxstge +++| ITEM QADDR U; # ADDRESS OF NEXT *RTRQ* ENTRY # 01657 M00S01579.sxstge +++| CONTROL EJECT; 01658 M00S01580.sxstge +++| P<HLRQ> = HLRQADR; 01659 M00S01581.sxstge +++| P<TDAM> = LOC(HLR$TDAM[0]); 01660 M00S01582.sxstge +++| 01661 M00S01583.sxstge +++| FAM = TDAMFAM[0]; 01662 M00S01584.sxstge +++| SF = TDAMSBF[0]; 01663 M00S01585.sxstge +++| BESTQ = 0; 01664 M00S01586.sxstge +++| BESTAU = 99999999; 01665 M00S01587.sxstge +++| 01666 M00S01588.sxstge +++| QADDR = CHN$BOC[LCHN"RTD$ACT"]; 01667 M00S01589.sxstge +++| 01668 M00S01590.sxstge +++| FOR DUMMY = 0 WHILE QADDR NQ 0 01669 M00S01591.sxstge +++| DO 01670 M00S01592.sxstge +++| BEGIN # SEARCH LOOP # 01671 M00S01593.sxstge +++| 01672 M00S01594.sxstge +++| CANDIDATE = QADDR; 01673 M00S01595.sxstge +++| P<LINKWRD> = QADDR; 01674 M00S01596.sxstge +++| P<TDAM> = QADDR+1; 01675 M00S01597.sxstge +++| 01676 M00S01598.sxstge +++| QADDR = LINK$ADR[0]; # SET UP FOR NEXT LOOP # 01677 M00S01599.sxstge +++| 01678 M00S01600.sxstge +++|# 01679 M00S01601.sxstge +++|* EXAMINE THE CURRENT *RTRQ* ENTRY AND LOOP IF ITS NOT 01680 M00S01602.sxstge +++|* - FOR THE SAME SUBFAMILY, 01681 M00S01603.sxstge +++|* - FOR THE SAME CARTRIDGE, 01682 M00S01604.sxstge +++|* - THE FIRST ONE ON THE CARTRIDGE. 01683 M00S01605.sxstge +++|# 01684 M00S01606.sxstge +++| 01685 M00S01607.sxstge +++| IF TDAMFC[0] NQ TDAMFCODE"STAGE" ## 01686 M00S01608.sxstge +++| OR TDAMFAM[0] NQ FAM ## 01687 M00S01609.sxstge +++| OR TDAMSBF[0] NQ SF 01688 M00S01610.sxstge +++| THEN # NOT STAGE, OR IN THE SAME 01689 M00S01611.sxstge +++| SUBFAMILY # 01690 M00S01612.sxstge +++| BEGIN 01691 M00S01613.sxstge +++| TEST DUMMY; 01692 M00S01614.sxstge +++| END 01693 M00S01615.sxstge +++| 01694 M00S01616.sxstge +++| P<ASA> = LOC(TDAMASA[0]); 01695 M00S01617.sxstge +++| 01696 M00S01618.sxstge +++| IF ASASM[0] NQ HLR$SM[0] ## 01697 M00S01619.sxstge +++| OR ASAFCT[0] NQ HLR$FCTX[0] 01698 M00S01620.sxstge +++| THEN # NOT ON THE SAME CARTRIDGE # 01699 M00S01621.sxstge +++| BEGIN 01700 M00S01622.sxstge +++| TEST DUMMY; 01701 M00S01623.sxstge +++| END 01702 M00S01624.sxstge +++| 01703 M00S01625.sxstge +++| IF ASAAU[0] LS BESTAU 01704 M00S01626.sxstge +++| THEN # SELECT THIS ONE # 01705 M00S01627.sxstge +++| BEGIN 01706 M00S01628.sxstge +++| BESTQ = CANDIDATE; 01707 M00S01629.sxstge +++| BESTAU = ASAAU[0]; 01708 M00S01630.sxstge +++| TEST DUMMY; 01709 M00S01631.sxstge +++| END 01710 M00S01632.sxstge +++| 01711 M00S01633.sxstge +++| END # SEARCH LOOP # 01712 M00S01634.sxstge +++| 01713 M00S01635.sxstge +++| IF (BESTQ EQ 0) ##
Line S00050 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 01714 M01S00050.sxstge3 +++| OR (HLR$ERRC[0] NQ 0) ## 01715 M00S01636.sxstge +++| OR (HLR$RESP[0] EQ ERRST"RSFULL") 01716 M00S01637.sxstge +++| THEN # NO MORE FILES TO STAGE FROM 01717 M00S01638.sxstge +++| CARTRIDGE # 01718 M00S01639.sxstge +++| BEGIN 01719 M00S01640.sxstge +++| P<TDAM> = LOC(HLR$TDAM[0]); 01720 M00S01641.sxstge +++| TDAMFC[0] = TDAMFCODE"NOREQ"; 01721 M00S01642.sxstge +++| HLR$UNLD[0] = TRUE; 01722 M00S01643.sxstge +++|
Line S01644 Modification History | |
---|---|
M01 (Removed by) | mse2 |
Seq # *Modification Id* Act ----------------------------+ 01723 M01S01644.mse2 ---| SLOWFOR I = 1 STEP 1 UNTIL MAXSMUNIT 01724 M01S01645.mse2 ---| DO 01725 M01S01646.mse2 ---| BEGIN # CLEAR DESTAGE HOLD FLAG # 01726 M01S01647.mse2 ---| IF HLR$SM[0] EQ SM$ID[I] 01727 M01S01648.mse2 ---| THEN 01728 M01S01649.mse2 ---| BEGIN 01729 M01S01650.mse2 ---| SM$DSRQF[I] = FALSE; 01730 M01S01651.mse2 ---| GOTO SMFOUND; 01731 M01S01652.mse2 ---| END 01732 M01S01653.mse2 ---| 01733 M01S01654.mse2 ---| END 01734 M01S01655.mse2 ---| 01735 M01S01656.mse2 ---|SMFOUND: 01736 M00S01657.sxstge +++| END 01737 M00S01658.sxstge +++| 01738 M00S01659.sxstge +++| ELSE # MOVE NEW *TDAM* INTO *HLRQ* # 01739 M00S01660.sxstge +++| BEGIN 01740 M00S01661.sxstge +++| P<TDAM> = BESTQ + 1; 01741 M00S01662.sxstge +++| HLR$TDAM[0] = TDAMREQST[0]; 01742 M00S01663.sxstge +++| RTRQ$CT = RTRQ$CT - 1; 01743 M00S01664.sxstge +++| 01744 M00S01665.sxstge +++| DEL$LNK(BESTQ,LCHN"RTD$ACT",0); 01745 M00S01666.sxstge +++| ZFILL(TDAM[0],TDAMLEN); 01746 M00S01667.sxstge +++| ADD$LNK(BESTQ,LCHN"RTD$FRSPC",0); 01747 M00S01668.sxstge +++| END 01748 M00S01669.sxstge +++| 01749 M00S01670.sxstge +++| ADD$LNK(HLRQADR,LCHN"HL$READY",0); 01750 M00S01671.sxstge +++| HLR$RETRY[0] = FALSE; 01751 M00S01672.sxstge +++| HLR$HPN[0] = HLRPN"STAGE"; 01752 M00S01673.sxstge +++| HLR$HPS[0] = PROCST"INITIAL"; 01753 M00S01674.sxstge +++| 01754 M00S01675.sxstge +++| RETURN; 01755 M00S01676.sxstge +++| END # STNTDAM # 01756 M00S01677.sxstge +++| 01757 M00S01678.sxstge +++| TERM 01758 M00S01679.sxstge +++|PROC TDAM$RP; 01759 M00S01680.sxstge +++| 01760 M00S01681.sxstge +++|# TITLE TDAM$RP - *TDAM* REQUEST PROCESSOR. # 01761 M00S01682.sxstge +++| 01762 M00S01683.sxstge +++| BEGIN # TDAM$RP # 01763 M00S01684.sxstge +++| 01764 M00S01685.sxstge +++|# 01765 M00S01686.sxstge +++|** TDAM$RP - *TDAM* REQUEST PROCESSOR. 01766 M00S01687.sxstge +++|* 01767 M00S01688.sxstge +++|* *TDAM$RP* DOES THE PROCESSING OF REQUESTS RESIDING IN THE *RTRQ*. 01768 M00S01689.sxstge +++|* IN THE *RTRQ*. 01769 M00S01690.sxstge +++|* 01770 M00S01691.sxstge +++|* PROC TDAM$RP. 01771 M00S01692.sxstge +++|* 01772 M00S01693.sxstge +++|* EXIT *HLR$DOSTG* IS SET TO INTERRUPT DESTAGING IF A 01773 M00S01694.sxstge +++|* STAGE REQUEST IS WAITING TO BE PROCESSED. 01774 M00S01695.sxstge +++|* THE MASK *STG$MSK* IS SET UP. 01775 M00S01696.sxstge +++|* 01776 M00S01697.sxstge +++|* MESSAGES * INVALID TDAM REQUEST.*. 01777 M00S01698.sxstge +++|* 01778 M00S01699.sxstge +++|* NOTES *TDAM$RP* PROCESSES *TDAM* REQUESTS AS FOLLOWS - 01779 M00S01700.sxstge +++|* 01780 M00S01701.sxstge +++|* STEP 1 - THE STATUS OF EACH *SM* IS DETERMINED. 01781 M00S01702.sxstge +++|* THE COUNT OF AVAILABLE *DRD-S* IS DECREMENTED IF 01782 M00S01703.sxstge +++|* THE *SM* OR ONE OF THE *DRD-S* IS NOT AVAILABLE. 01783 M00S01704.sxstge +++|* 01784 M00S01705.sxstge +++|* STEP 2 - IF EITHER *DRD* ON A *SM* IS DESTAGING 01785 M00S01706.sxstge +++|* THEN THE *ID* OF THAT CARTRIDGE IS SAVED. IF 01786 M00S01707.sxstge +++|* DESTAGING IS NOT OCCURRING ON EITHER *DRD* THEN 01787 M00S01708.sxstge +++|* THE *ID* OF A CARTRIDGE ON EITHER *DRD* IS SAVED. 01788 M00S01709.sxstge +++|* 01789 M00S01710.sxstge +++|* STEP 3 - THE *RTRQ* IS SEARCHED FOR *TDAM* STAGE 01790 M00S01711.sxstge +++|* REQUESTS. ANY VALID NON-STAGE REQUESTS ARE 01791 M00S01712.sxstge +++|* PROCESSED AS THEY COME IN. 01792 M00S01713.sxstge +++|* STAGE REQUESTS ARE PROCESSED UNLESS 01793 M00S01714.sxstge +++|* 1) NO *DRD-S* ARE FREE. 01794 M00S01715.sxstge +++|* 2) ONE *DRD* IS FREE AND THE CARTRIDGE NEEDED 01795 M00S01716.sxstge +++|* IS IN USE. 01796 M00S01717.sxstge +++|* IN EITHER OF THESE TWO CASES, IF THE *SM* IS 01797 M00S01718.sxstge +++|* DESTAGING THE *HLR$DOSTG* FLAG IS SET TO INTERRUPT 01798 M00S01719.sxstge +++|* THE DESTAGE. 01799 M00S01720.sxstge +++|* 01800 M00S01721.sxstge +++|* STEP 4 - THE MASK *STG$MSK* IS SET UP WITH ONE BIT 01801 M00S01722.sxstge +++|* PER *SM* SET IF A STAGE REQUEST FROM A *SM* CANNOT 01802 M00S01723.sxstge +++|* BE PROCESSED BECAUSE THE FOLLOWING CONDITIONS ARE 01803 M00S01724.sxstge +++|* PRESENT - 01804 M00S01725.sxstge +++|* 1) NO SPACE IS AVAILABLE FOR NEW *HLRQ* REQUESTS. 01805 M00S01726.sxstge +++|* 2) THERE ARE NO *DRD-S* AVAILABLE. 01806 M00S01727.sxstge +++|* 3) THE *SM* IS NOT DESTAGING AND THEREFORE CANNOT 01807 M00S01728.sxstge +++|* BE INTERRUPTED BY SETTING THE *HLR$DOSTG* FLAG. 01808 M00S01729.sxstge +++|# 01809 M00S01730.sxstge +++| 01810 M00S01731.sxstge +++| 01811 M00S01732.sxstge +++|# 01812 M00S01733.sxstge +++|**** PROC TDAM$RP - XREF LIST BEGIN. 01813 M00S01734.sxstge +++|# 01814 M00S01735.sxstge +++| 01815 M00S01736.sxstge +++| XREF 01816 M00S01737.sxstge +++| BEGIN 01817 M00S01738.sxstge +++| PROC ADD$LNK; # ADD ENTRY TO LINK # 01818 M00S01739.sxstge +++| PROC CRELSLK; # RELEASE CATALOG INTERLOCK # 01819 M00S01740.sxstge +++| PROC CRELSMM; # RELEASE CATALOG IN MODIFY MODE # 01820 M00S01741.sxstge +++| PROC DEL$LNK; # DELETE ENTRY FROM LINK # 01821 M00S01742.sxstge +++| PROC HLRQENQ; # *HLRQ* ENQUEUER # 01822 M00S01743.sxstge +++| PROC SSOVL; # LOAD *MSAS* OVERLAYS # 01823 M00S01744.sxstge +++| PROC MSG; # ISSUE MESSAGE # 01824 M00S01745.sxstge +++| PROC MSGAFDF; # MESSAGE HANDLER # 01825 M00S01746.sxstge +++| PROC ZFILL; # ZERO FILL BUFFER # 01826 M00S01747.sxstge +++| END 01827 M00S01748.sxstge +++| 01828 M00S01749.sxstge +++|# 01829 M00S01750.sxstge +++|**** PROC TDAM$RP - XREF LIST END. 01830 M00S01751.sxstge +++|# 01831 M00S01752.sxstge +++| 01832 M00S01753.sxstge +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 01833 M00S01754.sxstge +++|*CALL,COMBFAS 01834 M00S01755.sxstge +++|*CALL,COMBCHN 01835 M00S01756.sxstge +++|*CALL,COMBOVL 01836 M00S01757.sxstge +++|*CALL,COMBTDM 01837 M00S01758.sxstge +++|*CALL,COMBUDT 01838 M00S01759.sxstge +++|*CALL,COMXCTF 01839 M00S01760.sxstge +++|*CALL COMXEMC 01840 M00S01761.sxstge +++|*CALL,COMXHLR 01841 M00S01762.sxstge +++|*CALL,COMXMFD 01842 M00S01763.sxstge +++|*CALL,COMXMSC 01843 M00S01764.sxstge +++| 01844 M00S01765.sxstge +++| ITEM DRDCOUNT I; # DRD COUNT # 01845 M00S01766.sxstge +++| ITEM FCT U; # CURRENT *FCT* ORDINAL # 01846 M00S01767.sxstge +++| ITEM FULL B; # *DRD* FULL # 01847 M00S01768.sxstge +++| ITEM HLRADR U; # *HLRQ* ENTRY ADDRESS # 01848 M00S01769.sxstge +++| ITEM HLRDEST U; # ADDRESS OF DESTAGE *HLRQ* ENTRY 01849 M00S01770.sxstge +++| # 01850 M00S01771.sxstge +++| ITEM I I; # LOOP INDEX # 01851 M00S01772.sxstge +++| ITEM LINK I; # ADDRESS OF NEW CHAIN ENTRY # 01852 M00S01773.sxstge +++| ITEM OFFSET I; # INCREMENT FROM LINK ADDRESS TO 01853 M00S01774.sxstge +++| GET *TDAM* ENTRY # 01854 M00S01775.sxstge +++| ITEM RTDADR U; # *RTRQ* ENTRY ADDRESS # 01855 M00S01776.sxstge +++| ITEM REMOVE B; # REMOVE ENTRY FROM *RTRQ* # 01856 M00S01777.sxstge +++| ITEM SM I; # SM-ID # 01857 M00S01778.sxstge +++| ITEM STAT I; # STATUS #
Line S00051 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 01858 M01S00051.sxstge3 +++| ITEM STDRDCT I; # STAGE DRD COUNT # 01859 M01S00052.sxstge3 +++| ITEM TYPE C(1); # MESSAGE TYPE S # 01860 M00S01779.sxstge +++|# 01861 M00S01780.sxstge +++|* STEP 1 - SEARCH THE *RTRQ* FOR *TDAM* STAGE REQUESTS 01862 M00S01781.sxstge +++| 01863 M00S01782.sxstge +++|* IF NON-STAGE REQUESTS ARE FOUND PROCESS THEM ACCORDINGLY. 01864 M00S01783.sxstge +++|# 01865 M00S01784.sxstge +++| 01866 M00S01785.sxstge +++| RTRQ$CT = 0; # CLEAR *RTRQ* COUNTER # 01867 M00S01786.sxstge +++| LINK = CHN$BOC[LCHN"RTD$ACT"]; 01868 M00S01787.sxstge +++| 01869 M00S01788.sxstge +++| REPEAT WHILE LINK NQ 0 01870 M00S01789.sxstge +++| DO 01871 M00S01790.sxstge +++| BEGIN # SCAN *RTRQ* # 01872 M00S01791.sxstge +++| 01873 M00S01792.sxstge +++| RTDADR = LINK; 01874 M00S01793.sxstge +++| P<TDAM> = LINK + 1; 01875 M00S01794.sxstge +++| P<LINKWRD> = LINK; 01876 M00S01795.sxstge +++| LINK = LINK$ADR[0]; 01877 M00S01796.sxstge +++| REMOVE = FALSE; 01878 M00S01797.sxstge +++| 01879 M00S01798.sxstge +++|# 01880 M00S01799.sxstge +++|* CHECK FOR INVALID *TDAM* REQUEST. 01881 M00S01800.sxstge +++|# 01882 M00S01801.sxstge +++| 01883 M00S01802.sxstge +++| IF TDAMFC[0] LQ TDAMFCODE"NOREQ" ## 01884 M00S01803.sxstge +++| OR TDAMFC[0] GQ TDAMFCODE"FCEND" ## 01885 M00S01804.sxstge +++| OR TDAMFC[0] EQ TDAMFCODE"DESTAGE" ## 01886 M00S01805.sxstge +++| OR TDAMFC[0] EQ TDAMFCODE"DESTRLS" 01887 M00S01806.sxstge +++| THEN 01888 M00S01807.sxstge +++| BEGIN 01889 M00S01808.sxstge +++| MSG(INVRQC,UDFL1); # INVALID *TDAM* REQUEST # 01890 M00S01809.sxstge +++| REMOVE = TRUE; 01891 M00S01810.sxstge +++| END 01892 M00S01811.sxstge +++| 01893 M00S01812.sxstge +++|# 01894 M00S01813.sxstge +++|* PROCESS *TDAM* REQUEST. 01895 M00S01814.sxstge +++|# 01896 M00S01815.sxstge +++| 01897 M00S01816.sxstge +++| IF TDAMFC[0] EQ TDAMFCODE"RCLMCINT" ## 01898 M00S01817.sxstge +++| OR TDAMFC[0] EQ TDAMFCODE"RCLMUMI" 01899 M00S01818.sxstge +++| THEN # RECLAIM INTERLOCKS # 01900 M00S01819.sxstge +++| BEGIN 01901 M00S01820.sxstge +++| RCLMCAT = TRUE; 01902 M00S01821.sxstge +++| SSOVL(LRCLMLK,0); 01903 M00S01822.sxstge +++| REMOVE = TRUE; 01904 M00S01823.sxstge +++| END 01905 M00S01824.sxstge +++| 01906 M00S01825.sxstge +++| IF TDAMFC[0] EQ TDAMFCODE"RLSCINT" 01907 M00S01826.sxstge +++| THEN # RELEASE CATALOG INTERLOCKS # 01908 M00S01827.sxstge +++| BEGIN 01909 M00S01828.sxstge +++| REMOVE = TRUE; 01910 M00S01829.sxstge +++| IF DSC$FAM NQ TDAMPFUFAM[0] 01911 M00S01830.sxstge +++| THEN # DESTAGE REQUESTS NOT ACTIVE ON 01912 M00S01831.sxstge +++| FAMILY # 01913 M00S01832.sxstge +++| BEGIN 01914 M00S01833.sxstge +++| CRELSLK(TDAMPFUFAM[0],TDAMMASK[0],0,STAT); 01915 M00S01834.sxstge +++| END 01916 M00S01835.sxstge +++| 01917 M00S01836.sxstge +++| ELSE # RELEASE INTERLOCKS LATER # 01918 M00S01837.sxstge +++| BEGIN 01919 M00S01838.sxstge +++| DSC$LKTYP = 0; 01920 M00S01839.sxstge +++| DSC$LKMSK = DSC$LKMSK LOR TDAMMASK[0]; 01921 M00S01840.sxstge +++| END 01922 M00S01841.sxstge +++| 01923 M00S01842.sxstge +++| END 01924 M00S01843.sxstge +++| 01925 M00S01844.sxstge +++| IF TDAMFC[0] EQ TDAMFCODE"RLSUMI" 01926 M00S01845.sxstge +++| THEN # RELEASE UPDATE MODE INTERLOCK # 01927 M00S01846.sxstge +++| BEGIN 01928 M00S01847.sxstge +++| REMOVE = TRUE; 01929 M00S01848.sxstge +++| IF DSC$FAM NQ TDAMPFUFAM[0] 01930 M00S01849.sxstge +++| THEN # DESTAGE REQUESTS NOT ACTIVE ON 01931 M00S01850.sxstge +++| FAMILY # 01932 M00S01851.sxstge +++| BEGIN 01933 M00S01852.sxstge +++| CRELSMM(TDAMPFUFAM[0],TDAMMASK[0],0,STAT); 01934 M00S01853.sxstge +++| END 01935 M00S01854.sxstge +++| 01936 M00S01855.sxstge +++| ELSE # RELEASE INTERLOCK LATER # 01937 M00S01856.sxstge +++| BEGIN 01938 M00S01857.sxstge +++| DSC$LKTYP = 1; 01939 M00S01858.sxstge +++| DSC$LKMSK = DSC$LKMSK LOR TDAMMASK[0]; 01940 M00S01859.sxstge +++| END 01941 M00S01860.sxstge +++| 01942 M00S01861.sxstge +++| END 01943 M00S01862.sxstge +++| 01944 M00S01863.sxstge +++|# 01945 M00S01864.sxstge +++|* PROCESS STAGE REQUEST. 01946 M00S01865.sxstge +++|# 01947 M00S01866.sxstge +++| 01948 M00S01867.sxstge +++| IF TDAMFC[0] EQ TDAMFCODE"STAGE" 01949 M00S01868.sxstge +++| THEN 01950 M00S01869.sxstge +++| BEGIN # PROCESS STAGE REQUEST # 01951 M00S01870.sxstge +++| 01952 M00S01871.sxstge +++|# 01953 M00S01872.sxstge +++|* SET *SM* INDEX. 01954 M00S01873.sxstge +++|# 01955 M00S01874.sxstge +++| 01956 M00S01875.sxstge +++| P<ASA> = LOC(TDAMASA[0]); 01957 M00S01876.sxstge +++| SM = ASASM[0]; 01958 M00S01877.sxstge +++| RTRQ$CT = RTRQ$CT + 1; 01959 M00S01878.sxstge +++| 01960 M00S01879.sxstge +++|# 01961 M00S01880.sxstge +++|* IF NO *DRD-S* ARE FREE - DO NOT PROCESS THE REQUEST. 01962 M00S01881.sxstge +++|* IF DESTAGING IS BEING DONE, SET BIT IN *HLRQ* FOR 01963 M00S01882.sxstge +++|* DESTAGER TO PROCESS STAGE REQUESTS WHEN DONE DESTAGING. 01964 M00S01883.sxstge +++|* 01965 M00S01884.sxstge +++|* IF ONE *DRD* IS FREE - PROCESS THE REQUEST UNLESS THE 01966 M00S01885.sxstge +++|* CARTRIDGE IS IN USE. 01967 M00S01886.sxstge +++|* IF DESTAGER IS USING THIS CARTRIDGE, SET THE *DOSTG* 01968 M00S01887.sxstge +++|* FLAG IN THE *HLRQ*. 01969 M00S01888.sxstge +++|# 01970 M00S01889.sxstge +++| 01971 M00S01890.sxstge +++| 01972 M00S01891.sxstge +++| SLOWFOR I=1 STEP 1 UNTIL MAXSMUNIT 01973 M00S01892.sxstge +++| DO 01974 M00S01893.sxstge +++| BEGIN # UNTIL SM FOUND # 01975 M00S01894.sxstge +++| IF SM EQ SM$ID[I] 01976 M00S01895.sxstge +++| THEN 01977 M00S01896.sxstge +++| BEGIN # CHECK *FCT* IN USE # 01978 M00S01897.sxstge +++| DRDCOUNT = 0; 01979 M00S01898.sxstge +++| FULL = FALSE; 01980 M00S01899.sxstge +++| 01981 M00S01900.sxstge +++| IF D0$ON[I] 01982 M00S01901.sxstge +++| THEN 01983 M00S01902.sxstge +++| BEGIN 01984 M00S01903.sxstge +++| DRDCOUNT = 1; 01985 M00S01904.sxstge +++| END 01986 M00S01905.sxstge +++| 01987 M00S01906.sxstge +++| IF D1$ON[I] 01988 M00S01907.sxstge +++| THEN 01989 M00S01908.sxstge +++| BEGIN 01990 M00S01909.sxstge +++| DRDCOUNT = DRDCOUNT + 1; 01991 M00S01910.sxstge +++| END 01992 M00S01911.sxstge +++|
Line S00053 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 01993 M01S00053.sxstge3 +++| IF SM$STNUM[I] EQ 0 01994 M01S00054.sxstge3 +++| THEN 01995 M01S00055.sxstge3 +++| BEGIN 01996 M01S00056.sxstge3 +++| GOTO TDAM$CONT; 01997 M01S00057.sxstge3 +++| END 01998 M01S00058.sxstge3 +++| 01999 M01S00059.sxstge3 +++| STDRDCT = SM$STNUM[I]; 02000 M01S00060.sxstge3 +++| 02001 M00S01912.sxstge +++| IF SM$REQRES1[I] NQ 0 02002 M00S01913.sxstge +++| AND SM$REQRES2[I] NQ 0 02003 M00S01914.sxstge +++| THEN 02004 M00S01915.sxstge +++| BEGIN 02005 M00S01916.sxstge +++| FULL = TRUE; 02006 M00S01917.sxstge +++| END 02007 M00S01918.sxstge +++| 02008 M00S01919.sxstge +++| IF DRDCOUNT EQ 1 02009 M00S01920.sxstge +++| THEN 02010 M00S01921.sxstge +++| BEGIN 02011 M00S01922.sxstge +++| IF (SM$REQRES1[I] NQ 0) 02012 M00S01923.sxstge +++| OR (SM$REQRES2[I] NQ 0) 02013 M00S01924.sxstge +++| THEN 02014 M00S01925.sxstge +++| BEGIN 02015 M00S01926.sxstge +++| FULL = TRUE; 02016 M00S01927.sxstge +++| END 02017 M00S01928.sxstge +++| END 02018 M00S01929.sxstge +++| IF SM$REQRES1[I] NQ 0 02019 M00S01930.sxstge +++| THEN 02020 M00S01931.sxstge +++| BEGIN # CHECK FIRST RESERVE AREA # 02021 M00S01932.sxstge +++| IF NOT SM$LLRQ1[I] 02022 M00S01933.sxstge +++| THEN 02023 M00S01934.sxstge +++| BEGIN # RESERVED BY *HLRQ* # 02024 M00S01935.sxstge +++| P<HLRQ> = SM$REQRES1[I];
Line S00061 Modification History | |
---|---|
M01 (Added by) | sxstge3 |
Seq # *Modification Id* Act ----------------------------+ 02025 M01S00061.sxstge3 +++| 02026 M01S00062.sxstge3 +++| IF HLR$HPN[0] EQ HLRPN"STAGE" 02027 M01S00063.sxstge3 +++| THEN 02028 M01S00064.sxstge3 +++| BEGIN 02029 M01S00065.sxstge3 +++| STDRDCT = STDRDCT - 1; 02030 M01S00066.sxstge3 +++| END 02031 M01S00067.sxstge3 +++| 02032 M01S00068.sxstge3 +++| IF STDRDCT EQ 0 02033 M01S00069.sxstge3 +++| THEN 02034 M01S00070.sxstge3 +++| BEGIN 02035 M01S00071.sxstge3 +++| FULL = TRUE; 02036 M01S00072.sxstge3 +++| END 02037 M01S00073.sxstge3 +++| 02038 M00S01936.sxstge +++| IF HLR$FCTX[0] NQ 0 02039 M00S01937.sxstge +++| THEN 02040 M00S01938.sxstge +++| BEGIN 02041 M00S01939.sxstge +++| FCT = HLR$FCTX[0];
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/sxstge.txt ยท Last modified: by 127.0.0.1