cdc:nos2.source:opl.opl871:deck:secart.001
Deck SECART Part 001
1 Modification
Listing Sections
- Deck SECART Start
- Deck SECART Part 1 (Line 2160)
Source
Seq # *Modification Id* Act ----------------------------+ 02160 M00S02158.secart +++| 02161 M00S02159.secart +++| COMMON /TRC/ DSU 02162 M00S02160.secart +++| COMMON /TRC/ MK 02163 M00S02161.secart +++| COMMON /TRC/ JN 02164 M00S02162.secart +++| COMMON /TRC/ JS 02165 M00S02163.secart +++| COMMON /TRC/ JC 02166 M00S02164.secart +++| COMMON /TRC/ TS 02167 M00S02165.secart +++| COMMON /TRC/ TE 02168 M00S02166.secart +++| COMMON /TRC/ FN 02169 M00S02167.secart +++| COMMON /TRC/ UN 02170 M00S02168.secart +++| COMMON /TRC/ TN 02171 M00S02169.secart +++| 02172 M00S02170.secart +++| 02173 M00S02171.secart +++|** ENTRY - CALL ACSCAN(LFN,*NNN) 02174 M00S02172.secart +++|* *LFN* IS LFN OF ACCOUNT LOG FILE. 02175 M00S02173.secart +++|* *NNN IS ALTERNATE EXIT STATEMENT NUMBER. 02176 M00S02174.secart +++|* 02177 M00S02175.secart +++|* EXIT - FILE REWOUND AND FIRST RECORD READ FOR PROCESSING. 02178 M00S02176.secart +++|* 02179 M00S02177.secart +++|* ERROR - ALTERNATE EXIT TAKEN IF FILE FAILS FORMAT TEST OR 02180 M00S02178.secart +++|* EOF FOUND BEFORE LOG DATE AND SYSTEM ID ARE FOUND. 02181 M00S02179.secart +++|* 02182 M00S02180.secart +++|* USES - COMMON /CTL/ FOR GLOBAL VARIABLES DFEOF, DFIN. 02183 M00S02181.secart +++|* COMMON /ACL/ FOR ACCOUNT-SPECIFIC VARIABLES. 02184 M00S02182.secart +++|* 02185 M00S02183.secart +++|* CALLS - *LOGTEST* TO CHECK FORMAT, EXTRACT START DATE/TIME. 02186 M00S02184.secart +++|* 02187 M00S02185.secart +++|* NOTES - ACCOUNT LOG PRE-SCAN ROUTINE REQUIRES: 02188 M00S02186.secart +++|* 1) THAT FILE BE FORMATTED AS A RAW ACCOUNT LOG. 02189 M00S02187.secart +++|* 2) FINDING A START DATE VIA SYSJOB MESSAGE - 02190 M00S02188.secart +++|* A) 'ABSY' OR 'SIDT' MESSAGE, -OR- 02191 M00S02189.secart +++|* B) 'ACDT' MESSAGE. 02192 M00S02190.secart +++|* 3) ESTABLISHING SYSTEM ID VIA SYSJOB MESSAGES, 02193 M00S02191.secart +++|* A) 'ABST' MESSAGE FOR TITLE, -AND- 02194 M00S02192.secart +++|* B) 'ABSV' MESSAGE FOR VERSION. 02195 M00S02193.secart +++|* IF SUCCESSFUL, FILE WILL BE REWOUND AND FIRST RECORD 02196 M00S02194.secart +++|* WILL BE READ IN ADVANCE TO START PROCESSING. 02197 M00S02195.secart +++| 02198 M00S02196.secart +++| ACEOF=.FALSE. 02199 M00S02197.secart +++| 02200 M00S02198.secart +++|* CHECK LOG FORMAT AND EXTRACT START [DATE]/TIME STAMPS. 02201 M00S02199.secart +++| 02202 M00S02200.secart +++| CALL LOGTEST(2,ACTXT,ACEDATE,ACETIME,*130) 02203 M00S02201.secart +++| IF (ACETIME.EQ.' ' .OR. ACTXT(25:26).NE.', ') THEN 02204 M00S02202.secart +++| CALL REMARK(' *** '//LFN//' NOT RAW ACCOUNT LOG.') 02205 M00S02203.secart +++| ACEOF=.TRUE. 02206 M00S02204.secart +++| RETURN 1 02207 M00S02205.secart +++| ENDIF 02208 M00S02206.secart +++| 02209 M00S02207.secart +++|* ACCEPT TIME, COUNT DATE STAMP RECORD AND REMEMBER TO SKIP OVER. 02210 M00S02208.secart +++| 02211 M00S02209.secart +++| ACSTIME=ACETIME 02212 M00S02210.secart +++| IF (ACEDATE.NE.' ') ACIN=1 02213 M00S02211.secart +++| GOTO 110 02214 M00S02212.secart +++| 02215 M00S02213.secart +++|* READ NEXT ACCOUNT LOG RECORD. 02216 M00S02214.secart +++| 02217 M00S02215.secart +++| 100 READ (2,10,END=130) ACTXT 02218 M00S02216.secart +++| 10 FORMAT(A100) 02219 M00S02217.secart +++| 02220 M00S02218.secart +++| 110 ACETIME=ACTXT(1:10) 02221 M00S02219.secart +++| MID=ACTXT(21:24) 02222 M00S02220.secart +++| 02223 M00S02221.secart +++|* SCAN FOR SYSJOB MESSAGES ONLY. 02224 M00S02222.secart +++| 02225 M00S02223.secart +++| IF (ACTXT(13:17).NE.'SYS S') GOTO 100 02226 M00S02224.secart +++| 02227 M00S02225.secart +++|* WATCH FOR SYSJOB MSGS W/ DATE, TITLE AND VERSION. 02228 M00S02226.secart +++| 02229 M00S02227.secart +++| IF (MID.EQ.'ABST') THEN 02230 M00S02228.secart +++| ACTITLE=ACTXT(27:66) 02231 M00S02229.secart +++| ELSE IF (MID.EQ.'ABSV') THEN 02232 M00S02230.secart +++| ACVERSN=ACTXT(27:46) 02233 M00S02231.secart +++| ELSE IF (MID.EQ.'ABSY' .OR. MID.EQ.'SIDT')THEN 02234 M00S02232.secart +++| ACEDATE=ACTXT(27:36) 02235 M00S02233.secart +++| ELSE IF (MID.EQ.'ACDT' .AND. ACTXT(27:36).EQ.'DS, DATE. ') THEN 02236 M00S02234.secart +++| ACEDATE=ACTXT(37:46) 02237 M00S02235.secart +++| ENDIF 02238 M00S02236.secart +++| 02239 M00S02237.secart +++|* ACCEPT START DATE, IF FOUND. 02240 M00S02238.secart +++| 02241 M00S02239.secart +++| IF (ACSDATE.EQ.' ' .AND. ACEDATE.NE.' ') ACSDATE=ACEDATE 02242 M00S02240.secart +++| 02243 M00S02241.secart +++|* NEED DATE, SYSTEM TITLE AND VERSION TO PROCESS LOG. 02244 M00S02242.secart +++| 02245 M00S02243.secart +++| IF (ACSDATE.EQ.' '.OR.ACTITLE.EQ.' '.OR.ACVERSN.EQ.' ') GOTO 100 02246 M00S02244.secart +++| 02247 M00S02245.secart +++|* REWIND FOR ROUTINE PROCESSING AND SKIP OVER DATE STAMP. 02248 M00S02246.secart +++| 02249 M00S02247.secart +++| REWIND 2 02250 M00S02248.secart +++| IF (ACIN.EQ.1) READ (2,10,END=130) ACTXT 02251 M00S02249.secart +++| PRT=.FALSE. 02252 M00S02250.secart +++| 02253 M00S02251.secart +++|* DROP THROUGH TO READ FIRST USABLE MESSAGE. 02254 M00S02252.secart +++| 02255 M00S02253.secart +++|* --------------------------------------------------------------------- 02256 M00S02254.secart +++|* ROUTINE ACCOUNT LOG MESSAGE PROCESSING. 02257 M00S02255.secart +++|* --------------------------------------------------------------------- 02258 M00S02256.secart +++| 02259 M00S02257.secart +++|* GET MSG, COUNT & MARK AS TO SOURCE ('+' IN COL 20 = ACCOUNT). 02260 M00S02258.secart +++| 02261 M00S02259.secart +++| 120 READ (2,10,END=130) ACTXT 02262 M00S02260.secart +++| ACIN=ACIN+1 02263 M00S02261.secart +++| ACETIME=ACTXT(1:10) 02264 M00S02262.secart +++| MID=ACTXT(21:24) 02265 M00S02263.secart +++| ACTXT(20:20)='+' 02266 M00S02264.secart +++| 02267 M00S02265.secart +++|* SPECIAL CASE BIAS SOME MSG ID-S TO PRECEDE DFL MSGS. 02268 M00S02266.secart +++| 02269 M00S02267.secart +++| IF (INDEX('AB AC AR AS',MID(1:2)).NE.0 02270 M00S02268.secart +++| . .OR. MID.EQ.'SIDT') ACETIME(10:10)=' ' 02271 M00S02269.secart +++| RETURN 02272 M00S02270.secart +++| 02273 M00S02271.secart +++| 02274 M00S02272.secart +++|* EOF ALTERNATE EXIT. 02275 M00S02273.secart +++| 02276 M00S02274.secart +++| 130 ACEOF=.TRUE. 02277 M00S02275.secart +++| WRITE (8,*) ' === EOF ACCOUNT LOG ',LFN,', ',ACIN,' MESSAGES' 02278 M00S02276.secart +++| RETURN 1 02279 M00S02277.secart +++| 02280 M00S02278.secart +++| 02281 M00S02279.secart +++|** ENTRY - CALL ACMSG(*NNN) 02282 M00S02280.secart +++|* *NNN IS ALTERNATE EXIT TAKEN WHEN ACEOF = .TRUE. AT 02283 M00S02281.secart +++|* TIME OF CALL. 02284 M00S02282.secart +++|* 02285 M00S02283.secart +++|* EXIT - ANNOTATED ACCOUNT LOG MESSAGE WRITTEN TO COMPOSITE 02286 M00S02284.secart +++|* LOG FILE ON UNIT 3 AND NEXT RECORD IS READ, OR 02287 M00S02285.secart +++|* *ACEOF* IS SET TO .TRUE. 02288 M00S02286.secart +++|* 02289 M00S02287.secart +++|* ERROR - NONE. 02290 M00S02288.secart +++|* 02291 M00S02289.secart +++|* PRINTOUT - 02292 M00S02290.secart +++|* ANNOTATED COPIES OF CERTAIN ACCOUNT LOG MESSAGES: 02293 M00S02291.secart +++|* - ALL WITH TIMESTAMP WITHIN TIME WINDOW. 02294 M00S02292.secart +++|* - JOB RECOVERY MESSAGES. 02295 M00S02293.secart +++|* - CHANGES TO USERNAME ASSOCIATED WITH A JOB. 02296 M00S02294.secart +++|* - CHANGES TO JOB'S JSN. 02297 M00S02295.secart +++|* 02298 M00S02296.secart +++|* CALLS - *JSNLVL0* TO UPDATE D/S UNIQUE JSN PREFIX CODE. 02299 M00S02297.secart +++|* *TMCHECK* TO CHECK FOR TIME WINDOWS. 02300 M00S02298.secart +++|* *JSNTRAK* TO COLLECT ATTRIBUTES IN JSN TRACE TABLE. 02301 M00S02299.secart +++|* *AMSTEST* TO COLLECT ACCOUNT MSG ID STATISTICS AND 02302 M00S02300.secart +++|* DETECT FLAGGED ID-S. 02303 M00S02301.secart +++|* *JSNLOOK* TO FIND RECOVERED JOB ATTRIBUTES. 02304 M00S02302.secart +++|* *PICKUSR* TO CHECK NEW USERID-S FOR SELECTION. 02305 M00S02303.secart +++|* *PICKTRM* TO CHECK NEW TERMINAL ID-S FOR SELECTION. 02306 M00S02304.secart +++|* *PARSE* TO EXTRACT DATA ITEMS FROM LOG MESSAGES. 02307 M00S02305.secart +++|* 02308 M00S02306.secart +++|* NOTES - THIS ROUTINE PROCESSES MESSAGE READ DURING PREVIOUS 02309 M00S02307.secart +++|* CALL AND THEN READS NEXT RECORD BEFORE RETURNING. 02310 M00S02308.secart +++|* THIS ALLOWS *SECART* TO SEE TIMESTAMP OF NEXT RECORD 02311 M00S02309.secart +++|* AND DECIDE WHEN TO PROCESS VIS A VIS DAYFILE LOG. 02312 M00S02310.secart +++|* TO INSURE THAT MESSAGE ID-S BEGINNING WITH 'AB', 02313 M00S02311.secart +++|* 'AC', 'AR', AND 'AS' PRECEEDE DAYFILE MESSAGES IN 02314 M00S02312.secart +++|* SAME SECOND, A SPECIAL CASE BIAS IS APPLIED BY 02315 M00S02313.secart +++|* BLANKING FINAL PERIOD IN TIMESTAMP. 02316 M00S02314.secart +++| 02317 M00S02315.secart +++| ENTRY ACMSG(*) 02318 M00S02316.secart +++| 02319 M00S02317.secart +++|* RESET SPECIAL CASE BIAS, IF ANY. 02320 M00S02318.secart +++| 02321 M00S02319.secart +++| ACETIME(10:10)='.' 02322 M00S02320.secart +++| 02323 M00S02321.secart +++|* WATCH FOR NEW DATE AND LEVEL 0 DEADSTART MSGS. 02324 M00S02322.secart +++| 02325 M00S02323.secart +++| IF (INDEX('ABSY AESY SIDT',MID).NE.0) THEN 02326 M00S02324.secart +++| ACEDATE=ACTXT(27:36) 02327 M00S02325.secart +++| ELSE IF (MID.EQ.'ACDT') THEN 02328 M00S02326.secart +++| IF (ACTXT(27:36).EQ.'DS, DATE. ') ACEDATE=ACTXT(37:46) 02329 M00S02327.secart +++| ELSE IF (MID.EQ.'ARSY') THEN 02330 M00S02328.secart +++| ACEDATE=ACTXT(29:38) 02331 M00S02329.secart +++| IF (ACTXT(27:28).EQ.'0,') CALL JSNLVL0 02332 M00S02330.secart +++| ENDIF 02333 M00S02331.secart +++| 02334 M00S02332.secart +++|* INSERT D/S UNIQUE CODE LETTER AS JSN PREFIX. 02335 M00S02333.secart +++| 02336 M00S02334.secart +++| ACTXT(11:12)=DSU//'.' 02337 M00S02335.secart +++| 02338 M00S02336.secart +++|* CHECK FOR TIME WINDOW START OR END. 02339 M00S02337.secart +++| 02340 M00S02338.secart +++| CALL TMCHECK(ACETIME,PRT) 02341 M00S02339.secart +++| 02342 M00S02340.secart +++|* COLLECT/MATCH JSN-S. 02343 M00S02341.secart +++| 02344 M00S02342.secart +++| JSN=ACTXT(11:16) 02345 M00S02343.secart +++| JCL=ACTXT(17:17) 02346 M00S02344.secart +++| CALL JSNTRAK(JSN,JCL,ACEDTG,N,2) 02347 M00S02345.secart +++| 02348 M00S02346.secart +++|* COLLECT/MATCH MESSAGE IDS & DETECT FLAGGED MSG ID-S. 02349 M00S02347.secart +++| 02350 M00S02348.secart +++| CALL AMSTEST(MID,JCL,PRT) 02351 M00S02349.secart +++| 02352 M00S02350.secart +++|* WATCH FOR RECOVERED JOBS. TRY TO RETRIEVE ATTRIBUTES. 02353 M00S02351.secart +++| 02354 M00S02352.secart +++| IF (MID.EQ.'ARRQ' .AND. ACTXT(27:28).EQ.'C1' 02355 M00S02353.secart +++| . .AND. ACTXT(53:54).EQ.'IN' ) THEN 02356 M00S02354.secart +++| NUDTG=' 00/00/00. 00.00.00.' 02357 M00S02355.secart +++| NUDTG(2:3)=ACTXT(37:38) 02358 M00S02356.secart +++| NUDTG(5:6)=ACTXT(39:40) 02359 M00S02357.secart +++| NUDTG(8:9)=ACTXT(41:42) 02360 M00S02358.secart +++| NUDTG(12:13)=ACTXT(45:46) 02361 M00S02359.secart +++| NUDTG(15:16)=ACTXT(47:48) 02362 M00S02360.secart +++| NUDTG(18:19)=ACTXT(49:50) 02363 M00S02361.secart +++| X=DSU 02364 M00S02362.secart +++| 02365 M00S02363.secart +++| 165 NUJSN=X//'.'//ACTXT(31:34) 02366 M00S02364.secart +++| CALL JSNLOOK(NUJSN,L) 02367 M00S02365.secart +++| IF (L.NE.0.AND.TS(L).EQ.NUDTG) THEN 02368 M00S02366.secart +++| FN(N)=FN(L) 02369 M00S02367.secart +++| UN(N)=UN(L) 02370 M00S02368.secart +++| JN(N)=JN(L) 02371 M00S02369.secart +++| WRITE (8,*) ' === JSN RECOVERED ',JS(L) 02372 M00S02370.secart +++| PRT=.TRUE. 02373 M00S02371.secart +++| ELSE 02374 M00S02372.secart +++| X=CHAR(ICHAR(X)-1) 02375 M00S02373.secart +++| IF (X.GE.'A') GOTO 165 02376 M00S02374.secart +++| WRITE (8,*) ' === JSN NOT FOUND: ',NUJSN(3:6),NUDTG 02377 M00S02375.secart +++| PRT=.TRUE. 02378 M00S02376.secart +++| ENDIF 02379 M00S02377.secart +++| ENDIF 02380 M00S02378.secart +++| 02381 M00S02379.secart +++|* COLLECT/CHANGE ATTRIBUTES IN TRACE TABLE. 02382 M00S02380.secart +++|* GET USER ID & TERMINAL AND CHECK FOR SELECTION. 02383 M00S02381.secart +++| 02384 M00S02382.secart +++| IF (MID.EQ.'ABUN') THEN 02385 M00S02383.secart +++| I=27 02386 M00S02384.secart +++| CALL PARSE(ACTXT,I,USR) 02387 M00S02385.secart +++| CALL PARSE(ACTXT,I,FAM) 02388 M00S02386.secart +++| CALL PARSE(ACTXT,I,TRM) 02389 M00S02387.secart +++| TN(N)=TRM 02390 M00S02388.secart +++| IF (FN(N).EQ.' ' .AND. UN(N).EQ.' ' ) THEN 02391 M00S02389.secart +++| UN(N)=USR 02392 M00S02390.secart +++| FN(N)=FAM 02393 M00S02391.secart +++| ENDIF 02394 M00S02392.secart +++| CALL PICKUSR(FAM,USR,MK(N)) 02395 M00S02393.secart +++| CALL PICKTRM(TRM,MK(N)) 02396 M00S02394.secart +++| 02397 M00S02395.secart +++| ELSE IF (MID.EQ.'ACUN') THEN 02398 M00S02396.secart +++| I=27 02399 M00S02397.secart +++| CALL PARSE(ACTXT,I,USR) 02400 M00S02398.secart +++| CALL PARSE(ACTXT,I,FAM) 02401 M00S02399.secart +++| CALL PICKUSR(FAM,USR,MK(N)) 02402 M00S02400.secart +++| PRT=.TRUE. 02403 M00S02401.secart +++| 02404 M00S02402.secart +++| ELSE IF (MID.EQ.'ARUN') THEN 02405 M00S02403.secart +++| I=27 02406 M00S02404.secart +++| CALL PARSE(ACTXT,I,USR) 02407 M00S02405.secart +++| CALL PARSE(ACTXT,I,FAM) 02408 M00S02406.secart +++| IF (UN(N).EQ.' ') UN(N)=USR 02409 M00S02407.secart +++| IF (FN(N).EQ.' ') FN(N)=FAM 02410 M00S02408.secart +++| CALL PICKUSR(FAM,USR,MK(N)) 02411 M00S02409.secart +++| CALL PARSE(ACTXT,I,TRM) 02412 M00S02410.secart +++| IF (TRM.NE.'TERMNAM') TN(N)=TRM 02413 M00S02411.secart +++| CALL PICKTRM(TRM,MK(N)) 02414 M00S02412.secart +++| 02415 M00S02413.secart +++|* CHANGE SC/JSN W/ LINK-BACK IF NEW JSN SELECTED. 02416 M00S02414.secart +++|* RECORDS NEW JSN W/ INHERITED ATTRIBUTES. 02417 M00S02415.secart +++| 02418 M00S02416.secart +++| ELSE IF (MID.EQ.'ACSC') THEN 02419 M00S02417.secart +++| I=27 02420 M00S02418.secart +++| CALL PARSE(ACTXT,I,SC) 02421 M00S02419.secart +++| NUJSN=DSU//'. ' 02422 M00S02420.secart +++| CALL PARSE(ACTXT,I,NUJSN(3:6)) 02423 M00S02421.secart +++| IF (NUJSN(3:6).NE.' ' .AND. NUJSN(3:6).NE.JSN) THEN 02424 M00S02422.secart +++| L=N 02425 M00S02423.secart +++| CALL JSNTRAK(NUJSN,JCL,ACEDTG,N,2) 02426 M00S02424.secart +++| MK(N)=MK(L) 02427 M00S02425.secart +++| JN(N)=JN(L) 02428 M00S02426.secart +++| FN(N)=FN(L) 02429 M00S02427.secart +++| UN(N)=UN(L) 02430 M00S02428.secart +++| TN(N)=TN(L) 02431 M00S02429.secart +++| PRT=.TRUE. 02432 M00S02430.secart +++| ENDIF 02433 M00S02431.secart +++| ENDIF 02434 M00S02432.secart +++| 02435 M00S02433.secart +++|* PRINTOUT MESSAGE FOR ANY REASON. 02436 M00S02434.secart +++| 02437 M00S02435.secart +++| IF (PRT) THEN 02438 M00S02436.secart +++| WRITE (8,10) ACTXT 02439 M00S02437.secart +++| PRT=.FALSE. 02440 M00S02438.secart +++| ENDIF 02441 M00S02439.secart +++| 02442 M00S02440.secart +++|* PUT ANNOTATED MESSAGE INTO MERGED LOG FILE. 02443 M00S02441.secart +++| 02444 M00S02442.secart +++| WRITE (3,10) ACTXT 02445 M00S02443.secart +++| GOTO 120 02446 M00S02444.secart +++| 02447 M00S02445.secart +++| END 02448 M00S02446.secart +++| 02449 M00S02447.secart +++|* --------------------------------------------------------------------- 02450 M00S02448.secart +++| SUBROUTINE LOGTEST(LF,TXT,DT,TM,*) 02451 M00S02449.secart +++|** LOGTEST - TEST RAW LOG FORMAT & EXTRACT DATE/TIME STAMPS. 02452 M00S02450.secart +++|* 02453 M00S02451.secart +++|* *LOGTEST* READS FIRST LINE OF LOG FILE, TESTS FOR SYNTAX OF 02454 M00S02452.secart +++|* OPTIONAL DATESTAMP AND, IF CORRECT, EXTRACTS LOG START DATE. 02455 M00S02453.secart +++|* (DATE STAMP IS OPTIONAL TO PERMIT PROCESSING LOG FRAGMENTS.) 02456 M00S02454.secart +++|* IF DATE STAMP IS MISSING, FIRST LINE IS CHECKED FOR PROPER 02457 M00S02455.secart +++|* SYNTAX AND LOG START TIME EXTRACTED. IF DATE STAMP IS 02458 M00S02456.secart +++|* PRESENT, 2ND LINE WILL BE READ, CHECKED AND TIME EXTRACTED. 02459 M00S02457.secart +++|* 02460 M00S02458.secart +++|* ENTRY - CALL LOGTEST(LFN,TXT,OK) 02461 M00S02459.secart +++|* *LF* IS UNIT NUMBER OF FILE BEING TESTED. 02462 M00S02460.secart +++|* 02463 M00S02461.secart +++|* EXIT - *TXT* WILL CONTAIN FIRST USABLE RECORD FROM FILE. 02464 M00S02462.secart +++|* *DT* WILL CONTAIN DATE STAMP OR BLANKS. 02465 M00S02463.secart +++|* *TM* WILL CONTAIN TIMESTAMP OF USABLE RECORD. 02466 M00S02464.secart +++|* 02467 M00S02465.secart +++|* ERROR - ALTERNATE RETURN 1 IF EOF OR LOG FAILS FORMAT TESTS. 02468 M00S02466.secart +++|* 02469 M00S02467.secart +++|* NOTES - USES CHARACTER STRING CATENATION TO SIMPLIFY SYNTAX 02470 M00S02468.secart +++|* CHECK AND INDEX FUNCTION TO CHECK FOR NON-NUMERIC 02471 M00S02469.secart +++|* CHARACTERS EFFICIENTLY. SPECIFIC TESTS ARE: 02472 M00S02470.secart +++|* -------------------------------------------- 02473 M00S02471.secart +++|* CHAR POSITION: 1234567890123456789012345 02474 M00S02472.secart +++|* TARGET FORMAT: ' NN.NN.NN. XXXXX. XXXX...' 02475 M00S02473.secart +++|* TEST SYNTAX : = = = === === 02476 M00S02474.secart +++|* TEST NUMERIC : == == == 02477 M00S02475.secart +++|* -------------------------------------------- 02478 M00S02476.secart +++| 02479 M00S02477.secart +++| IMPLICIT INTEGER(A-Z) 02480 M00S02478.secart +++| 02481 M00S02479.secart +++| INTEGER LF 02482 M00S02480.secart +++|* ARG - UNIT # LOG FILE TO TEST FORMAT. 02483 M00S02481.secart +++| 02484 M00S02482.secart +++| CHARACTER*10 DT 02485 M00S02483.secart +++|* ARG - LOG START DATE RETURNED. 02486 M00S02484.secart +++| 02487 M00S02485.secart +++| LOGICAL OK 02488 M00S02486.secart +++|* TEMP - USED IN SYNTAX CHECKING. 02489 M00S02487.secart +++| 02490 M00S02488.secart +++| CHARACTER*10 TM 02491 M00S02489.secart +++|* ARG - LOG START TIME RETURNED 02492 M00S02490.secart +++| 02493 M00S02491.secart +++| CHARACTER*6 TST 02494 M00S02492.secart +++|* TEMP - USED IN SYNTAX CHECK. 02495 M00S02493.secart +++| 02496 M00S02494.secart +++| CHARACTER*100 TXT 02497 M00S02495.secart +++|* ARG - FIRST RECORD TEXT STRING. 02498 M00S02496.secart +++| 02499 M00S02497.secart +++| DT=' ' 02500 M00S02498.secart +++| TM=' ' 02501 M00S02499.secart +++| OK=.TRUE. 02502 M00S02500.secart +++| 02503 M00S02501.secart +++|* READ FIRST LINE OF LOG, CHECK FOR OPTIONAL DATE STAMP. 02504 M00S02502.secart +++| 02505 M00S02503.secart +++| READ (LF,10,END=130) TXT 02506 M00S02504.secart +++| 10 FORMAT(A100) 02507 M00S02505.secart +++| IF (TXT(1:1).EQ.' ') GOTO 100 02508 M00S02506.secart +++| 02509 M00S02507.secart +++|* 1 6 02510 M00S02508.secart +++|* CHECK FOR DATE STAMP SYNTAX: YYMMDD. 02511 M00S02509.secart +++| 02512 M00S02510.secart +++| IF (INDEX('8901',TXT(1:1)).EQ.0) OK=.FALSE. 02513 M00S02511.secart +++| IF (INDEX('0123456789',TXT(2:2)).EQ.0) OK=.FALSE. 02514 M00S02512.secart +++| IF (INDEX('01',TXT(3:3)).EQ.0) OK=.FALSE. 02515 M00S02513.secart +++| IF (INDEX('0123456789',TXT(4:4)).EQ.0) OK=.FALSE. 02516 M00S02514.secart +++| IF (INDEX('0123',TXT(5:5)).EQ.0) OK=.FALSE. 02517 M00S02515.secart +++| IF (INDEX('0123456789',TXT(6:6)).EQ.0) OK=.FALSE. 02518 M00S02516.secart +++| IF (.NOT.OK) GOTO 130 02519 M00S02517.secart +++| 02520 M00S02518.secart +++|* ACCEPT DATE STAMP, READ SECOND LINE FOR TIME STAMP. 02521 M00S02519.secart +++| 02522 M00S02520.secart +++| DT=' '//TXT(1:2)//'/'//TXT(3:4)//'/'//TXT(5:6)//'.' 02523 M00S02521.secart +++| READ (LF,10,END=130) TXT 02524 M00S02522.secart +++| 02525 M00S02523.secart +++| 02526 M00S02524.secart +++|* COLLECT AND TEST TIME STAMP SYNTAX CHARACTERS. 02527 M00S02525.secart +++| 02528 M00S02526.secart +++| 100 IF (TXT(1:1)//TXT(4:4)//TXT(7:7)//TXT(10:12)//TXT(18:20) 02529 M00S02527.secart +++| . .NE. ' ... . ') GOTO 130 02530 M00S02528.secart +++| 02531 M00S02529.secart +++|* COLLECT AND TEST NUMERIC CHARACTERS. 02532 M00S02530.secart +++| 02533 M00S02531.secart +++| TST=TXT(2:3)//TXT(5:6)//TXT(8:9) 02534 M00S02532.secart +++| DO 110 I=1,6 02535 M00S02533.secart +++| IF(INDEX('0123456789',TST(I:I)).EQ.0) OK=.FALSE. 02536 M00S02534.secart +++| 110 CONTINUE 02537 M00S02535.secart +++| IF (OK) TM=TXT(1:10) 02538 M00S02536.secart +++| RETURN 02539 M00S02537.secart +++| 02540 M00S02538.secart +++|* ALTERNATE EXIT ON EOF OR FAILED SYNTAX CHECK. 02541 M00S02539.secart +++| 02542 M00S02540.secart +++| 130 RETURN 1 02543 M00S02541.secart +++| END 02544 M00S02542.secart +++| 02545 M00S02543.secart +++|* --------------------------------------------------------------------- 02546 M00S02544.secart +++| SUBROUTINE JSNLOAD 02547 M00S02545.secart +++|** JSNLOAD - JSN TRACE TABLE MANAGER. 02548 M00S02546.secart +++|* 02549 M00S02547.secart +++|* THIS PROGRAM UNIT MANAGES THE JSN TRACE TABLE WHICH RECORDS 02550 M00S02548.secart +++|* JOB ATTRIBUTES DATA EXTRACTED FROM BOTH DAYFILE AND ACCOUNT 02551 M00S02549.secart +++|* LOGS. MULTIPLE ENTRY POINTS ARE PROVIDED FOR PURPOSES OF: 02552 M00S02550.secart +++|* PRE-LOADING TRACE TABLE DATA FROM PREVIOUS *SECART* RUNS, 02553 M00S02551.secart +++|* MAINTAINING A JSN PREFIX CODE TO AVOID AMBIGUITIES ACROSS 02554 M00S02552.secart +++|* LEVEL ZERO DEADSTARTS, AUTOMATICALLY CREATING NEW TABLE 02555 M00S02553.secart +++|* ENTRIES FOR EACH UNIQUE JSN, THEN MATCHING JSN-S ON 02556 M00S02554.secart +++|* SUBSEQUENT CALLS AND COLLECTING JOB ATTRIBUTES, OPTIONALLY 02557 M00S02555.secart +++|* SORTING TRACE TABLE ENTRIES ON A SPECIFIED SET OF DATA ITEMS, 02558 M00S02556.secart +++|* AND FINALLY PRINTING THE TRACE TABLE. IT ALSO PRODUCES THE 02559 M00S02557.secart +++|* TRACE TABLE FILE WHICH MAY BE LOADED ON A SUBSEQUENT RUN. 02560 M00S02558.secart +++| 02561 M00S02559.secart +++| 02562 M00S02560.secart +++| IMPLICIT INTEGER(A-Z) 02563 M00S02561.secart +++| 02564 M00S02562.secart +++| PARAMETER (MXJ=1000) 02565 M00S02563.secart +++|* SIZE OF JSN TRACE TABLE. 02566 M00S02564.secart +++| 02567 M00S02565.secart +++| 02568 M00S02566.secart +++| CHARACTER*20 ACEDTG 02569 M00S02567.secart +++|* /ACL/ ACCOUNT LOG END DATE/TIME GROUP. 02570 M00S02568.secart +++| 02571 M00S02569.secart +++| LOGICAL ACEOF 02572 M00S02570.secart +++|* /CTL/ ACCOUNT LOG EOF FLAG. 02573 M00S02571.secart +++| 02574 M00S02572.secart +++| INTEGER ACIN 02575 M00S02573.secart +++|* /CTL/ ACCOUNT LOG MESSAGE COUNTER. 02576 M00S02574.secart +++| 02577 M00S02575.secart +++| CHARACTER*20 ACSDTG 02578 M00S02576.secart +++|* /ACL/ ACCOUNT LOG START DATE/TIME GROUP. 02579 M00S02577.secart +++| 02580 M00S02578.secart +++| CHARACTER*60 ACSYSID 02581 M00S02579.secart +++|* /ACL/ ACCOUNT LOG SYSTEM TITLE/VERSION. 02582 M00S02580.secart +++| 02583 M00S02581.secart +++| CHARACTER*20 DFEDTG 02584 M00S02582.secart +++|* /DFL/ DAYFILE LOG END DATE/TIME GROUP. 02585 M00S02583.secart +++| 02586 M00S02584.secart +++| LOGICAL DFEOF 02587 M00S02585.secart +++|* /CTL/ DAYFILE LOG EOF FLAG. 02588 M00S02586.secart +++| 02589 M00S02587.secart +++| INTEGER DFIN 02590 M00S02588.secart +++|* /CTL/ DAYFILE LOG MESSAGE COUNTER. 02591 M00S02589.secart +++| 02592 M00S02590.secart +++| CHARACTER*20 DFSDTG 02593 M00S02591.secart +++|* /DFL/ DAYFILE LOG START DATE/TIME GROUP. 02594 M00S02592.secart +++| 02595 M00S02593.secart +++| CHARACTER*60 DFSYSID 02596 M00S02594.secart +++|* /DFL/ DAYFILE LOG SYSTEM TITLE/VERSION. 02597 M00S02595.secart +++| 02598 M00S02596.secart +++| CHARACTER*1 DSU 02599 M00S02597.secart +++|* /TRC/ DEADSTART UNIQUE PREFIX CODE. 02600 M00S02598.secart +++| 02601 M00S02599.secart +++| CHARACTER*20 DTG 02602 M00S02600.secart +++|* ARG - DATE/TIME GROUP. 02603 M00S02601.secart +++| 02604 M00S02602.secart +++| LOGICAL ERR 02605 M00S02603.secart +++|* FLAG FOR MSGID SEQUENCE ERROR(S). 02606 M00S02604.secart +++| 02607 M00S02605.secart +++| CHARACTER*7 FN(MXJ) 02608 M00S02606.secart +++|* /TRC/ FAMILY NAME COLUMN IN TRACE TABLE. 02609 M00S02607.secart +++| 02610 M00S02608.secart +++| CHARACTER*40 HDR 02611 M00S02609.secart +++|* /SYS/ PRINTOUT HEADER TEXT. 02612 M00S02610.secart +++| 02613 M00S02611.secart +++| INTEGER IPAGE 02614 M00S02612.secart +++|* LOCAL PRINTOUT PAGE COUNTER. 02615 M00S02613.secart +++| 02616 M00S02614.secart +++| INTEGER JBLIMIT 02617 M00S02615.secart +++|* /CTL/ UNIT JOB PRINTOUT MESSAGE LIMIT. 02618 M00S02616.secart +++| 02619 M00S02617.secart +++| CHARACTER*1 JC(MXJ) 02620 M00S02618.secart +++|* /TRC/ JOB CLASS COLUMN IN TRACE TABLE. 02621 M00S02619.secart +++| 02622 M00S02620.secart +++| CHARACTER*1 JCL 02623 M00S02621.secart +++|* ARG - JOB CLASS. 02624 M00S02622.secart +++| 02625 M00S02623.secart +++| CHARACTER*7 JN(MXJ) 02626 M00S02624.secart +++|* /TRC/ UJN COLUMN IN TRACE TABLE. 02627 M00S02625.secart +++| 02628 M00S02626.secart +++| CHARACTER*6 JS(MXJ) 02629 M00S02627.secart +++|* /TRC/ D.JSN COLUMN IN TRACE TABLE. 02630 M00S02628.secart +++| 02631 M00S02629.secart +++| CHARACTER*6 JSN 02632 M00S02630.secart +++|* ARG - D.JSN ARGUMENT. 02633 M00S02631.secart +++| 02634 M00S02632.secart +++| INTEGER LF 02635 M00S02633.secart +++|* TEMP - FILE NUMBER FOR TRACE TABLE SORT. 02636 M00S02634.secart +++| 02637 M00S02635.secart +++| CHARACTER*7 LFN 02638 M00S02636.secart +++|* ARG - LFN FOR TRACE TABLE SORT LISTING. 02639 M00S02637.secart +++| 02640 M00S02638.secart +++| INTEGER LOG 02641 M00S02639.secart +++|* ARG - INDEX FOR DFL/AFL MESSAGE COUNTS. 02642 M00S02640.secart +++| 02643 M00S02641.secart +++| LOGICAL LOOK 02644 M00S02642.secart +++|* FLAG FOR *JSNTRAK* VERSUS *JSNLOOK*. 02645 M00S02643.secart +++| 02646 M00S02644.secart +++| INTEGER LST 02647 M00S02645.secart +++|* TEMP - HOLDS INDEX OF LAST JOB MATCHED. 02648 M00S02646.secart +++| 02649 M00S02647.secart +++| CHARACTER*5 MK(MXJ) 02650 M00S02648.secart +++|* /TRC/ JOB SELECTION MARKS IN TRACE TABLE. 02651 M00S02649.secart +++| 02652 M00S02650.secart +++| INTEGER ML(2,MXJ) 02653 M00S02651.secart +++|* /CTL/ DFL/AFL MSG COUNTS FOR TRACE TABLE. 02654 M00S02652.secart +++| 02655 M00S02653.secart +++| INTEGER N 02656 M00S02654.secart +++|* ARG - INDEX TO JOB IN TRACE TABLE. 02657 M00S02655.secart +++| 02658 M00S02656.secart +++| INTEGER NJ 02659 M00S02657.secart +++|* /CTL/ CURRENT NUMBER JOBS IN TRACE TABLE. 02660 M00S02658.secart +++| 02661 M00S02659.secart +++| INTEGER NS 02662 M00S02660.secart +++|* COUNT OF JOBS SELECTED. 02663 M00S02661.secart +++| 02664 M00S02662.secart +++| CHARACTER*10 PGM 02665 M00S02663.secart +++|* /SYS/ *SECART* VERSION ID FOR PRINTOUTS. 02666 M00S02664.secart +++| 02667 M00S02665.secart +++| CHARACTER*10 RUNDT 02668 M00S02666.secart +++|* /SYS/ *SECART* RUN DATE FOR PRINTOUTS. 02669 M00S02667.secart +++| 02670 M00S02668.secart +++| CHARACTER*10 RUNTM 02671 M00S02669.secart +++|* /SYS/ *SECART* RUN TIME FOR PRINTOUTS. 02672 M00S02670.secart +++| 02673 M00S02671.secart +++| CHARACTER*3 SKY(12) 02674 M00S02672.secart +++|* /SRT/ TRACE TABLE SORT KEYS. 02675 M00S02673.secart +++| 02676 M00S02674.secart +++| CHARACTER*20 TE(MXJ) 02677 M00S02675.secart +++|* /TRC/ JOB DATE/TIME END IN TRACE TABLE. 02678 M00S02676.secart +++| 02679 M00S02677.secart +++| CHARACTER*7 TN(MXJ) 02680 M00S02678.secart +++|* /TRC/ JOB TERMINAL NAME IN TRACE TABLE. 02681 M00S02679.secart +++| 02682 M00S02680.secart +++| CHARACTER*20 TS(MXJ) 02683 M00S02681.secart +++|* /TRC/ JOB DATE/TIME START IN TRACE TABLE. 02684 M00S02682.secart +++| 02685 M00S02683.secart +++| CHARACTER*100 TXT 02686 M00S02684.secart +++|* TEMP - BUFFER FOR TRACE SORT PRINTOUT. 02687 M00S02685.secart +++| 02688 M00S02686.secart +++| CHARACTER*7 UN(MXJ) 02689 M00S02687.secart +++|* /TRC/ JOB USERNAME IN TRACE TABLE. 02690 M00S02688.secart +++| 02691 M00S02689.secart +++| 02692 M00S02690.secart +++|* ACCOUNT LOG SPECIFIC VARIABLES. 02693 M00S02691.secart +++| 02694 M00S02692.secart +++| COMMON /ACL/ ACSDTG 02695 M00S02693.secart +++| COMMON /ACL/ ACEDTG 02696 M00S02694.secart +++| COMMON /ACL/ ACSYSID 02697 M00S02695.secart +++| 02698 M00S02696.secart +++|* GLOBAL NUMERIC/LOGICAL VARIABLES AND PARAMETERS. 02699 M00S02697.secart +++| 02700 M00S02698.secart +++| COMMON /CTL/ NJ 02701 M00S02699.secart +++| COMMON /CTL/ ACIN 02702 M00S02700.secart +++| COMMON /CTL/ DFIN 02703 M00S02701.secart +++| COMMON /CTL/ ACEOF 02704 M00S02702.secart +++| COMMON /CTL/ DFEOF 02705 M00S02703.secart +++| COMMON /CTL/ ML 02706 M00S02704.secart +++| COMMON /CTL/ JBLIMIT 02707 M00S02705.secart +++| 02708 M00S02706.secart +++|* DAYFILE LOG SPECIFIC VARIABLES. 02709 M00S02707.secart +++| 02710 M00S02708.secart +++| COMMON /DFL/ DFSDTG 02711 M00S02709.secart +++| COMMON /DFL/ DFEDTG 02712 M00S02710.secart +++| COMMON /DFL/ DFSYSID 02713 M00S02711.secart +++| 02714 M00S02712.secart +++|* JSN TRACE TABLE SORT PARAMETERS. 02715 M00S02713.secart +++| 02716 M00S02714.secart +++| COMMON /SRT/ SKY 02717 M00S02715.secart +++| 02718 M00S02716.secart +++|* GLOBAL STRING VARIABLES. 02719 M00S02717.secart +++| 02720 M00S02718.secart +++| COMMON /SYS/ HDR 02721 M00S02719.secart +++| COMMON /SYS/ PGM 02722 M00S02720.secart +++| COMMON /SYS/ RUNDT 02723 M00S02721.secart +++| COMMON /SYS/ RUNTM 02724 M00S02722.secart +++| 02725 M00S02723.secart +++|* JSN TRACE TABLE STORAGE. 02726 M00S02724.secart +++| 02727 M00S02725.secart +++| COMMON /TRC/ DSU 02728 M00S02726.secart +++| COMMON /TRC/ MK 02729 M00S02727.secart +++| COMMON /TRC/ JN 02730 M00S02728.secart +++| COMMON /TRC/ JS 02731 M00S02729.secart +++| COMMON /TRC/ JC 02732 M00S02730.secart +++| COMMON /TRC/ TS 02733 M00S02731.secart +++| COMMON /TRC/ TE 02734 M00S02732.secart +++| COMMON /TRC/ FN 02735 M00S02733.secart +++| COMMON /TRC/ UN 02736 M00S02734.secart +++| COMMON /TRC/ TN 02737 M00S02735.secart +++| 02738 M00S02736.secart +++| DATA LST /1/ 02739 M00S02737.secart +++| 02740 M00S02738.secart +++| 02741 M00S02739.secart +++|** ENTRY - CALL JSNLOAD [NO ARGUMENTS]. 02742 M00S02740.secart +++|* THIS ENTRY PERFORMS OPTIONAL LOAD OF TRACE TABLE 02743 M00S02741.secart +++|* DATA PRODUCED BY PREVIOUS RUN, WHICH ALLOWS *SECART* 02744 M00S02742.secart +++|* TO RECOVER ATTRIBUTES OF JOBS RECOVERED ACROSS A 02745 M00S02743.secart +++|* LEVEL ZERO DEADSTART WITH A NEW JSN. SINCE IT CLEARS 02746 M00S02744.secart +++|* ANY JOB SELECTION MARKS AND CHECKS FOR SELECTIONS 02747 M00S02745.secart +++|* BASED ON CURRENT SELECTION DIRECTIVES, IN RERUN MODE 02748 M00S02746.secart +++|* THIS ALSO PERMITS NEW UNIT JOB SELECTIONS TO BE MADE 02749 M00S02747.secart +++|* WITHOUT REPROCESSING FROM RAW LOGS DATA. THE TRACE 02750 M00S02748.secart +++|* TABLE DATA MUST BE ON FILE NUMBER 6. 02751 M00S02749.secart +++|* 02752 M00S02750.secart +++|* EXIT - NORMAL IF LOADED JSN-S IN ASCENDING ORDER. 02753 M00S02751.secart +++|* 02754 M00S02752.secart +++|* ERROR - JOB DAYFILE MESSAGE: 02755 M00S02753.secart +++|* *** TRACE TABLE SEQUENCE ERROR(S). 02756 M00S02754.secart +++|* 02757 M00S02755.secart +++|* USES - COMMON /TRC/ FOR TRACE TABLE STRING DATA. 02758 M00S02756.secart +++|* COMMON /CTL/ FOR TRACE TABLE NUMERIC DATA. 02759 M00S02757.secart +++|* 02760 M00S02758.secart +++|* CALLS - *PICKUJN* FOR NEW UJN SELECTIONS. 02761 M00S02759.secart +++|* *PICKJSN* FOR NEW JSN SELECTIONS. 02762 M00S02760.secart +++|* *PICKUSR* FOR NEW USERNAME SELECTIONS. 02763 M00S02761.secart +++|* *PICKTRM* FOR NEW TERMINAL SELECTIONS. 02764 M00S02762.secart +++|* 02765 M00S02763.secart +++|* NOTES - FILE 6, WHICH IS INITIALLY READ TO OBTAIN OLD TRACE 02766 M00S02764.secart +++|* TABLE DATA, WILL SUBSEQUENTLY BE WRITTEN WITH THE 02767 M00S02765.secart +++|* NEW DATA PRODUCED IN THE CURRENT *SECART* RUN. THUS 02768 M00S02766.secart +++|* IT MUST BE A READ/WRITE FILE AND, IF PREVIOUS DATA 02769 M00S02767.secart +++|* IS TO BE PRESERVED, SHOULD BE AN EXPENDABLE COPY. 02770 M00S02768.secart +++| 02771 M00S02769.secart +++| L=1 02772 M00S02770.secart +++| ERR=.FALSE. 02773 M00S02771.secart +++| 02774 M00S02772.secart +++| 60 READ (6,62,END=69) MK(L),JN(L),JS(L),JC(L),TS(L),TE(L) 02775 M00S02773.secart +++| . ,ML(1,L),ML(2,L),FN(L),UN(L),TN(L) 02776 M00S02774.secart +++| MK(L)=' ' 02777 M00S02775.secart +++| DSU=JS(L)(1:1) 02778 M00S02776.secart +++| IF ((L.GT.1).AND.JS(L).LE.JS(L-1)) ERR=.TRUE. 02779 M00S02777.secart +++| CALL PICKUJN(JN(L),MK(L)) 02780 M00S02778.secart +++| CALL PICKJSN(JS(L),MK(L)) 02781 M00S02779.secart +++| CALL PICKUSR(FN(L),UN(L),MK(L)) 02782 M00S02780.secart +++| CALL PICKTRM(TN(L),MK(L)) 02783 M00S02781.secart +++| NJ=L 02784 M00S02782.secart +++| L=L+1 02785 M00S02783.secart +++| GOTO 60 02786 M00S02784.secart +++| 02787 M00S02785.secart +++| 69 IF (ERR) CALL REMARK(' *** TRACE TABLE SEQUENCE ERROR(S).') 02788 M00S02786.secart +++| RETURN 02789 M00S02787.secart +++| 02790 M00S02788.secart +++| 02791 M00S02789.secart +++|** ENTRY - CALL JSNTRAK(JSN,JCL,DTG,N,LOG) 02792 M00S02790.secart +++|* *JSN* IS JSN FIELD FROM LOG MESSAGE. 02793 M00S02791.secart +++|* *JCL* IS JOB CLASS CODE FROM LOG MESSAGE. 02794 M00S02792.secart +++|* *DTG* IS DATE/TIME FOR MESSAGE. 02795 M00S02793.secart +++|* *LOG* IS SOURCE LOG INDEX (1=DAYFILE, 2=ACCOUNT). 02796 M00S02794.secart +++|* 02797 M00S02795.secart +++|* EXIT - *N* WILL BE SET TO INDEX OF JOB IN TRACE TABLE. 02798 M00S02796.secart +++|* 02799 M00S02797.secart +++|* ERROR - JOB DAYFILE MESSAGES: 02800 M00S02798.secart +++|* *** TRACE TABLE FULL *** 02801 M00S02799.secart +++|* STOP *** SECART TERMINATED. 02802 M00S02800.secart +++|* 02803 M00S02801.secart +++|* USES - COMMON /TRC/ FOR TRACE TABLE STRING DATA. 02804 M00S02802.secart +++|* COMMON /CTL/ FOR TRACE TABLE NUMERIC DATA. 02805 M00S02803.secart +++|* 02806 M00S02804.secart +++|* CALLS - *PICKJSN* FOR NEW JSN SELECTION TEST. 02807 M00S02805.secart +++|* 02808 M00S02806.secart +++|* NOTES - BOTH *JSNTRAK* AND *JSNLOOK* USE SAME BINARY SEARCH 02809 M00S02807.secart +++|* CODE TO FIND JSN MATCH AND REMEMBER INDEX OF LAST 02810 M00S02808.secart +++|* MATCH TO ALLOW SHORTCUT FOR CONSECUTIVE MESSAGES BY 02811 M00S02809.secart +++|* SAME JOB WHICH OCCURS ABOUT 2 OUT OF 3 TIMES. 02812 M00S02810.secart +++| 02813 M00S02811.secart +++| ENTRY JSNTRAK(JSN,JCL,DTG,N,LOG) 02814 M00S02812.secart +++| 02815 M00S02813.secart +++| LOOK=.FALSE. 02816 M00S02814.secart +++| GOTO 100 02817 M00S02815.secart +++| 02818 M00S02816.secart +++| 02819 M00S02817.secart +++|** ENTRY - CALL JSNLOOK(JSN,N) 02820 M00S02818.secart +++|* *JSN* IS JSN FIELD FROM LOG MESSAGE. 02821 M00S02819.secart +++|* 02822 M00S02820.secart +++|* EXIT - *N* WILL BE SET TO TRACE TABLE JOB INDEX. 02823 M00S02821.secart +++|* 02824 M00S02822.secart +++|* ERROR - NONE. 02825 M00S02823.secart +++|* 02826 M00S02824.secart +++|* USES - COMMON /TRC/ FOR TRACE TABLE STRING DATA. 02827 M00S02825.secart +++|* COMMON /CTL/ FOR TRACE TABLE NUMERIC DATA. 02828 M00S02826.secart +++|* 02829 M00S02827.secart +++|* CALLS - *PICKJSN* FOR NEW JSN SELECTION TEST. 02830 M00S02828.secart +++|* 02831 M00S02829.secart +++|* NOTES - BOTH *JSNLOOK* AND *JSNTRAK* USE SAME BINARY SEARCH 02832 M00S02830.secart +++|* CODE TO FIND JSN MATCH AND REMEMBER INDEX OF LAST 02833 M00S02831.secart +++|* MATCH TO ALLOW SHORTCUT FOR CONSECUTIVE MESSAGES BY 02834 M00S02832.secart +++|* SAME JOB WHICH OCCURS ABOUT 2 OUT OF 3 TIMES. 02835 M00S02833.secart +++| 02836 M00S02834.secart +++| ENTRY JSNLOOK(JSN,N) 02837 M00S02835.secart +++| 02838 M00S02836.secart +++| LOOK=.TRUE. 02839 M00S02837.secart +++| GOTO 100 02840 M00S02838.secart +++| 02841 M00S02839.secart +++|* SHORTCUT FOR REDUNDANT JSN SAME AS LAST CALL [2/3 TIMES]. 02842 M00S02840.secart +++| 02843 M00S02841.secart +++| 100 IF (JSN.EQ.JS(LST)) THEN 02844 M00S02842.secart +++| N=LST 02845 M00S02843.secart +++| GOTO 120 02846 M00S02844.secart +++| ENDIF 02847 M00S02845.secart +++| 02848 M00S02846.secart +++|* BINARY SEARCH FOR MATCH W/ UNIQUE JSN. 02849 M00S02847.secart +++| 02850 M00S02848.secart +++| L=1 02851 M00S02849.secart +++| H=NJ 02852 M00S02850.secart +++| 02853 M00S02851.secart +++| 105 IF (L.LE.H) THEN 02854 M00S02852.secart +++| N=(L+H)/2 02855 M00S02853.secart +++| IF (JSN.LT.JS(N)) THEN 02856 M00S02854.secart +++| H=N-1 02857 M00S02855.secart +++| ELSE IF (JSN.GT.JS(N)) THEN 02858 M00S02856.secart +++| L=N+1 02859 M00S02857.secart +++| ELSE 02860 M00S02858.secart +++| IF (LOOK) RETURN 02861 M00S02859.secart +++| GOTO 120 02862 M00S02860.secart +++| ENDIF 02863 M00S02861.secart +++| GOTO 105 02864 M00S02862.secart +++| ENDIF 02865 M00S02863.secart +++| 02866 M00S02864.secart +++| IF (LOOK) THEN 02867 M00S02865.secart +++| N=0 02868 M00S02866.secart +++| RETURN 02869 M00S02867.secart +++| ELSE 02870 M00S02868.secart +++| N=L 02871 M00S02869.secart +++| ENDIF 02872 M00S02870.secart +++| 02873 M00S02871.secart +++|* CREATE NEW ROW IN TABLE. 02874 M00S02872.secart +++| 02875 M00S02873.secart +++| 110 IF (NJ.GE.MXJ) GOTO 190 02876 M00S02874.secart +++| NJ=NJ+1 02877 M00S02875.secart +++| IF (N.EQ.NJ) GOTO 113 02878 M00S02876.secart +++| 02879 M00S02877.secart +++|* OPEN UP ROW IN TABLE. 02880 M00S02878.secart +++| 02881 M00S02879.secart +++| DO 112 L=NJ,N,-1 02882 M00S02880.secart +++| MK(L)=MK(L-1) 02883 M00S02881.secart +++| JN(L)=JN(L-1) 02884 M00S02882.secart +++| JS(L)=JS(L-1) 02885 M00S02883.secart +++| JC(L)=JC(L-1) 02886 M00S02884.secart +++| TS(L)=TS(L-1) 02887 M00S02885.secart +++| TE(L)=TE(L-1) 02888 M00S02886.secart +++| ML(1,L)=ML(1,L-1) 02889 M00S02887.secart +++| ML(2,L)=ML(2,L-1) 02890 M00S02888.secart +++| FN(L)=FN(L-1) 02891 M00S02889.secart +++| UN(L)=UN(L-1) 02892 M00S02890.secart +++| TN(L)=TN(L-1) 02893 M00S02891.secart +++| 112 CONTINUE 02894 M00S02892.secart +++| 02895 M00S02893.secart +++|* INITIALIZE NEW TABLE ROW. 02896 M00S02894.secart +++| 02897 M00S02895.secart +++| 113 MK(N)=' ' 02898 M00S02896.secart +++| JN(N)=' ' 02899 M00S02897.secart +++| JS(N)=JSN 02900 M00S02898.secart +++| JC(N)=JCL 02901 M00S02899.secart +++| TS(N)=DTG 02902 M00S02900.secart +++| ML(1,N)=0 02903 M00S02901.secart +++| ML(2,N)=0 02904 M00S02902.secart +++| FN(N)=' ' 02905 M00S02903.secart +++| UN(N)=' ' 02906 M00S02904.secart +++| TN(N)=' ' 02907 M00S02905.secart +++| CALL PICKJSN(JSN,MK(N)) 02908 M00S02906.secart +++| 02909 M00S02907.secart +++|* UPDATE DATE/TIME GROUP AND MESSAGE COUNT/LOG. 02910 M00S02908.secart +++| 02911 M00S02909.secart +++| 120 TE(N)=DTG 02912 M00S02910.secart +++| ML(LOG,N)=ML(LOG,N)+1 02913 M00S02911.secart +++| LST=N 02914 M00S02912.secart +++| RETURN 02915 M00S02913.secart +++| 02916 M00S02914.secart +++|* JSN TRACE TABLE OVERFLOW. 02917 M00S02915.secart +++| 02918 M00S02916.secart +++| 190 CALL REMARK(' *** TRACE TABLE FULL ***') 02919 M00S02917.secart +++| STOP ' *** SECART TERMINATED.' 02920 M00S02918.secart +++| 02921 M00S02919.secart +++| 02922 M00S02920.secart +++|** ENTRY - CALL JSNLVL0 [NO ARGUMENTS]. 02923 M00S02921.secart +++|* MAINTAINS DEADSTART UNIQUE CODE FOR JSN PREFIX. 02924 M00S02922.secart +++|* 02925 M00S02923.secart +++|* EXIT - DSU IN /TRC/ "INCREMENTED" TO NEXT LETTER UNLESS 02926 M00S02924.secart +++|* REDUNDANT CALL. 02927 M00S02925.secart +++|* 02928 M00S02926.secart +++|* ERROR - NONE. 02929 M00S02927.secart +++|* 02930 M00S02928.secart +++|* USES - COMMON /TRC/ FOR TRACE TABLE STRING DATA. 02931 M00S02929.secart +++|* COMMON /CTL/ FOR TRACE TABLE NUMERIC DATA. 02932 M00S02930.secart +++|* 02933 M00S02931.secart +++|* CALLS - NONE. 02934 M00S02932.secart +++|* 02935 M00S02933.secart +++|* NOTES - THIS CODE ALLOWS FOR REDUNDANT CALLS TRIGGERED BY 02936 M00S02934.secart +++|* MULTIPLE MESSAGES RELATING TO THE SAME DEADSTART 02937 M00S02935.secart +++|* EVENT. CHECKS FOR AT LEAST 2 JSN-S WITH SAME PREFIX. 02938 M00S02936.secart +++| 02939 M00S02937.secart +++| ENTRY JSNLVL0 02940 M00S02938.secart +++| 02941 M00S02939.secart +++|* ALLOW FOR MULTIPLE DFL & ACL MSGS ON DEADSTART. 02942 M00S02940.secart +++| 02943 M00S02941.secart +++| IF (NJ.LE.2) RETURN 02944 M00S02942.secart +++| IF (JS(NJ-2)(1:1).NE.DSU) RETURN 02945 M00S02943.secart +++| DSU=CHAR(ICHAR(DSU)+1) 02946 M00S02944.secart +++| WRITE (8,11) DSU 02947 M00S02945.secart +++| 11 FORMAT(/'0 ========= L E V E L 0 D / S ( ',A1, 02948 M00S02946.secart +++| . ' ) =========') 02949 M00S02947.secart +++| RETURN 02950 M00S02948.secart +++| 02951 M00S02949.secart +++| 02952 M00S02950.secart +++|** ENTRY - CALL JSNLIST(LFN) 02953 M00S02951.secart +++|* *LFN* CONTAINS LFN OF FILE TO WRITE UNSORTED TRACE 02954 M00S02952.secart +++|* TABLE DATA. 02955 M00S02953.secart +++|* 02956 M00S02954.secart +++|* EXIT - FILE 8 WILL CONTAIN TRACE TABLE PRINTOUT, OPTIONALLY 02957 M00S02955.secart +++|* SORTED PER DIRECTIVE. 02958 M00S02956.secart +++|* 02959 M00S02957.secart +++|* ERROR - NONE. 02960 M00S02958.secart +++|* 02961 M00S02959.secart +++|* USES - COMMON /TRC/ FOR TRACE TABLE STRING DATA. 02962 M00S02960.secart +++|* COMMON /CTL/ FOR TRACE TABLE NUMERIC DATA. 02963 M00S02961.secart +++|* COMMON /SYS/ FOR PRINTOUT HEADER TEXT. 02964 M00S02962.secart +++|* COMMON /ACL/ FOR ACCOUNT LOG IDENTIFICATION. 02965 M00S02963.secart +++|* COMMON /DFL/ FOR DAYFILE LOG IDENTIFICATION. 02966 M00S02964.secart +++|* COMMON /SRT/ FOR TRACE TABLE SORT KEYS. 02967 M00S02965.secart +++|* 02968 M00S02966.secart +++|* CALLS - *SM5SORT* ET AL FOR SORT PROCESSING. 02969 M00S02967.secart +++|* 02970 M00S02968.secart +++|* NOTES - THIS ROUTINE WRITES TRACE TABLE DATA ONTO FILE 6, 02971 M00S02969.secart +++|* CALLS SORT/MERGE TO SORT ONTO *TAPE9*, READS DATA 02972 M00S02970.secart +++|* FROM *TAPE9* AND PRINTS TO FILE 8 WITH HEADER TEXT, 02973 M00S02971.secart +++|* PAGINATION, AND SUMMARY DATA. IF NO SORT KEYS ARE 02974 M00S02972.secart +++|* SPECIFIED, THE SORT IS BYPASSED AND FILE 6 IS USED 02975 M00S02973.secart +++|* AS INPUT FOR THE PRINTOUT. 02976 M00S02974.secart +++| 02977 M00S02975.secart +++| ENTRY JSNLIST(LFN) 02978 M00S02976.secart +++| 02979 M00S02977.secart +++| IF (NJ.LE.1) RETURN 02980 M00S02978.secart +++| 02981 M00S02979.secart +++|* OUTPUT JSN TRACE TABLE FILE & COUNT SELECTIONS. 02982 M00S02980.secart +++| 02983 M00S02981.secart +++| NS=0 02984 M00S02982.secart +++| DO 605 I=1,NJ 02985 M00S02983.secart +++| WRITE (6,62) MK(I),JN(I),JS(I),JC(I),TS(I),TE(I) 02986 M00S02984.secart +++| . ,ML(1,I),ML(2,I),FN(I),UN(I),TN(I) 02987 M00S02985.secart +++| 62 FORMAT(1X,A5,1X,A7,1X,A6,1X,A1,2A20,2I5,3A8) 02988 M00S02986.secart +++| IF (MK(I).NE.' ') NS=NS+1 02989 M00S02987.secart +++| 605 CONTINUE 02990 M00S02988.secart +++| LF=6 02991 M00S02989.secart +++| 02992 M00S02990.secart +++|* SORT JSN TRACE TABLE FILE, IF DIRECTED. 02993 M00S02991.secart +++| 02994 M00S02992.secart +++| IF (SKY(1).EQ.' ') GOTO 900 02995 M00S02993.secart +++| CALL SM5SORT(0) 02996 M00S02994.secart +++| CALL SM5ENR(NJ) 02997 M00S02995.secart +++| CALL SM5FROM(LFN) 02998 M00S02996.secart +++| CALL SM5TO('TAPE9') 02999 M00S02997.secart +++| DO 850 I=1,12 03000 M00S02998.secart +++| 03001 M00S02999.secart +++|* PICKS 2, 5 NOT SORT KEY. 03002 M00S03000.secart +++| 03003 M00S03001.secart +++| IF (SKY(I).EQ.'UJN') CALL SM5KEY( 8, 7,'DISPLAY','A') 03004 M00S03002.secart +++| IF (SKY(I).EQ.'JSN') CALL SM5KEY(16, 6,'DISPLAY','A') 03005 M00S03003.secart +++| IF (SKY(I).EQ.'JC' ) CALL SM5KEY(23, 1,'DISPLAY','A') 03006 M00S03004.secart +++| IF (SKY(I).EQ.'SDT') CALL SM5KEY(24,20,'DISPLAY','A') 03007 M00S03005.secart +++| IF (SKY(I).EQ.'EDT') CALL SM5KEY(44,20,'DISPLAY','A') 03008 M00S03006.secart +++| 03009 M00S03007.secart +++|* MSG COUNTS 64,10 NOT SORT KEYS. 03010 M00S03008.secart +++| 03011 M00S03009.secart +++| IF (SKY(I).EQ.'FM' ) CALL SM5KEY(74, 7,'DISPLAY','A') 03012 M00S03010.secart +++| IF (SKY(I).EQ.'UN' ) CALL SM5KEY(82, 7,'DISPLAY','A') 03013 M00S03011.secart +++| IF (SKY(I).EQ.'TRM') CALL SM5KEY(90, 7,'DISPLAY','A') 03014 M00S03012.secart +++| 850 CONTINUE 03015 M00S03013.secart +++| CALL SM5END 03016 M00S03014.secart +++| LF=9 03017 M00S03015.secart +++| 03018 M00S03016.secart +++|* PRINTOUT (SORTED) JSN TRACE TABLE. 03019 M00S03017.secart +++| 03020 M00S03018.secart +++| 900 REWIND LF 03021 M00S03019.secart +++| HDR='J S N T R A C E T A B L E' 03022 M00S03020.secart +++| 03023 M00S03021.secart +++| 910 IPAGE=IPAGE+1 03024 M00S03022.secart +++| WRITE (8,1) HDR,PGM,RUNDT,RUNTM,IPAGE 03025 M00S03023.secart +++| 1 FORMAT('1',A40,3A10,' PG',I3) 03026 M00S03024.secart +++| L=59 03027 M00S03025.secart +++| IF (DFSYSID.NE.' ') THEN 03028 M00S03026.secart +++| WRITE (8,91) DFSYSID 03029 M00S03027.secart +++| L=L-1 03030 M00S03028.secart +++| ELSE IF (ACSYSID.NE.' ') THEN 03031 M00S03029.secart +++| WRITE (8,91) ACSYSID 03032 M00S03030.secart +++| L=L-1 03033 M00S03031.secart +++| ENDIF 03034 M00S03032.secart +++| 03035 M00S03033.secart +++| IF (DFSDTG.NE.' ') THEN 03036 M00S03034.secart +++| WRITE (8,92) 'DAYFILE',DFSDTG,DFEDTG 03037 M00S03035.secart +++| L=L-1 03038 M00S03036.secart +++| ENDIF 03039 M00S03037.secart +++| 03040 M00S03038.secart +++| IF (ACSDTG.NE.' ') THEN 03041 M00S03039.secart +++| WRITE (8,92) 'ACCOUNT',ACSDTG,ACEDTG 03042 M00S03040.secart +++| L=L-1 03043 M00S03041.secart +++| ENDIF 03044 M00S03042.secart +++| 03045 M00S03043.secart +++| IF (SKY(1).NE.' ') THEN 03046 M00S03044.secart +++| WRITE (8,93) SKY 03047 M00S03045.secart +++| L=L-1 03048 M00S03046.secart +++| ENDIF 03049 M00S03047.secart +++| 03050 M00S03048.secart +++| WRITE (8,94) 03051 M00S03049.secart +++| 91 FORMAT(' SYSTEM ID: ',A60) 03052 M00S03050.secart +++| 92 FORMAT(' ',A7, ' LOG ',A20,' THRU ',A20) 03053 M00S03051.secart +++| 93 FORMAT(' SORT KEYS=',12A4) 03054 M00S03052.secart +++| 94 FORMAT(' PICKS UJN---- --JSN-JC ' 03055 M00S03053.secart +++| . ,'SDT--------------- EDT---------------- DFL ACL ' 03056 M00S03054.secart +++| . ,'FM----- UN[/UI] TRM----') 03057 M00S03055.secart +++| 03058 M00S03056.secart +++|* COPY (SORTED) FILE TO PRINTOUT & COUNT FOR PAGINATION. 03059 M00S03057.secart +++| 03060 M00S03058.secart +++| 920 READ (LF,95,END=930) TXT 03061 M00S03059.secart +++| WRITE (8,95) TXT 03062 M00S03060.secart +++| 95 FORMAT(A100) 03063 M00S03061.secart +++| L=L-1 03064 M00S03062.secart +++| IF (L.GT.0) GOTO 920 03065 M00S03063.secart +++| GOTO 910 03066 M00S03064.secart +++| 03067 M00S03065.secart +++|* FOOTNOTE AND SUMMARY TO FINISH PRINTOUT. 03068 M00S03066.secart +++| 03069 M00S03067.secart +++| 930 WRITE (8,97) NJ,NS 03070 M00S03068.secart +++| 97 FORMAT(/' PICKS: N=UJN, J=JSN, U=USER, T=TERMINAL.' 03071 M00S03069.secart +++| . /I5,' TRACE TABLE ENTRIES'/I5,' SELECTED JSN-S') 03072 M00S03070.secart +++| RETURN 03073 M00S03071.secart +++| END 03074 M00S03072.secart +++| 03075 M00S03073.secart +++|* --------------------------------------------------------------------- 03076 M00S03074.secart +++| SUBROUTINE AMSLOAD 03077 M00S03075.secart +++|** AMSLOAD - ACCOUNT LOG MESSAGE ID MANAGER. 03078 M00S03076.secart +++|* 03079 M00S03077.secart +++|* THIS PROGRAM UNIT HANDLES ALL ASPECTS OF ACCOUNT LOG MSG ID 03080 M00S03078.secart +++|* PROCESSING INCLUDING: TABLE INITIALIZATION VIA REFERENCE FILE, 03081 M00S03079.secart +++|* MARKING AND SELECTION FOR PRINTOUT, AND COLLECTION AND 03082 M00S03080.secart +++|* PRINTOUT OF USAGE STATISTICS. MULTIPLE ENTRY POINTS ARE 03083 M00S03081.secart +++|* PROVIDED FOR THESE FUNCTIONS. 03084 M00S03082.secart +++| 03085 M00S03083.secart +++| IMPLICIT INTEGER(A-Z) 03086 M00S03084.secart +++| 03087 M00S03085.secart +++| PARAMETER (MXI=200) 03088 M00S03086.secart +++|* MAX NUMBER OF MSG ID-S. 03089 M00S03087.secart +++| 03090 M00S03088.secart +++| CHARACTER*15 CL(MXI) 03091 M00S03089.secart +++|* JOB CLASS USAGE STRING FOR PRINTOUT. 03092 M00S03090.secart +++| 03093 M00S03091.secart +++| LOGICAL ERR 03094 M00S03092.secart +++|* FLAG FOR MSG ID SEQUENCE ERROR(S). 03095 M00S03093.secart +++| 03096 M00S03094.secart +++| CHARACTER*1 FLAG 03097 M00S03095.secart +++|* ARG - CHARACTER TO FLAG MSG ID FOR PRINT. 03098 M00S03096.secart +++| 03099 M00S03097.secart +++| INTEGER H 03100 M00S03098.secart +++|* TEMP - HIGH POINTER IN BINARY SEARCH. 03101 M00S03099.secart +++| 03102 M00S03100.secart +++| CHARACTER*40 HDR 03103 M00S03101.secart +++|* /SYS/ PRINTOUT HEADER TEXT. 03104 M00S03102.secart +++| 03105 M00S03103.secart +++| LOGICAL HIT 03106 M00S03104.secart +++|* ARG - FLAG RETURNED FOR MSG PRINTOUT. 03107 M00S03105.secart +++| 03108 M00S03106.secart +++| INTEGER HITS 03109 M00S03107.secart +++|* COUNT OF MSGS SELECTED FOR PRINTOUT. 03110 M00S03108.secart +++| 03111 M00S03109.secart +++| CHARACTER*4 ID(MXI) 03112 M00S03110.secart +++|* ACCOUNT MESSAGE IDENTIFIERS. 03113 M00S03111.secart +++| 03114 M00S03112.secart +++| INTEGER IPAGE 03115 M00S03113.secart +++|* LOCAL PAGINATION COUNTER. 03116 M00S03114.secart +++| 03117 M00S03115.secart +++| CHARACTER*1 JCL 03118 M00S03116.secart +++|* ARG - JOB CLASS CODE. 03119 M00S03117.secart +++| 03120 M00S03118.secart +++| CHARACTER*20 JCLASS 03121 M00S03119.secart +++|* CONSTANT - STRING OF JOB CLASS CODES. 03122 M00S03120.secart +++| 03123 M00S03121.secart +++| INTEGER L 03124 M00S03122.secart +++|* TEMP - LOW POINTER IN BINARY SEARCH. 03125 M00S03123.secart +++| 03126 M00S03124.secart +++| INTEGER MC(MXI) 03127 M00S03125.secart +++|* OCCURRENCE COUNTERS FOR MSG ID-S. 03128 M00S03126.secart +++| 03129 M00S03127.secart +++| CHARACTER*4 MID 03130 M00S03128.secart +++|* ARG - MESSAGE IDENTIFIER. 03131 M00S03129.secart +++| 03132 M00S03130.secart +++| CHARACTER*1 MK(MXI) 03133 M00S03131.secart +++|* MSG ID SELECTION MARKS. 03134 M00S03132.secart +++| 03135 M00S03133.secart +++| INTEGER MODE 03136 M00S03134.secart +++|* LOAD/MARK/TEST MODE SWITCH. 03137 M00S03135.secart +++| 03138 M00S03136.secart +++| INTEGER N 03139 M00S03137.secart +++|* TEMP - INDEX VARIABLE. 03140 M00S03138.secart +++| 03141 M00S03139.secart +++| INTEGER NI 03142 M00S03140.secart +++|* NUMBER OF MSG ID-S STORED IN TABLE. 03143 M00S03141.secart +++| 03144 M00S03142.secart +++| CHARACTER*10 PGM 03145 M00S03143.secart +++|* /SYS/ *SECART* VERSION ID FOR PRINTOUTS. 03146 M00S03144.secart +++| 03147 M00S03145.secart +++| INTEGER PICKED 03148 M00S03146.secart +++|* COUNT OF MSG ID-S PICKED FOR PRINTOUT. 03149 M00S03147.secart +++| 03150 M00S03148.secart +++| CHARACTER*10 RUNDT 03151 M00S03149.secart +++|* /SYS/ *SECART* RUN DATE FOR PRINTOUTS. 03152 M00S03150.secart +++| 03153 M00S03151.secart +++| CHARACTER*10 RUNTM 03154 M00S03152.secart +++|* /SYS/ *SECART* RUN TIME FOR PRINTOUTS. 03155 M00S03153.secart +++| 03156 M00S03154.secart +++| INTEGER TOTAL 03157 M00S03155.secart +++|* COUNT OF ALL ACCOUNT MSG ID-S. 03158 M00S03156.secart +++| 03159 M00S03157.secart +++| CHARACTER*40 TX(MXI) 03160 M00S03158.secart +++|* DESCRIPTIONS FOR ACCOUNT MSG ID-S. 03161 M00S03159.secart +++| 03162 M00S03160.secart +++| 03163 M00S03161.secart +++|* GLOBAL STRING VARIABLES. 03164 M00S03162.secart +++| 03165 M00S03163.secart +++| COMMON /SYS/ HDR 03166 M00S03164.secart +++| COMMON /SYS/ PGM 03167 M00S03165.secart +++| COMMON /SYS/ RUNDT 03168 M00S03166.secart +++| COMMON /SYS/ RUNTM 03169 M00S03167.secart +++| 03170 M00S03168.secart +++| DATA JCLASS /'ABCDMNRSTX0123 '/ 03171 M00S03169.secart +++| 03172 M00S03170.secart +++| 03173 M00S03171.secart +++|** ENTRY - CALL AMSLOAD [NO ARGUMENTS]. 03174 M00S03172.secart +++|* LOADS MSG ID TABLE FROM FILE 5 AND CHECKS FOR 03175 M00S03173.secart +++|* SEQUENCE ERRORS. NON-BLANK MARK FIELDS MAY BE USED 03176 M00S03174.secart +++|* FOR DEFAULT SELECTION OF MSG ID-S. 03177 M00S03175.secart +++|* 03178 M00S03176.secart +++|* EXIT - PRINTOUT (FILE 8) MESSAGE: 03179 M00S03177.secart +++|* NNN ACCOUNT MSG ID-S LOADED. 03180 M00S03178.secart +++|* 03181 M00S03179.secart +++|* ERROR - JOB DAYFILE MESSAGE: 03182 M00S03180.secart +++|* *** MSGID SEQUENCE ERROR(S). 03183 M00S03181.secart +++|* 03184 M00S03182.secart +++|* CALLS - NONE. 03185 M00S03183.secart +++| 03186 M00S03184.secart +++| NI=0 03187 M00S03185.secart +++| ERR=.FALSE. 03188 M00S03186.secart +++| 50 READ (5,51,END=59) ID(NI+1),MK(NI+1),TX(NI+1) 03189 M00S03187.secart +++| 51 FORMAT(1X,A4,A1,A40) 03190 M00S03188.secart +++| NI=NI+1 03191 M00S03189.secart +++| MC(NI)=0 03192 M00S03190.secart +++| CL(NI)='...............' 03193 M00S03191.secart +++| IF (NI.LT.2) GOTO 50 03194 M00S03192.secart +++| IF (ID(NI).LE.ID(NI-1)) ERR=.TRUE. 03195 M00S03193.secart +++| IF (NI.LT.MXI) GOTO 50 03196 M00S03194.secart +++| GOTO 190 03197 M00S03195.secart +++| 03198 M00S03196.secart +++| 59 IF (ERR) CALL REMARK(' *** MSGID SEQUENCE ERROR(S).') 03199 M00S03197.secart +++| WRITE (8,*) NI,' ACCOUNT MSG ID-S LOADED.' 03200 M00S03198.secart +++| RETURN 03201 M00S03199.secart +++| 03202 M00S03200.secart +++| 03203 M00S03201.secart +++|** ENTRY - CALL AMSMARK(MID,FLAG) 03204 M00S03202.secart +++|* *MID* CONTAINS MSG ID TO BE MARKED FOR PRINTOUT. 03205 M00S03203.secart +++|* WILL ADD TO TABLE IF NOT FOUND. 03206 M00S03204.secart +++|* *FLAG* CONTAINS SINGLE FLAG CHARACTER: 03207 M00S03205.secart +++|* NON-BLANK TRIGGERS PRINTOUT ON OCCURRENCE. 03208 M00S03206.secart +++|* BLANK SUPPRESSES PRINTOUT (OVERRIDE DEFAULT). 03209 M00S03207.secart +++|* 03210 M00S03208.secart +++|* EXIT - NO CHANGE TO INPUT ARGUMENTS. 03211 M00S03209.secart +++|* 03212 M00S03210.secart +++|* ERROR - JOB DAYFILE MESSAGE: 03213 M00S03211.secart +++|* *** MSGID TABLE FULL *** 03214 M00S03212.secart +++|* STOP *** SECART TERMINATED. 03215 M00S03213.secart +++|* 03216 M00S03214.secart +++|* CALLS - NONE. 03217 M00S03215.secart +++| 03218 M00S03216.secart +++| ENTRY AMSMARK(MID,FLAG) 03219 M00S03217.secart +++| MODE=2 03220 M00S03218.secart +++| GOTO 100 03221 M00S03219.secart +++| 03222 M00S03220.secart +++| 03223 M00S03221.secart +++|** ENTRY - CALL AMSTEST(MID,JCL,HIT) 03224 M00S03222.secart +++|* *MID* CONTAINS MSG ID TO TEST FOR SELECTION AND 03225 M00S03223.secart +++|* RECORD USAGE STATISTICS. UNKNOWN ID-S WILL BE 03226 M00S03224.secart +++|* AUTOMATICALLY ADDED TO TABLE W/O DEFINITION. 03227 M00S03225.secart +++|* *JCL* CONTAINS 1-CHAR JOB CLASS OF SUBJECT JOB. 03228 M00S03226.secart +++|* *HIT* LOGICAL FLAG SET TO INDICATE SELECTION. 03229 M00S03227.secart +++|* 03230 M00S03228.secart +++|* EXIT - *HIT* .TRUE. IF MSG ID MARK FIELD IS NON-BLANK. 03231 M00S03229.secart +++|* *HIT* .FALSE. IF MSG ID MARK FIELD IS BLANK. 03232 M00S03230.secart +++|* 03233 M00S03231.secart +++|* ERROR - JOB DAYFILE MESSAGE: 03234 M00S03232.secart +++|* *** MSGID TABLE FULL *** 03235 M00S03233.secart +++|* STOP *** SECART TERMINATED. 03236 M00S03234.secart +++|* 03237 M00S03235.secart +++|* CALLS - NONE. 03238 M00S03236.secart +++| 03239 M00S03237.secart +++| ENTRY AMSTEST(MID,JCL,HIT) 03240 M00S03238.secart +++| MODE=3 03241 M00S03239.secart +++| 03242 M00S03240.secart +++|* SAFETY CHECK FOR EMPTY TABLE. 03243 M00S03241.secart +++| 03244 M00S03242.secart +++| 100 IF (NI.EQ.0) THEN 03245 M00S03243.secart +++| N=NI+1 03246 M00S03244.secart +++| GOTO 130 03247 M00S03245.secart +++| ENDIF 03248 M00S03246.secart +++| 03249 M00S03247.secart +++|* BINARY SEARCH FOR MATCH/INSERT POINT. 03250 M00S03248.secart +++| 03251 M00S03249.secart +++| L=1 03252 M00S03250.secart +++| H=NI 03253 M00S03251.secart +++| 110 N=(L+H)/2 03254 M00S03252.secart +++| IF (MID.GT.ID(N)) THEN 03255 M00S03253.secart +++| L=N+1 03256 M00S03254.secart +++| ELSE IF (MID.LT.ID(N)) THEN 03257 M00S03255.secart +++| H=N-1 03258 M00S03256.secart +++| ELSE 03259 M00S03257.secart +++| GOTO 140 03260 M00S03258.secart +++| ENDIF 03261 M00S03259.secart +++| 03262 M00S03260.secart +++| IF (L.LE.H) GOTO 110 03263 M00S03261.secart +++| N=L 03264 M00S03262.secart +++| 03265 M00S03263.secart +++|* INSERT ID IN ALPHABETIC SEQUENCE. 03266 M00S03264.secart +++| 03267 M00S03265.secart +++| IF (NI.GE.MXI) GOTO 190 03268 M00S03266.secart +++| NI=NI+1 03269 M00S03267.secart +++| IF (N.EQ.NI) GOTO 130 03270 M00S03268.secart +++| 03271 M00S03269.secart +++|* OPEN UP ROW IN TABLE. 03272 M00S03270.secart +++| 03273 M00S03271.secart +++| DO 125 L=NI,N,-1 03274 M00S03272.secart +++| ID(L)=ID(L-1) 03275 M00S03273.secart +++| CL(L)=CL(L-1) 03276 M00S03274.secart +++| MC(L)=MC(L-1) 03277 M00S03275.secart +++| MK(L)=MK(L-1) 03278 M00S03276.secart +++| TX(L)=TX(L-1) 03279 M00S03277.secart +++| 125 CONTINUE 03280 M00S03278.secart +++| GOTO 135 03281 M00S03279.secart +++| 03282 M00S03280.secart +++|* ADD NEW ID ONTO BOTTOM. 03283 M00S03281.secart +++| 03284 M00S03282.secart +++| 130 IF (NI.GE.MXI) GOTO 190 03285 M00S03283.secart +++| NI=N 03286 M00S03284.secart +++| 03287 M00S03285.secart +++|* CREATE NEW ENTRY. 03288 M00S03286.secart +++| 03289 M00S03287.secart +++| 135 ID(N)=MID 03290 M00S03288.secart +++| CL(N)='...............' 03291 M00S03289.secart +++| MC(N)=0 03292 M00S03290.secart +++| MK(N)=' ' 03293 M00S03291.secart +++| TX(N)=' ' 03294 M00S03292.secart +++| 03295 M00S03293.secart +++|* MARK MSG ID FOR PRINTOUT. 03296 M00S03294.secart +++| 03297 M00S03295.secart +++| 140 IF (MODE.EQ.2) THEN 03298 M00S03296.secart +++| MK(N)=FLAG 03299 M00S03297.secart +++| 03300 M00S03298.secart +++|* COUNT, RECORD JCL DIST, & TEST FOR FLAGGED MID. 03301 M00S03299.secart +++| 03302 M00S03300.secart +++| ELSE 03303 M00S03301.secart +++| MC(N)=MC(N)+1 03304 M00S03302.secart +++| L=INDEX(JCLASS,JCL) 03305 M00S03303.secart +++| IF (L.GT.0) CL(N)(L:L)=JCL 03306 M00S03304.secart +++| IF (L.EQ.0) CL(N)(15:15)='?' 03307 M00S03305.secart +++| IF (MK(N).NE.' ') HIT=.TRUE. 03308 M00S03306.secart +++| ENDIF 03309 M00S03307.secart +++| RETURN 03310 M00S03308.secart +++| 03311 M00S03309.secart +++|* ERROR EXIT. 03312 M00S03310.secart +++| 03313 M00S03311.secart +++| 190 CALL REMARK(' *** MSGID TABLE FULL ***') 03314 M00S03312.secart +++| STOP ' *** SECART TERMINATED.' 03315 M00S03313.secart +++| 03316 M00S03314.secart +++| 03317 M00S03315.secart +++|** ENTRY - CALL AMSLIST [NO ARGUMENTS]. 03318 M00S03316.secart +++|* PRODUCES LISTING CONTAINING ALL PRE-DEFINED AND 03319 M00S03317.secart +++|* ENCOUNTERED ACCOUNT LOG MESSAGE ID-S WITH COUNT OF 03320 M00S03318.secart +++|* OCCURRENCES, USAGE BY JOB CLASS, PRINTOUT SELECTION 03321 M00S03319.secart +++|* FLAGS, AND DESCRIPTIONS. BLANK DESCRIPTION FIELD 03322 M00S03320.secart +++|* TYPICALLY INDICATES NO MATCHING ID IN REFERENCE FILE. 03323 M00S03321.secart +++|* 03324 M00S03322.secart +++|* EXIT - NORMAL RETURN ONLY. 03325 M00S03323.secart +++|* 03326 M00S03324.secart +++|* ERROR - NONE. 03327 M00S03325.secart +++|* 03328 M00S03326.secart +++|* USES - COMMON /SYS/ FOR PRINTOUT HEADER TEXT. 03329 M00S03327.secart +++|* 03330 M00S03328.secart +++|* CALLS - NONE. 03331 M00S03329.secart +++| 03332 M00S03330.secart +++| ENTRY AMSLIST 03333 M00S03331.secart +++| IPAGE=0 03334 M00S03332.secart +++| TOTAL=0 03335 M00S03333.secart +++| PICKED=0 03336 M00S03334.secart +++| HITS=0 03337 M00S03335.secart +++| N=0 03338 M00S03336.secart +++| 03339 M00S03337.secart +++| 150 IPAGE=IPAGE+1 03340 M00S03338.secart +++| HDR='A C C O U N T M E S S A G E I D - S' 03341 M00S03339.secart +++| WRITE (8,1) HDR,PGM,RUNDT,RUNTM,IPAGE 03342 M00S03340.secart +++| 1 FORMAT('1',A40,3A10,' PG',I3) 03343 M00S03341.secart +++| WRITE (8,15) 03344 M00S03342.secart +++| 15 FORMAT(' MSID COUNT JOB CLASSES S DESCRIPTION' 03345 M00S03343.secart +++| . /' ==== ====== =============== = =======================') 03346 M00S03344.secart +++| L=58 03347 M00S03345.secart +++| 160 N=N+1 03348 M00S03346.secart +++| IF (N.GT.NI) GOTO 170 03349 M00S03347.secart +++| WRITE (8,16) ID(N),MC(N),CL(N),MK(N),TX(N) 03350 M00S03348.secart +++| 16 FORMAT(1X,A4,I7,1X,A15,1X,A1,1X,A40) 03351 M00S03349.secart +++| TOTAL=TOTAL+MC(N) 03352 M00S03350.secart +++| IF (MK(N).NE.' ') THEN 03353 M00S03351.secart +++| PICKED=PICKED+1 03354 M00S03352.secart +++| HITS=HITS+MC(N) 03355 M00S03353.secart +++| ENDIF 03356 M00S03354.secart +++| L=L-1 03357 M00S03355.secart +++| IF (L)150,150,160 03358 M00S03356.secart +++| 03359 M00S03357.secart +++| 170 WRITE (8,17) TOTAL,NI,HITS,PICKED 03360 M00S03358.secart +++| 17 FORMAT(' ==========' 03361 M00S03359.secart +++| . /I12,' MESSAGES ',I3,' TYPES TOTAL' 03362 M00S03360.secart +++| . /I12,' FOUND OF ',I3,' TYPES SELECTED') 03363 M00S03361.secart +++| RETURN 03364 M00S03362.secart +++| END 03365 M00S03363.secart +++| 03366 M00S03364.secart +++|* --------------------------------------------------------------------- 03367 M00S03365.secart +++| SUBROUTINE PARSE(TXT,IT,WORD) 03368 M00S03366.secart +++|** PARSE - SIMPLE TEXT STRING PARSER. 03369 M00S03367.secart +++|* 03370 M00S03368.secart +++|* *PARSE* SCANS STRING *TXT*, STARTING AT POSITION *IT*, 03371 M00S03369.secart +++|* EXTRACTING NON-BLANKS TO BUILD *WORD*, STOPS AT DELIMITER, 03372 M00S03370.secart +++|* AND SETS *IT* JUST PAST DELIMITER FOR NEXT TIME. 03373 M00S03371.secart +++|* 03374 M00S03372.secart +++|* ENTRY - CALL PARSE(TXT,IT,WORD) 03375 M00S03373.secart +++|* *TXT* CONTAINS TEXT STRING TO BE SCANNED. 03376 M00S03374.secart +++|* *IT* SPECIFIES STARTING POSITION (1-XX) IN *TXT* 03377 M00S03375.secart +++|* 03378 M00S03376.secart +++|* EXIT - *IT* WILL BE SET TO POSITION AFTER DELIMITER. 03379 M00S03377.secart +++|* *WORD* WILL BE CONTAIN WORD FOUND OR BLANKS. 03380 M00S03378.secart +++|* 03381 M00S03379.secart +++|* ERROR - NONE. 03382 M00S03380.secart +++|* 03383 M00S03381.secart +++|* COMMON - NONE. 03384 M00S03382.secart +++|* 03385 M00S03383.secart +++|* CALLS - NONE. 03386 M00S03384.secart +++|* 03387 M00S03385.secart +++|* NOTES - *PARSE* PRECHECKS LENGTH OF *TXT* STRING AND CHECKS 03388 M00S03386.secart +++|* FOR *IT* PAST EOL. RECOGNIZED DELIMITERS INCLUDE 03389 M00S03387.secart +++|* BOTH SEPARATORS AND TERMINATORS. THE FTN5 *INDEX* 03390 M00S03388.secart +++|* FUNCTION IS USED FOR FAST DELIMITER MATCHING. 03391 M00S03389.secart +++| 03392 M00S03390.secart +++| IMPLICIT INTEGER(A-Z) 03393 M00S03391.secart +++| 03394 M00S03392.secart +++| CHARACTER*25 DELIM 03395 M00S03393.secart +++|* CONSTANT - RECOGNIZED DELIMITERS. 03396 M00S03394.secart +++| 03397 M00S03395.secart +++| INTEGER IT 03398 M00S03396.secart +++|* ARGUMENT - START/FINISH STRING POSITION. 03399 M00S03397.secart +++| 03400 M00S03398.secart +++| CHARACTER*(*) TXT 03401 M00S03399.secart +++|* ARGUMENT - TEXT STRING TO SCAN. 03402 M00S03400.secart +++| 03403 M00S03401.secart +++| CHARACTER*(*) WORD 03404 M00S03402.secart +++|* ARGUMENT - RETURNED TEXT STRING. 03405 M00S03403.secart +++| 03406 M00S03404.secart +++| DATA DELIM /'$/.)(,=+-#[]%"_!&''?<>;;'/ 03407 M00S03405.secart +++| 03408 M00S03406.secart +++|* SIMPLE TEXT PARSER ROUTINE. 03409 M00S03407.secart +++| 03410 M00S03408.secart +++| L=LEN(TXT) 03411 M00S03409.secart +++| M=LEN(WORD) 03412 M00S03410.secart +++| WORD=' ' 03413 M00S03411.secart +++| J=0 03414 M00S03412.secart +++| 03415 M00S03413.secart +++|* PRE-CHECK FOR EOL. 03416 M00S03414.secart +++| 03417 M00S03415.secart +++| IF (IT.GT.L) RETURN 03418 M00S03416.secart +++| 03419 M00S03417.secart +++|* WATCH FOR DELIMITER. 03420 M00S03418.secart +++| 03421 M00S03419.secart +++| 100 IF (INDEX(DELIM,TXT(IT:IT)).EQ.0) THEN 03422 M00S03420.secart +++| 03423 M00S03421.secart +++|* EXTRACT NON-BLANKS AND CATENATE INTO *WORD*. 03424 M00S03422.secart +++| 03425 M00S03423.secart +++| IF (TXT(IT:IT).NE.' '.AND.J.LT.M) THEN 03426 M00S03424.secart +++| J=J+1 03427 M00S03425.secart +++| WORD(J:J)=TXT(IT:IT) 03428 M00S03426.secart +++| ENDIF 03429 M00S03427.secart +++| 03430 M00S03428.secart +++|* ADVANCE AND CHECK FOR EOL. 03431 M00S03429.secart +++| 03432 M00S03430.secart +++| IT=IT+1 03433 M00S03431.secart +++| IF (IT.LE.L) GOTO 100 03434 M00S03432.secart +++| RETURN 03435 M00S03433.secart +++| ELSE 03436 M00S03434.secart +++| 03437 M00S03435.secart +++|* FOUND DELIMITER. 03438 M00S03436.secart +++| 03439 M00S03437.secart +++| IT=IT+1 03440 M00S03438.secart +++| RETURN 03441 M00S03439.secart +++| ENDIF 03442 M00S03440.secart +++| END
cdc/nos2.source/opl.opl871/deck/secart.001.txt ยท Last modified: (external edit)