User Tools

Site Tools


cdc:nos2.source:opl.opl871:deck:secart

Deck SECART

1 Modification

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M01S00001.secart  +++|*NOSEQ
00002  M01S00002.secart  +++|      PROGRAM SECART
Line S00003 Modification History
M01 (Added by) secart
M02 (Updated by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00003  M02S00003.281l803 ---|*         COMMENT.  COPYRIGHT CONTROL DATA CORPORATION 1986.
00004  M01S00004.secart  +++|***       SECART -  SECURITY AUDIT REDUCTION TOOL.
00005  M01S00001.281l803 +++|*
00006  M01S00002.281l803 +++|*         COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00007  M01S00005.secart  +++|*
00008  M01S00006.secart  +++|*         T. A. CURETON.      86/06/30.
00009  M01S00007.secart  +++|
00010  M01S00008.secart  +++|***       OVERVIEW.
00011  M01S00009.secart  +++|*
00012  M01S00010.secart  +++|*         *SECART* IS A STAND-ALONE SECURITY ADMINISTRATOR UTILITY WHICH
00013  M01S00011.secart  +++|*         DIGESTS BOTH *ACCOUNT* AND *DAYFILE* LOG MESSAGES, REDUCING
00014  M01S00012.secart  +++|*         THE VOLUME OF DATA WHICH MUST BE REVIEWED AND PRODUCES
00015  M01S00013.secart  +++|*         PRINTOUTS AND FILES USEFUL FOR SECURITY AUDITING PURPOSES.
00016  M01S00014.secart  +++|
00017  M01S00015.secart  +++|***       FUNCTIONS.
00018  M01S00016.secart  +++|*
00019  M01S00017.secart  +++|*         - MERGE BY TIME SEQUENCE MESSAGES FROM RAW *DAYFILE* AND
00020  M01S00018.secart  +++|*           *ACCOUNT* LOGS TO PRODUCE A NEAR-NORMAL CAUSE-AND-EFFECT
00021  M01S00019.secart  +++|*           SERIAL SEQUENCE AND ESTABLISH EVENT CONTEXT.
00022  M01S00020.secart  +++|*
00023  M01S00021.secart  +++|*         - SELECT MESSAGES FROM RAW LOGS FOR SERIAL PRINTOUT BASED ON
00024  M01S00022.secart  +++|*           CRITERIA SPECIFIED IN DIRECTIVES.
00025  M01S00023.secart  +++|*
00026  M01S00024.secart  +++|*         - EXTRACT JSN-S, USER NAMES, AND OTHER ATTRIBUTES OF EACH JOB
00027  M01S00025.secart  +++|*           ENCOUNTERED IN THE RAW LOG INPUT(S).
00028  M01S00026.secart  +++|*
00029  M01S00027.secart  +++|*         - RECOGNIZE MESSAGES INDICATING LEVEL 0 DEADSTARTS WHICH RESET
00030  M01S00028.secart  +++|*           JSN GENERATION SEQUENCE AND AUGMENT JSN IDENTIFIERS TO
00031  M01S00029.secart  +++|*           UNIQUELY IDENTIFY EACH JOB.
00032  M01S00030.secart  +++|*
00033  M01S00031.secart  +++|*         - RECOGNIZE JOB RECOVERY EVENTS AND, WHERE POSSIBLE, RECOVER
00034  M01S00032.secart  +++|*           JOB ATTRIBUTES FROM PREVIOUS JSN TRACE TABLE ENTRIES.
00035  M01S00033.secart  +++|*
00036  M01S00034.secart  +++|*         - COLLECT AND PRINTOUT STATISTICS ON USAGE OF *ACCOUNT* LOG
00037  M01S00035.secart  +++|*           MESSAGE IDENTIFIERS.
00038  M01S00036.secart  +++|*
00039  M01S00037.secart  +++|*         - SORT AND PRINTOUT JSN TRACE TABLE PER DIRECTIVES.
00040  M01S00038.secart  +++|*
00041  M01S00039.secart  +++|*         - SORT COMPOSITE (MERGED) LOG TO GROUP MESSAGES BY UNIQUE JSN.
00042  M01S00040.secart  +++|*
00043  M01S00041.secart  +++|*         - SELECT AND PRINTOUT UNIT JOBS PER DIRECTIVES.  APPLY SAMPLE
00044  M01S00042.secart  +++|*           LIMIT TO NUMBER OF MESSAGES PRINTED FOR EACH JOB TO REDUCE
00045  M01S00043.secart  +++|*           RISK OF MASSIVE PRINTOUT OR EXCEEDING RESOURCE LIMITS.
00046  M01S00044.secart  +++|
00047  M01S00045.secart  +++|***       COMMAND FORMAT.
00048  M01S00046.secart  +++|*
00049  M01S00047.secart  +++|*         SECART(P1,P2,...PN)
00050  M01S00048.secart  +++|*
00051  M01S00049.secart  +++|*         EACH PARAMETER SPECIFIES THE LFN OF A FILE PROVIDED AS INPUT
00052  M01S00050.secart  +++|*         OR TO BE PRODUCED AS AN OUTPUT OF THE PROGRAM.  PARAMETERS
00053  M01S00051.secart  +++|*         MUST BE IN KEYWORD=VALUE FORMAT AND MAY BE IN ANY ORDER.  A
00054  M01S00052.secart  +++|*         VALUE OF *0* (ZERO) SPECIFIES NO FILE IS PROVIDED OR PRODUCED.
00055  M01S00053.secart  +++|*         A PARAMETER OMITTED OR SPECIFIED WITHOUT A VALUE FIELD WILL
00056  M01S00054.secart  +++|*         ASSUME A DEFAULT VALUE AS DEFINED IN THE FOLLOWING TABLE:
00057  M01S00055.secart  +++|*
00058  M01S00056.secart  +++|*           PARAM OMIT NO_VALUE DESCRIPTION
00059  M01S00057.secart  +++|*
00060  M01S00058.secart  +++|*           *D*   0    DFLOG    RAW DAYFILE LOG INPUT.
00061  M01S00059.secart  +++|*           *A*   0    ACLOG    RAW ACCOUNT LOG INPUT.
00062  M01S00060.secart  +++|*           *C*   0    COMBO    COMPOSITE LOG OUTPUT/INPUT.
00063  M01S00061.secart  +++|*           *J*   0    JOBS     UNIT JOBS COMPOSITE LOG OUTPUT/INPUT.
00064  M01S00062.secart  +++|*           *M*   0    MSGID    ACCOUNT MSG ID REFERENCE INPUT FILE.
00065  M01S00063.secart  +++|*           *T*   0    TRACE    JSN TRACE TABLE INPUT AND OUTPUT.
00066  M01S00064.secart  +++|*           *I* INPUT  INPUT    DIRECTIVES INPUT FILE.
00067  M01S00065.secart  +++|*           *L* OUTPUT OUTPUT   PRINTOUTS FILE.  REQUIRED OUTPUT.
00068  M01S00066.secart  +++|*
00069  M01S00067.secart  +++|*         AT LEAST ONE OF THE FILES IDENTIFIED BY PARAMETERS *D*,*A*,
00070  M01S00068.secart  +++|*         C*,*J*,*T* MUST BE SPECIFIED TO PROVIDE INPUT(S) FOR *SECART*
00071  M01S00069.secart  +++|*         PROCESSING.  SPECIFYING EITHER (OR BOTH) RAW LOGS (*D*,*A*)
00072  M01S00070.secart  +++|*         DEFINES AN INITIAL RUN WITH COMPOSITE (*C*) AND UNIT JOB (*J*)
00073  M01S00071.secart  +++|*         LOGS AND JSN TRACE TABLE (*T*) PRODUCED AS OUTPUT FILES.
00074  M01S00072.secart  +++|*
00075  M01S00073.secart  +++|*         IF NO RAW LOG FILE IS SPECIFIED, *SECART* WILL ASSUME RERUN
00076  M01S00074.secart  +++|*         MODE AND LOOK FOR 1) A COMPOSITE LOG OR 2) UNIT JOBS LOG AS
00077  M01S00075.secart  +++|*         INPUT.  IF A COMPOSITE LOG (*C*) IS PROVIDED, THE UNIT JOBS
00078  M01S00076.secart  +++|*         LOG (*J*) WILL BE AN OUTPUT FILE.  IF A UNIT JOBS LOG (*J*) IS
00079  M01S00077.secart  +++|*         THE LOG INPUT FILE, ONLY PRINTOUTS WILL BE PRODUCED.
00080  M01S00078.secart  +++|*
00081  M01S00079.secart  +++|*         THE JSN TRACE TABLE FILE (*T*) IS PRODUCED ONLY DURING AN
00082  M01S00080.secart  +++|*         INITIAL RUN.  IT CONTAINS AN ENTRY FOR EACH JOB FOUND IN THE
00083  M01S00081.secart  +++|*         RAW LOG(S) AND SHOULD BE SAVED TO FACILLITATE RERUNS.  ANY
00084  M01S00082.secart  +++|*         *SECART* RERUN USING A PRE-PROCESSED LOG FILE REQUIRES
00085  M01S00083.secart  +++|*         PROVIDING THE TRACE TABLE FILE WHICH CORRESPONDS TO THE INPUT
00086  M01S00084.secart  +++|*         LOG.  PROVIDING A JSN TRACE TABLE FILE AS THE ONLY INPUT IS
00087  M01S00085.secart  +++|*         USEFUL FOR RE-SORTING AND/OR PRINTOUT OF THE JSN TRACE TABLE.
00088  M01S00086.secart  +++|*         TO AID RECOVERY OF JOB ATTRIBUTES FROM A PREVIOUS SET OF RAW
00089  M01S00087.secart  +++|*         LOGS, THE TRACE TABLE (OR A SUBSET) FROM THE PREVIOUS RUN MAY
00090  M01S00088.secart  +++|*         BE PROVIDED FOR AN INITIAL RAW LOGS *SECART* RUN.  SINCE THIS
00091  M01S00089.secart  +++|*         FILE WILL BE FIRST READ, THEN REWRITTEN, AN EXPENDABLE COPY OF
00092  M01S00090.secart  +++|*         THE TRACE TABLE FILE (OR SUBSET) SHOULD BE PROVIDED.
00093  M01S00091.secart  +++|*
00094  M01S00092.secart  +++|*         THE INPUT FILE (*I*) MAY CONTAIN *SECART* DIRECTIVES WHICH
00095  M01S00093.secart  +++|*         SPECIFY CRITERIA FOR SELECTING MESSAGES AND/OR UNIT JOBS FOR
00096  M01S00094.secart  +++|*         PRINTOUT, SORTING JSN TRACE TABLE ENTRIES, AND LIMITING UNIT
00097  M01S00095.secart  +++|*         JOB PRINTOUTS.  SEE DIRECTIVES SECTION BELOW FOR DESCRIPTIONS.
00098  M01S00096.secart  +++|*
00099  M01S00097.secart  +++|*         A LIST FILE (*L*) IS ALWAYS PRODUCED AND THE *L* PARAMETER MAY
00100  M01S00098.secart  +++|*         BE USED TO DIRECT PRINTOUTS TO A FILENAME.  THE SEQUENCE OF
00101  M01S00099.secart  +++|*         PRINTOUTS MAY INCLUDE:
00102  M01S00100.secart  +++|*
00103  M01S00101.secart  +++|*             - *SECART* DIRECTIVES AND ANY DIRECTIVE ERROR MESSAGES.
00104  M01S00102.secart  +++|*
00105  M01S00103.secart  +++|*             - TIME SEQUENCED SERIAL PRINTOUT OF SELECTED MESSAGES.
00106  M01S00104.secart  +++|*
00107  M01S00105.secart  +++|*             - *ACCOUNT* MESSAGE ID STATISTICS.
00108  M01S00106.secart  +++|*
00109  M01S00107.secart  +++|*             - SORTED JSN TRACE TABLE.
00110  M01S00108.secart  +++|*
00111  M01S00109.secart  +++|*             - SELECTED UNIT JOBS.
00112  M01S00110.secart  +++|
00113  M01S00111.secart  +++|***       DIRECTIVES.
00114  M01S00112.secart  +++|*
00115  M01S00113.secart  +++|*         *SECART* DIRECTIVES MAY BE USED TO SPECIFY OPTIONS AND TO
00116  M01S00114.secart  +++|*         SELECT MESSAGES, TIME WINDOWS, AND JOBS FOR PRINTOUT.  ALL
00117  M01S00115.secart  +++|*         SELECTIONS ARE ON AN INCLUSIVE OR BASIS.  SELECTED *ACCOUNT*
00118  M01S00116.secart  +++|*         MESSAGE ID-S ARE FLAGGED AND OCCURRENCES TABULATED IN THE
00119  M01S00117.secart  +++|*         STATISTICS PRINTOUT.  SELECTED JOBS ARE ANNOTATED TO SHOW
00120  M01S00118.secart  +++|*         SELECTION BASIS IN THE JSN TRACE TABLE PRINTOUT.
00121  M01S00119.secart  +++|*
00122  M01S00120.secart  +++|*         EACH DIRECTIVE MUST BEGIN IN COLUMN 1 ON A SEPARATE INPUT
00123  M01S00121.secart  +++|*         LINE.  THE *=* AFTER THE DIRECTIVE NAME IS REQUIRED.  SYNTAX
00124  M01S00122.secart  +++|*         IS GENERALLY FREEFORM USING A COMMA AND/OR BLANKS TO SEPARATE
00125  M01S00123.secart  +++|*         ARGUMENTS.  ITEMS SHOWN BELOW IN [BRACKETS] ARE OPTIONAL.
00126  M01S00124.secart  +++|*         REPETITIVE ARGUMENTS ARE INDICATED BY TRIPLE PERIODS AND MAY
00127  M01S00125.secart  +++|*         MAY BE ENTERED VIA MULTIPLE DIRECTIVES TO A MAXIMUM DEFINED
00128  M01S00126.secart  +++|*         BY TABLE SPACE (50 EACH TYPE).
00129  M01S00127.secart  +++|*
00130  M01S00128.secart  +++|*         AMSG=MSID,MSID,...
00131  M01S00129.secart  +++|*
00132  M01S00130.secart  +++|*                  SELECTS FOR SERIAL PRINTOUT ALL MESSAGES CONTAINING
00133  M01S00131.secart  +++|*                  ANY OF THE SPECIFIED ACCOUNT MESSAGE IDENTIFIERS.
00134  M01S00132.secart  +++|*
00135  M01S00133.secart  +++|*         DMSG=[NN:]TEXTSTRING
00136  M01S00134.secart  +++|*
00137  M01S00135.secart  +++|*                  SELECTS FOR SERIAL PRINTOUT OF ALL DAYFILE
00138  M01S00136.secart  +++|*                  MESSAGES CONTAINING SPECIFIED TEXT STRING.  NN IS
00139  M01S00137.secart  +++|*                  OPTIONAL AND SPECIFIES A START CHARACTER POSITION
00140  M01S00138.secart  +++|*                  [1-80] RELATIVE TO MESSAGE PORTION OF DAYFILE.  TEXT
00141  M01S00139.secart  +++|*                  STRING IS UNDELIMITED, BEGINS IMMEDIATELY AFTER THE
00142  M01S00140.secart  +++|*                  EQUAL OR COLON, AND ENDS WITH LAST NON-BLANK.
00143  M01S00141.secart  +++|*
00144  M01S00142.secart  +++|*         TIME=HHMMSS[-HHMMSS]      (OR)
00145  M01S00143.secart  +++|*         TIME=HH.MM.SS.[-HH.MM.SS]
00146  M01S00144.secart  +++|*
00147  M01S00145.secart  +++|*                  SPECIFIES TIME WINDOW FOR SERIAL PRINTOUT.
00148  M01S00146.secart  +++|*                  SECONDS PORTION IS OPTIONAL.  END TIME IS OPTIONAL
00149  M01S00147.secart  +++|*                  BUT REQUIRES '-' SEPARATOR.  DEFAULTS TO SAME AS
00150  M01S00148.secart  +++|*                  START TIME FOR ONE SECOND WINDOW.
00151  M01S00149.secart  +++|*
00152  M01S00150.secart  +++|*         TRACE=KEY,KEY,...
00153  M01S00151.secart  +++|*
00154  M01S00152.secart  +++|*                  SPECIFIES SORT KEYS FOR TRACE TABLE PRINTOUT.  VALID
00155  M01S00153.secart  +++|*                  KEYS:  UJN,JSN,JC,SDT,EDT,FM,UN,TRM.  DEFAULT IS SDT
00156  M01S00154.secart  +++|*                  WHICH IS SEQUENCE OF ENCOUNTERING UNIQUE JSN-S.
00157  M01S00155.secart  +++|*
00158  M01S00156.secart  +++|*         USER=FAMILY,USER
00159  M01S00157.secart  +++|*
00160  M01S00158.secart  +++|*                  SELECTS UNIT JOBS FOR PRINTOUT BY USER/FAMILY
00161  M01S00159.secart  +++|*                  IDENTIFICATION.  FAMILY MAY BE BLANK OR OMITTED TO
00162  M01S00160.secart  +++|*                  SELECT DEFAULT FAMILY.  ASTERISK MAY BE SPECIFIED
00163  M01S00161.secart  +++|*                  FOR WILDCARD MATCH ON FAMILY OR USER.   NOTE THAT
00164  M01S00162.secart  +++|*                  USER=*,* SELECTS ALL JOBS.  SINCE *SECART* RECOGNIZES
00165  M01S00163.secart  +++|*                  THE USER INDEX IN A *SUI* COMMAND AS A USER ID, A
00166  M01S00164.secart  +++|*                  USER INDEX MAY BE SPECIFIED IN PLACE OF THE USERNAME
00167  M01S00165.secart  +++|*                  AND WILL BE RECOGNIZED WHEN A *SUI* WITH THAT UI IS
00168  M01S00166.secart  +++|*                  ENCOUNTERED IN THE DAYFILE LOG.
00169  M01S00167.secart  +++|*
00170  M01S00168.secart  +++|*         UJN=JOBNAME,...
00171  M01S00169.secart  +++|*
00172  M01S00170.secart  +++|*                  SELECTS UNIT JOBS FOR PRINTOUT BY JOBNAME FOUND IN
00173  M01S00171.secart  +++|*                  FIRST DAYFILE MESSAGE (USUALLY).
00174  M01S00172.secart  +++|*
00175  M01S00173.secart  +++|*         JSN=[D.]AAAA,...
00176  M01S00174.secart  +++|*
00177  M01S00175.secart  +++|*                  SELECTS UNIT JOBS FOR PRINTOUT BY JSN.  'D.' IS
00178  M01S00176.secart  +++|*                  OPTIONAL AND SPECIFIES AN *SECART*-ASSIGNED PREFIX
00179  M01S00177.secart  +++|*                  CODE USED TO RESOLVE JSN AMBIGUITY ACROSS LEVEL 0
00180  M01S00178.secart  +++|*                  DEADSTARTS.
00181  M01S00179.secart  +++|*
00182  M01S00180.secart  +++|*         TRM=TERMID,...
00183  M01S00181.secart  +++|*
00184  M01S00182.secart  +++|*                  SELECTS UNIT JOBS PRINTOUT BY TERMINAL ID.
00185  M01S00183.secart  +++|*
00186  M01S00184.secart  +++|*         LIMIT=NNNN
00187  M01S00185.secart  +++|*
00188  M01S00186.secart  +++|*                  LIMITS UNIT JOB PRINTOUTS TO NNNN LINES EACH.  HELPS
00189  M01S00187.secart  +++|*                  REDUCE/AVOID MASSSIVE PRINTOUTS.
00190  M01S00188.secart  +++|
00191  M01S00189.secart  +++|***       CALLS.
00192  M01S00190.secart  +++|*
00193  M01S00191.secart  +++|*         SORT/MERGE V5 - TO GROUP COMPOSITE LOG INTO UNIT JOBS AND
00194  M01S00192.secart  +++|*                       - TO SORT TRACE TABLE (OPTIONAL).
00195  M01S00193.secart  +++|
00196  M01S00194.secart  +++|***       DAYFILE MESSAGES.
00197  M01S00195.secart  +++|*
00198  M01S00196.secart  +++|*         *SECART* ISSUES TWO CLASSES OF DAYFILE MESSAGES - STATUS AND
00199  M01S00197.secart  +++|*         ERROR MESSAGES.
00200  M01S00198.secart  +++|*
00201  M01S00199.secart  +++|*         STATUS MESSAGES MERELY INDICATE PROCESSING PHASES AND ARE
00202  M01S00200.secart  +++|*         SELF-EXPLANATORY.  ALL STATUS MESSAGES BEGIN WITH ONE LEADING
00203  M01S00201.secart  +++|*         BLANK AND OCCUR IN THE FOLLOWING SEQUENCE:
00204  M01S00202.secart  +++|*
00205  M01S00203.secart  +++|*             READING DIRECTIVES...
00206  M01S00204.secart  +++|*
00207  M01S00205.secart  +++|*             LOADING TRACE TABLE...
00208  M01S00206.secart  +++|*
00209  M01S00207.secart  +++|*             DIGESTING RAW LOG(S)...
00210  M01S00208.secart  +++|*
00211  M01S00209.secart  +++|*             ACCOUNT MSG STATISTICS...
00212  M01S00210.secart  +++|*
00213  M01S00211.secart  +++|*             TRACE TABLE PRINTOUT...
00214  M01S00212.secart  +++|*
00215  M01S00213.secart  +++|*             SORTING OUT JOBS...
00216  M01S00214.secart  +++|*
00217  M01S00215.secart  +++|*             EXTRACTING SELECTED JOBS...
00218  M01S00216.secart  +++|*
00219  M01S00217.secart  +++|*             SECART COMPLETED.
00220  M01S00218.secart  +++|*
00221  M01S00219.secart  +++|*         ALL ERROR MESSAGES ARE OFFSET WITH THREE LEADING BLANKS AND
00222  M01S00220.secart  +++|*         FLAGGED WITH ASTERISKS TO STAND OUT IN THE DAYFILE SEQUENCE.
00223  M01S00221.secart  +++|*         ERROR MESSAGES LEADING TO TERMINATION ALSO HAVE TRAILING
00224  M01S00222.secart  +++|*         ASTERISKS.  ERROR MESSAGES AND EXPLANATIONS ARE:
00225  M01S00223.secart  +++|*
00226  M01S00224.secart  +++|*         *** SECART TERMINATED.
00227  M01S00225.secart  +++|*
00228  M01S00226.secart  +++|*                  ABNORMAL *SECART* TERMINATION.  PRECEEDING MESSAGE
00229  M01S00227.secart  +++|*                  IDENTIFIES CAUSE.
00230  M01S00228.secart  +++|*
00231  M01S00229.secart  +++|*         *** DIRECTIVE ERROR(S).
00232  M01S00230.secart  +++|*
00233  M01S00231.secart  +++|*                  SEE PRINTOUT FOR ERRORS.
00234  M01S00232.secart  +++|*
00235  M01S00233.secart  +++|*         *** [LFN] NOT RAW ACCOUNT LOG.
00236  M01S00234.secart  +++|*
00237  M01S00235.secart  +++|*                  FIRST AND/OR SECOND LINES NOT IN DATE/TIME FORMAT.
00238  M01S00236.secart  +++|*
00239  M01S00237.secart  +++|*         *** [LFN] NOT RAW DAYFILE LOG.
00240  M01S00238.secart  +++|*
00241  M01S00239.secart  +++|*                  FIRST AND/OR SECOND LINES NOT IN DATE/TIME FORMAT.
00242  M01S00240.secart  +++|*
00243  M01S00241.secart  +++|*         *** LIST FILE REQUIRED.
00244  M01S00242.secart  +++|*
00245  M01S00243.secart  +++|*                  *L=0* PARAMETER IGNORED.
00246  M01S00244.secart  +++|*
00247  M01S00245.secart  +++|*         *** LOG DATES MISMATCH.
00248  M01S00246.secart  +++|*
00249  M01S00247.secart  +++|*                  *ACCOUNT* VS *DAYFILE* SYSTEM DATE MISMATCH.  LOG
00250  M01S00248.secart  +++|*                  TIME PERIODS MAY NOT OVERLAP.
00251  M01S00249.secart  +++|*
00252  M01S00250.secart  +++|*         *** MSGID SEQUENCE ERROR(S).
00253  M01S00251.secart  +++|*
00254  M01S00252.secart  +++|*                  *ACCOUNT* MESSAGE ID TABLE (*M*) OUT OF SEQUENCE.
00255  M01S00253.secart  +++|*
00256  M01S00254.secart  +++|*         *** MSGID TABLE FULL ***
00257  M01S00255.secart  +++|*
00258  M01S00256.secart  +++|*                  *ACCOUNT* MESSAGE ID FILE EXCEEDS TABLE SIZE.
00259  M01S00257.secart  +++|*
00260  M01S00258.secart  +++|*         *** SYSTEM ID MISMATCH ***
00261  M01S00259.secart  +++|*
00262  M01S00260.secart  +++|*                  *ACCOUNT* VS *DAYFILE* SYSTEM TITLE/VERSION
00263  M01S00261.secart  +++|*                  MISMATCH.  LOGS NOT FROM SAME SYSTEM.
00264  M01S00262.secart  +++|*
00265  M01S00263.secart  +++|*         *** TRACE TABLE FULL ***
00266  M01S00264.secart  +++|*
00267  M01S00265.secart  +++|*                  JSN TRACE TABLE OVERFLOW.  MAY BE DUE TO COMBINING
00268  M01S00266.secart  +++|*                  TABLE FROM PREVIOUS LOGS.
00269  M01S00267.secart  +++|*
00270  M01S00268.secart  +++|*         *** TRACE TABLE SEQUENCE ERROR(S).
00271  M01S00269.secart  +++|*
00272  M01S00270.secart  +++|*                  LOADED TRACE TABLE (*T*) NOT IN ASCENDING D.JSN
00273  M01S00271.secart  +++|*                  SEQUENCE.
00274  M01S00272.secart  +++|*
00275  M01S00273.secart  +++|*         *** UNRECOGNIZED PARAMETER: [PARAM]
00276  M01S00274.secart  +++|*
00277  M01S00275.secart  +++|*                  PROGRAM CALL PARAMETER NOT RECOGNIZED.
00278  M01S00276.secart  +++|
00279  M01S00277.secart  +++|***       PRINTOUT MESSAGES.
00280  M01S00278.secart  +++|*
00281  M01S00279.secart  +++|*         INFORMATIVE AND ERROR MESSAGES INSERTED IN THE PRINTOUT ARE
00282  M01S00280.secart  +++|*         FLAGGED WITH === AND *** RESPECTIVELY.  ALL ARE INDENTED THREE
00283  M01S00281.secart  +++|*         SPACES.  A FEW INFORMATIVE MESSAGES ARE ALSO   E X P A N D E D
00284  M01S00282.secart  +++|*         SO AS TO STAND OUT WHEN EMBEDDED IN LENGTHY SERIAL PRINTOUT.
00285  M01S00283.secart  +++|*
00286  M01S00284.secart  +++|*         === EOF ACCOUNT LOG [LFN], NNNN MESSAGES     (OR)
00287  M01S00285.secart  +++|*         === EOF DAYFILE LOG [LFN], NNNN MESSAGES
00288  M01S00286.secart  +++|*
00289  M01S00287.secart  +++|*                  MARKS LOG END-OF-FILE POINT AND NUMBER OF MESSAGES.
00290  M01S00288.secart  +++|*
00291  M01S00289.secart  +++|*         === JSN NOT FOUND: [JSN] YY/MM/DD. HH.MM.SS.
00292  M01S00290.secart  +++|*
00293  M01S00291.secart  +++|*                  ORIGINAL JSN NOT IN TRACE TABLE.  JOB ATTRIBUTES
00294  M01S00292.secart  +++|*                  NOT RECOVERED.
00295  M01S00293.secart  +++|*
00296  M01S00294.secart  +++|*         === JSN RECOVERED [D.JSN]
00297  M01S00295.secart  +++|*
00298  M01S00296.secart  +++|*                  JOB RECOVERY LINKED TO ORIGINAL JSN IN TRACE TABLE.
00299  M01S00297.secart  +++|*                  JOB ATTRIBUTES RECOVERED VIA TRACE TABLE.
00300  M01S00298.secart  +++|*
00301  M01S00299.secart  +++|*         ========= L E V E L   0   D / S   ( X ) =========
00302  M01S00300.secart  +++|*
00303  M01S00301.secart  +++|*                  INITIAL LEVEL 0 D/S RESETS JSN SEQUENCE.  X IS NEW
00304  M01S00302.secart  +++|*                  *SECART*-GENERATED PREFIX FOR SUBSEQUENT JOBS.
00305  M01S00303.secart  +++|*
00306  M01S00304.secart  +++|*         ========= S A M P L E   L I M I T =========
00307  M01S00305.secart  +++|*
00308  M01S00306.secart  +++|*                  UNIT JOB PRINTOUT TRUNCATED PER *LIMIT* DIRECTIVE.
00309  M01S00307.secart  +++|*
00310  M01S00308.secart  +++|*         *** TIME ARGUMENT ERROR.
00311  M01S00309.secart  +++|*
00312  M01S00310.secart  +++|*                  ERROR IN VALUE OR SYNTAX FOR *TIME* DIRECTIVE.
00313  M01S00311.secart  +++|*
00314  M01S00312.secart  +++|*         ====== TIME WINDOW START ======
00315  M01S00313.secart  +++|*         ====== TIME WINDOW END ======
00316  M01S00314.secart  +++|*
00317  M01S00315.secart  +++|*                  INDICATES START/END OF SPECIFIED TIME WINDOW.
00318  M01S00316.secart  +++|*
00319  M01S00317.secart  +++|*         *** TOO MANY ARGUMENTS, EXCESS IGNORED.
00320  M01S00318.secart  +++|*
00321  M01S00319.secart  +++|*                  REPETITIVE ARGUMENT LIST EXCEEDS TABLE SIZE.
00322  M01S00320.secart  +++|*
00323  M01S00321.secart  +++|*         *** UNRECOGNIZED DIRECTIVE ***
00324  M01S00322.secart  +++|*
00325  M01S00323.secart  +++|*                  DIRECTIVE NOT RECOGNIZED - MISPELLED, ETC.
00326  M01S00324.secart  +++|
00327  M01S00325.secart  +++|**        INTERNAL OVERVIEW.
00328  M01S00326.secart  +++|*
00329  M01S00327.secart  +++|*         *SECART* IS WRITTEN IN FORTRAN FOR COMPILATION VIA FTN5.  IT
00330  M01S00328.secart  +++|*         CONSISTS OF A MAIN PROGRAM, PRIMARY SUBROUTINES, AND SUPPORT
00331  M01S00329.secart  +++|*         SUBROUTINES ORGANIZED IN A TOP-DOWN STRUCTURE.  THE MAIN
00332  M01S00330.secart  +++|*         PROGRAM ESTABLISHES OVERALL PROCESSING SEQUENCE AND CONTROL.
00333  M01S00331.secart  +++|*         EACH PRIMARY SUBROUTINE ISOLATES RESPONSIBILITY FOR A MAJOR
00334  M01S00332.secart  +++|*         PROGRAM OBJECTIVE TO A SINGLE CODE MODULE AND SUPPORTS
00335  M01S00333.secart  +++|*         SEVERAL RELATED FUNCTIONS VIA MULTIPLE ENTRY POINTS.  LOW
00336  M01S00334.secart  +++|*         LEVEL SUPPORT SUBROUTINES PROVIDE COMMON/REDUNDANT FUNCTIONS
00337  M01S00335.secart  +++|*         USED BY ONE OR MORE SUBROUTINES AND/OR THE MAIN PROGRAM.
00338  M01S00336.secart  +++|*         THE LIST OF MODULES AND [ENTRY POINTS] , INDENTED TO SHOW
00339  M01S00337.secart  +++|*         STRUCTURE, INCLUDES:
00340  M01S00338.secart  +++|*
00341  M01S00339.secart  +++|*         SECART - MAIN PROGRAM.
00342  M01S00340.secart  +++|*
00343  M01S00341.secart  +++|*             DIRECT - DIRECTIVES AND SELECTION FUNCTIONS.
00344  M01S00342.secart  +++|*             [TMCHECK] - TIME WINDOW CHECKING.
00345  M01S00343.secart  +++|*             [MSCHECK] - DAYFILE MESSAGE CHECK.
00346  M01S00344.secart  +++|*             [PICKJSN] - PICK JOBS BY JSN.
00347  M01S00345.secart  +++|*             [PICKUJN] - PICK JOBS BY UJN.
00348  M01S00346.secart  +++|*             [PICKUSR] - PICK JOBS BY USER, FAMILY NAME.
00349  M01S00347.secart  +++|*             [PICKTRM] - PICK JOBS BY TERMINAL NAME.
00350  M01S00348.secart  +++|*
00351  M01S00349.secart  +++|*                  TMARG - REDUNDANT TIME ARGUMENT DIRECTIVE CRACKING.
00352  M01S00350.secart  +++|*
00353  M01S00351.secart  +++|*             DFSCAN - *DAYFILE* LOG I/O AND MESSAGE PROCESSING.
00354  M01S00352.secart  +++|*             [DFMSG] - ROUTINE MESSAGE PROCESSING.
00355  M01S00353.secart  +++|*
00356  M01S00354.secart  +++|*             ACSCAN - *ACCOUNT* LOG I/O AND MESSAGE PROCESSING.
00357  M01S00355.secart  +++|*             [ACMSG] - ROUTINE MESSAGE PROCESSING.
00358  M01S00356.secart  +++|*
00359  M01S00357.secart  +++|*                  LOGTEST - CHECK FORMAT, EXTRACT START DATE/TIME.
00360  M01S00358.secart  +++|*
00361  M01S00359.secart  +++|*             JSNLOAD - JSN TRACE TABLE MANAGEMENT.
00362  M01S00360.secart  +++|*             [JSNTRAK] - MATCH/COLLECT JSN-S, JOB ATTRIBUTES.
00363  M01S00361.secart  +++|*             [JSNLOOK] - JSN MATCH ONLY.
00364  M01S00362.secart  +++|*             [JSNLVL0] - HANDLE LEVEL 0 D/S EVENTS W/O DUPLICATION.
00365  M01S00363.secart  +++|*             [JSNLIST] - TRACE TABLE SORT (OPTIONAL) AND PRINTOUT.
00366  M01S00364.secart  +++|*
00367  M01S00365.secart  +++|*             AMSLOAD - *ACCOUNT* MESSAGE ID TABLE AND STATISTICS.
00368  M01S00366.secart  +++|*             [AMSMARK] - FLAG ID-S FOR SELECTION.
00369  M01S00367.secart  +++|*             [AMSTEST] - ID MATCH, SELECTION TEST, TABULATION.
00370  M01S00368.secart  +++|*             [AMSLIST] - MESSAGE ID STATISTICS PRINTOUT.
00371  M01S00369.secart  +++|*
00372  M01S00370.secart  +++|*                  PARSE - COMMON TEXT PARSER.
00373  M01S00371.secart  +++|
00374  M01S00372.secart  +++|**        COMMON BLOCKS.
00375  M01S00373.secart  +++|*
00376  M01S00374.secart  +++|*         COMMON BLOCKS PROVIDE THE PRIMARY MEANS OF SHARING
00377  M01S00375.secart  +++|*         INFORMATION BETWEEN MODULES.  AS WITH CODE MODULES, THEY ARE
00378  M01S00376.secart  +++|*         ORGANIZED BY FUNCTIONAL AREA AND EACH IS DEFINED ONLY IN
00379  M01S00377.secart  +++|*         THOSE MODULES WHICH NEED ACCESS TO ONE OR MORE VARIABLES IN
00380  M01S00378.secart  +++|*         THAT BLOCK.  OF NECESSITY, EACH BLOCK CONTAINS EXCLUSIVELY
00381  M01S00379.secart  +++|*         EITHER NUMERIC OR TEXT STRING VARIABLES WHICH SIGNIFICANTLY
00382  M01S00380.secart  +++|*         INFLUENCES ORGANIZATION.  DEFINED COMMON BLOCKS ARE:
00383  M01S00381.secart  +++|*
00384  M01S00382.secart  +++|*         /ACL/  STRINGS, *ACCOUNT* LOG SPECIFIC VARIABLES.
00385  M01S00383.secart  +++|*
00386  M01S00384.secart  +++|*         /CTL/  NUMERIC, PROGRAM-WIDE VARIABLES & PARAMETERS.
00387  M01S00385.secart  +++|*
00388  M01S00386.secart  +++|*         /DFL/  STRINGS, *DAYFILE* LOG SPECIFIC VARIABLES.
00389  M01S00387.secart  +++|*
00390  M01S00388.secart  +++|*         /SRT/  STRINGS, TRACE TABLE SORT KEY IDENTIFIERS.
00391  M01S00389.secart  +++|*
00392  M01S00390.secart  +++|*         /SYS/  STRINGS, PROGRAM-WIDE VARIABLES.
00393  M01S00391.secart  +++|*
00394  M01S00392.secart  +++|*         /TRC/  STRINGS, JSN TRACE TABLE.
00395  M01S00393.secart  +++|
00396  M01S00394.secart  +++|**        SPECIAL TECHNIQUES.
00397  M01S00395.secart  +++|*
00398  M01S00396.secart  +++|*         THE PROGRAM INITIALIZATION SEQUENCE IS DESIGNED TO AVOID
00399  M01S00397.secart  +++|*         CONFLICTS BETWEEN DIRECTIVES AND INFORMATION CONTAINED IN
00400  M01S00398.secart  +++|*         DATA TABLE FILES, AND TO AUTOMATICALLY ACCOMMODATE OMMISSION
00401  M01S00399.secart  +++|*         OF INPUT FILES WHICH INDICATE RERUNS VERSUS INITIAL RAW LOGS
00402  M01S00400.secart  +++|*         PROCESSING RUNS.
00403  M01S00401.secart  +++|*
00404  M01S00402.secart  +++|*         THE USE OF TWO INDEPENDENT SUBROUTINES TO ENCAPSULATE I/O AND
00405  M01S00403.secart  +++|*         MESSAGE ANALYSIS FOR EACH RAW LOG ALLOWS THE MAIN PROGRAM TO
00406  M01S00404.secart  +++|*         FOCUS ON SYNCHRONIZATION OF MESSAGES FROM BOTH LOGS INTO A
00407  M01S00405.secart  +++|*         NEAR CAUSE-AND-EFFECT SEQUENCE FOR SUBSEQUENT PROCESSING.
00408  M01S00406.secart  +++|
00409  M01S00407.secart  +++|**        KNOWN LIMITATIONS.
00410  M01S00408.secart  +++|*
00411  M01S00409.secart  +++|*         THE PROGRAM-S CAPACITY FOR DIRECTIVE ARGUMENTS, MESSAGE ID-S,
00412  M01S00410.secart  +++|*         UNIQUE JSN-S, AND JSN TRACE TABLE SORT KEYS ARE LIMITED BY
00413  M01S00411.secart  +++|*         THEIR RESPECTIVE TABLE SIZES AND ULTIMATELY BY OVERALL
00414  M01S00412.secart  +++|*         PROGRAM SIZE.  FOR PERFORMANCE REASONS, NO ATTEMPT HAS BEEN
00415  M01S00413.secart  +++|*         MADE TO ACCOMMODATE DYNAMIC TABLE MANAGEMENT OR OVERFLOW TO
00416  M01S00414.secart  +++|*         MASS STORAGE.
00417  M01S00415.secart  +++|
00418  M01S00416.secart  +++|
00419  M01S00417.secart  +++|      IMPLICIT INTEGER(A-Z)
00420  M01S00418.secart  +++|
00421  M01S00419.secart  +++|      PARAMETER (MXJ=1000)
00422  M01S00420.secart  +++|*                            SIZE OF JSN TRACE TABLE.
00423  M01S00421.secart  +++|
00424  M01S00422.secart  +++|      PARAMETER (NK=8)
00425  M01S00423.secart  +++|*                            NUMBER OF COMMAND KEYWORD PARAMETERS.
00426  M01S00424.secart  +++|
00427  M01S00425.secart  +++|      EQUIVALENCE (ACSDTG,ACSDATE)
00428  M01S00426.secart  +++|*                            /ACL/ ACSDTG*20 = ACSDATE*10 // ACSTIME*10.
00429  M01S00427.secart  +++|
00430  M01S00428.secart  +++|      EQUIVALENCE (ACEDTG,ACEDATE)
00431  M01S00429.secart  +++|*                            /ACL/ ACEDTG*20 = ACEDATE*10 // ACETIME*10.
00432  M01S00430.secart  +++|
00433  M01S00431.secart  +++|      EQUIVALENCE (ACSYSID,ACTITLE)
00434  M01S00432.secart  +++|*                            /ACL/ ACSYSID*60 = ACTITLE*40//ACVERSN*20.
00435  M01S00433.secart  +++|
00436  M01S00434.secart  +++|      EQUIVALENCE (DFSDTG,DFSDATE)
00437  M01S00435.secart  +++|*                            /DFL/ DFSDTG*20 = DFSDATE*10 // DFSTIME*10.
00438  M01S00436.secart  +++|
00439  M01S00437.secart  +++|      EQUIVALENCE (DFEDTG,DFEDATE)
00440  M01S00438.secart  +++|*                            /DFL/ DFEDTG*20 = DFEDATE*10 // DFETIME*10.
00441  M01S00439.secart  +++|
00442  M01S00440.secart  +++|      EQUIVALENCE (DFSYSID,DFTITLE)
00443  M01S00441.secart  +++|*                            /DFL/ DFSYSID*60 = DFTITLE*40//DFVERSN*20.
00444  M01S00442.secart  +++|
00445  M01S00443.secart  +++|      CHARACTER*10  ACEDATE
00446  M01S00444.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG END DATE.
00447  M01S00445.secart  +++|
00448  M01S00446.secart  +++|      CHARACTER*10  ACETIME
00449  M01S00447.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG END TIME.
00450  M01S00448.secart  +++|
00451  M01S00449.secart  +++|      CHARACTER*20  ACEDTG
00452  M01S00450.secart  +++|*                            /ACL/ ACCOUNT LOG END DATE/TIME GROUP.
00453  M01S00451.secart  +++|
00454  M01S00452.secart  +++|      LOGICAL       ACEOF
00455  M01S00453.secart  +++|*                            /CTL/ ACCOUNT LOG EOF FLAG.
00456  M01S00454.secart  +++|
00457  M01S00455.secart  +++|      INTEGER       ACIN
00458  M01S00456.secart  +++|*                            /CTL/ ACCOUNT LOG MESSAGE COUNTER.
00459  M01S00457.secart  +++|
00460  M01S00458.secart  +++|      CHARACTER*10  ACSDATE
00461  M01S00459.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG START DATE.
00462  M01S00460.secart  +++|
00463  M01S00461.secart  +++|      CHARACTER*20  ACSDTG
00464  M01S00462.secart  +++|*                            /ACL/ ACCOUNT LOG START DATE/TIME GROUP.
00465  M01S00463.secart  +++|
00466  M01S00464.secart  +++|      CHARACTER*10  ACSTIME
00467  M01S00465.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG START TIME.
00468  M01S00466.secart  +++|
00469  M01S00467.secart  +++|      CHARACTER*60  ACSYSID
00470  M01S00468.secart  +++|*                            /ACL/ ACCOUNT LOG SYSTEM TITLE/VERSION.
00471  M01S00469.secart  +++|
00472  M01S00470.secart  +++|      CHARACTER*40  ACTITLE
00473  M01S00471.secart  +++|*                            /ACL/ ACCOUNT LOG SYSTEM TITLE.
00474  M01S00472.secart  +++|
00475  M01S00473.secart  +++|      CHARACTER*100 ACTXT
00476  M01S00474.secart  +++|*                            /ACL/ ACCOUNT LOG CURRENT MESSAGE TEXT.
00477  M01S00475.secart  +++|
00478  M01S00476.secart  +++|      CHARACTER*20  ACVERSN
00479  M01S00477.secart  +++|*                            /ACL/ ACCOUNT LOG SYSTEM VERSION.
00480  M01S00478.secart  +++|
00481  M01S00479.secart  +++|      CHARACTER*10  DATE
00482  M01S00480.secart  +++|*                            TYPING FOR FTN5 FUNCTION.
00483  M01S00481.secart  +++|
00484  M01S00482.secart  +++|      CHARACTER*7   DEF(NK)
00485  M01S00483.secart  +++|*                            *SECART* COMMAND KEYWORD DEFAULTS.
00486  M01S00484.secart  +++|
00487  M01S00485.secart  +++|      CHARACTER*10  DFEDATE
00488  M01S00486.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG END DATE.
00489  M01S00487.secart  +++|
00490  M01S00488.secart  +++|      CHARACTER*20  DFEDTG
00491  M01S00489.secart  +++|*                            /DFL/ DAYFILE LOG END DATE/TIME GROUP.
00492  M01S00490.secart  +++|
00493  M01S00491.secart  +++|      CHARACTER*10  DFETIME
00494  M01S00492.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG END TIME.
00495  M01S00493.secart  +++|
00496  M01S00494.secart  +++|      LOGICAL       DFEOF
00497  M01S00495.secart  +++|*                            /CTL/ DAYFILE LOG EOF FLAG.
00498  M01S00496.secart  +++|
00499  M01S00497.secart  +++|      INTEGER       DFIN
00500  M01S00498.secart  +++|*                            /CTL/ DAYFILE LOG MESSAGE COUNTER.
00501  M01S00499.secart  +++|
00502  M01S00500.secart  +++|      CHARACTER*10  DFSDATE
00503  M01S00501.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG START DATE.
00504  M01S00502.secart  +++|
00505  M01S00503.secart  +++|      CHARACTER*20  DFSDTG
00506  M01S00504.secart  +++|*                            /DFL/ DAYFILE LOG START DATE/TIME GROUP.
00507  M01S00505.secart  +++|
00508  M01S00506.secart  +++|      CHARACTER*10  DFSTIME
00509  M01S00507.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG START TIME.
00510  M01S00508.secart  +++|
00511  M01S00509.secart  +++|      CHARACTER*60  DFSYSID
00512  M01S00510.secart  +++|*                            /DFL/ DAYFILE LOG SYSTEM TITLE/VERSION.
00513  M01S00511.secart  +++|
00514  M01S00512.secart  +++|      CHARACTER*40  DFTITLE
00515  M01S00513.secart  +++|*                            /DFL/ DAYFILE LOG SYSTEM TITLE.
00516  M01S00514.secart  +++|
00517  M01S00515.secart  +++|      CHARACTER*20  DFVERSN
00518  M01S00516.secart  +++|*                            /DFL/ DAYFILE LOG SYSTEM VERSION.
00519  M01S00517.secart  +++|
00520  M01S00518.secart  +++|      CHARACTER*100 DFTXT
00521  M01S00519.secart  +++|*                            /DFL/ DAYFILE LOG CURRENT MESSAGE TEXT.
00522  M01S00520.secart  +++|
00523  M01S00521.secart  +++|      CHARACTER*1   DSU
00524  M01S00522.secart  +++|*                            /TRC/ DEADSTART UNIQUE PREFIX CODE.
00525  M01S00523.secart  +++|
00526  M01S00524.secart  +++|      CHARACTER*7   FN(MXJ)
00527  M01S00525.secart  +++|*                            /TRC/ FAMILY NAME COLUMN IN TRACE TABLE.
00528  M01S00526.secart  +++|
00529  M01S00527.secart  +++|      CHARACTER*40  HDR
00530  M01S00528.secart  +++|*                            /SYS/ PRINTOUT HEADER TEXT.
00531  M01S00529.secart  +++|
00532  M01S00530.secart  +++|      INTEGER       IPAGE
00533  M01S00531.secart  +++|*                            LOCAL PRINTOUT PAGE COUNTER.
00534  M01S00532.secart  +++|
00535  M01S00533.secart  +++|      INTEGER       JBLIMIT
00536  M01S00534.secart  +++|*                            /CTL/ UNIT JOB PRINTOUT MESSAGE LIMIT.
00537  M01S00535.secart  +++|
00538  M01S00536.secart  +++|      CHARACTER*1   JC(MXJ)
00539  M01S00537.secart  +++|*                            /TRC/ JOB CLASS COLUMN IN TRACE TABLE.
00540  M01S00538.secart  +++|
00541  M01S00539.secart  +++|      CHARACTER*7   JN(MXJ)
00542  M01S00540.secart  +++|*                            /TRC/ UJN COLUMN IN TRACE TABLE.
00543  M01S00541.secart  +++|
00544  M01S00542.secart  +++|      CHARACTER*6   JS(MXJ)
00545  M01S00543.secart  +++|*                            /TRC/ D.JSN COLUMN IN TRACE TABLE.
00546  M01S00544.secart  +++|
00547  M01S00545.secart  +++|      CHARACTER*6   JSN
00548  M01S00546.secart  +++|*                            TEMP - D.JSN VARIABLE.
00549  M01S00547.secart  +++|
00550  M01S00548.secart  +++|      CHARACTER*7   KWD(NK)
00551  M01S00549.secart  +++|*                            *SECART* COMMAND KEYWORD LIST.
00552  M01S00550.secart  +++|
00553  M01S00551.secart  +++|      CHARACTER*7   LFN(NK)
00554  M01S00552.secart  +++|*                            LFN LIST BUILT FROM *SECART* COMMAND.
00555  M01S00553.secart  +++|
00556  M01S00554.secart  +++|      CHARACTER*5   MK(MXJ)
00557  M01S00555.secart  +++|*                            /TRC/ JOB SELECTION MARKS IN TRACE TABLE.
00558  M01S00556.secart  +++|
00559  M01S00557.secart  +++|      INTEGER       ML(2,MXJ)
00560  M01S00558.secart  +++|*                            /CTL/ DFL/AFL MSG COUNTS FOR TRACE TABLE.
00561  M01S00559.secart  +++|
00562  M01S00560.secart  +++|      INTEGER       NJ
00563  M01S00561.secart  +++|*                            /CTL/ CURRENT NUMBER JOBS IN TRACE TABLE.
00564  M01S00562.secart  +++|
00565  M01S00563.secart  +++|      CHARACTER*7   P
00566  M01S00564.secart  +++|*                            TEMP USED IN *SECART* COMMAND PROCESSING.
00567  M01S00565.secart  +++|
00568  M01S00566.secart  +++|      CHARACTER*10  PGM
00569  M01S00567.secart  +++|*                            /SYS/ *SECART* VERSION ID FOR PRINTOUTS.
00570  M01S00568.secart  +++|
00571  M01S00569.secart  +++|      LOGICAL       PICKED
00572  M01S00570.secart  +++|*                            TEMP FLAG USED IN UNIT JOB PRINTOUT.
00573  M01S00571.secart  +++|
00574  M01S00572.secart  +++|      CHARACTER*10  RUNDT
00575  M01S00573.secart  +++|*                            /SYS/ *SECART* RUN DATE FOR PRINTOUTS.
00576  M01S00574.secart  +++|
00577  M01S00575.secart  +++|      CHARACTER*10  RUNTM
00578  M01S00576.secart  +++|*                            /SYS/ *SECART* RUN TIME FOR PRINTOUTS.
00579  M01S00577.secart  +++|
00580  M01S00578.secart  +++|      CHARACTER*3   SKY(12)
00581  M01S00579.secart  +++|*                            /SRT/ TRACE TABLE SORT KEYS.
00582  M01S00580.secart  +++|
00583  M01S00581.secart  +++|      CHARACTER*20  TE(MXJ)
00584  M01S00582.secart  +++|*                            /TRC/ JOB DATE/TIME END IN TRACE TABLE.
00585  M01S00583.secart  +++|
00586  M01S00584.secart  +++|      CHARACTER*10  TIME
00587  M01S00585.secart  +++|*                            TYPING FOR FTN5 FUNCTION.
00588  M01S00586.secart  +++|
00589  M01S00587.secart  +++|      CHARACTER*7   TN(MXJ)
00590  M01S00588.secart  +++|*                            /TRC/ JOB TERMINAL NAME IN TRACE TABLE.
00591  M01S00589.secart  +++|
00592  M01S00590.secart  +++|      CHARACTER*20  TS(MXJ)
00593  M01S00591.secart  +++|*                            /TRC/ JOB DATE/TIME START IN TRACE TABLE.
00594  M01S00592.secart  +++|
00595  M01S00593.secart  +++|      CHARACTER*6   UJSN
00596  M01S00594.secart  +++|*                            TEMP - D.JSN VARIABLE.
00597  M01S00595.secart  +++|
00598  M01S00596.secart  +++|      CHARACTER*7   UN(MXJ)
00599  M01S00597.secart  +++|*                            /TRC/ JOB USERNAME IN TRACE TABLE.
00600  M01S00598.secart  +++|
00601  M01S00599.secart  +++|      CHARACTER*7   V
00602  M01S00600.secart  +++|*                            TEMP - VALUE USED IN COMMAND PROCESSING.
00603  M01S00601.secart  +++|
00604  M01S00602.secart  +++|* ACCOUNT LOG SPECIFIC VARIABLES.
00605  M01S00603.secart  +++|
00606  M01S00604.secart  +++|      COMMON /ACL/  ACSDATE
00607  M01S00605.secart  +++|      COMMON /ACL/  ACSTIME
00608  M01S00606.secart  +++|      COMMON /ACL/  ACEDATE
00609  M01S00607.secart  +++|      COMMON /ACL/  ACETIME
00610  M01S00608.secart  +++|      COMMON /ACL/  ACTITLE
00611  M01S00609.secart  +++|      COMMON /ACL/  ACVERSN
00612  M01S00610.secart  +++|      COMMON /ACL/  ACTXT
00613  M01S00611.secart  +++|
00614  M01S00612.secart  +++|* GLOBAL NUMERIC/LOGICAL VARIABLES AND PARAMETERS.
00615  M01S00613.secart  +++|
00616  M01S00614.secart  +++|      COMMON /CTL/  NJ
00617  M01S00615.secart  +++|      COMMON /CTL/  ACIN
00618  M01S00616.secart  +++|      COMMON /CTL/  DFIN
00619  M01S00617.secart  +++|      COMMON /CTL/  ACEOF
00620  M01S00618.secart  +++|      COMMON /CTL/  DFEOF
00621  M01S00619.secart  +++|      COMMON /CTL/  ML
00622  M01S00620.secart  +++|      COMMON /CTL/  JBLIMIT
00623  M01S00621.secart  +++|
00624  M01S00622.secart  +++|* DAYFILE LOG SPECIFIC VARIABLES.
00625  M01S00623.secart  +++|
00626  M01S00624.secart  +++|      COMMON /DFL/  DFSDATE
00627  M01S00625.secart  +++|      COMMON /DFL/  DFSTIME
00628  M01S00626.secart  +++|      COMMON /DFL/  DFEDATE
00629  M01S00627.secart  +++|      COMMON /DFL/  DFETIME
00630  M01S00628.secart  +++|      COMMON /DFL/  DFTITLE
00631  M01S00629.secart  +++|      COMMON /DFL/  DFVERSN
00632  M01S00630.secart  +++|      COMMON /DFL/  DFTXT
00633  M01S00631.secart  +++|
00634  M01S00632.secart  +++|* JSN TRACE TABLE SORT PARAMETERS.
00635  M01S00633.secart  +++|
00636  M01S00634.secart  +++|      COMMON /SRT/  SKY
00637  M01S00635.secart  +++|
00638  M01S00636.secart  +++|* GLOBAL STRING VARIABLES.
00639  M01S00637.secart  +++|
00640  M01S00638.secart  +++|      COMMON /SYS/  HDR
00641  M01S00639.secart  +++|      COMMON /SYS/  PGM
00642  M01S00640.secart  +++|      COMMON /SYS/  RUNDT
00643  M01S00641.secart  +++|      COMMON /SYS/  RUNTM
00644  M01S00642.secart  +++|
00645  M01S00643.secart  +++|* JSN TRACE TABLE STORAGE.
00646  M01S00644.secart  +++|
00647  M01S00645.secart  +++|      COMMON /TRC/  DSU
00648  M01S00646.secart  +++|      COMMON /TRC/  MK
00649  M01S00647.secart  +++|      COMMON /TRC/  JN
00650  M01S00648.secart  +++|      COMMON /TRC/  JS
00651  M01S00649.secart  +++|      COMMON /TRC/  JC
00652  M01S00650.secart  +++|      COMMON /TRC/  TS
00653  M01S00651.secart  +++|      COMMON /TRC/  TE
00654  M01S00652.secart  +++|      COMMON /TRC/  FN
00655  M01S00653.secart  +++|      COMMON /TRC/  UN
00656  M01S00654.secart  +++|      COMMON /TRC/  TN
00657  M01S00655.secart  +++|
00658  M01S00656.secart  +++|      DATA ACEDTG  /' '/
00659  M01S00657.secart  +++|      DATA ACEOF   /.FALSE./
00660  M01S00658.secart  +++|      DATA ACIN    /0/
00661  M01S00659.secart  +++|      DATA ACSDTG  /' '/
00662  M01S00660.secart  +++|      DATA ACSYSID  /' '/
00663  M01S00661.secart  +++|      DATA DFEDTG  /' '/
00664  M01S00662.secart  +++|      DATA DFEOF   /.FALSE./
00665  M01S00663.secart  +++|      DATA DFIN    /0/
00666  M01S00664.secart  +++|      DATA DFSDTG  /' '/
00667  M01S00665.secart  +++|      DATA DFSYSID  /' '/
00668  M01S00666.secart  +++|      DATA DSU     /'A'/
00669  M01S00667.secart  +++|      DATA FN      /MXJ*' '/
00670  M01S00668.secart  +++|      DATA IPAGE   /1/
00671  M01S00669.secart  +++|      DATA JBLIMIT /99999/
00672  M01S00670.secart  +++|      DATA JC      /MXJ*' '/
00673  M01S00671.secart  +++|      DATA JN      /MXJ*' '/
00674  M01S00672.secart  +++|      DATA JS      /MXJ*' '/
00675  M01S00673.secart  +++|      DATA MK      /MXJ*' '/
00676  M01S00674.secart  +++|      DATA NJ      /0/
00677  M01S00675.secart  +++|      DATA PGM     /' SECART V1'/
00678  M01S00676.secart  +++|      DATA SKY     /12*'   '/
00679  M01S00677.secart  +++|      DATA TE      /MXJ*' '/
00680  M01S00678.secart  +++|      DATA TN      /MXJ*' '/
00681  M01S00679.secart  +++|      DATA TS      /MXJ*' '/
00682  M01S00680.secart  +++|      DATA UN      /MXJ*' '/
00683  M01S00681.secart  +++|      DATA (KWD(I) ,LFN(I)   ,DEF(I),I=1,NK)/
00684  M01S00682.secart  +++|     .      'D',   '0',      'DFLOG',
00685  M01S00683.secart  +++|     .      'A',   '0',      'ACLOG',
00686  M01S00684.secart  +++|     .      'C',   '0',      'COMBO',
00687  M01S00685.secart  +++|     .      'J',   '0',      'JOBS',
00688  M01S00686.secart  +++|     .      'M',   '0',      'MSGID',
00689  M01S00687.secart  +++|     .      'T',   '0',      'TRACE',
00690  M01S00688.secart  +++|     .      'I',   'INPUT',  'INPUT',
00691  M01S00689.secart  +++|     .      'L',   'OUTPUT', 'OUTPUT'/
00692  M01S00690.secart  +++|
00693  M01S00691.secart  +++|* ----------------------------------------------------------------------
00694  M01S00692.secart  +++|* INITIALIZATION PHASE
00695  M01S00693.secart  +++|* ----------------------------------------------------------------------
00696  M01S00694.secart  +++|
00697  M01S00695.secart  +++|      RUNDT=DATE()
00698  M01S00696.secart  +++|      RUNTM=TIME()
00699  M01S00697.secart  +++|
00700  M01S00698.secart  +++|* PROCESS EXECUTION PARAMETERS.
00701  M01S00699.secart  +++|
00702  M01S00700.secart  +++|  100 CALL GETPARM(P,V,J)
00703  M01S00701.secart  +++|      IF (J.LT.0) GOTO 130
00704  M01S00702.secart  +++|      DO 110 I=1,NK
00705  M01S00703.secart  +++|        IF (P.EQ.KWD(I)) GOTO 120
00706  M01S00704.secart  +++|  110 CONTINUE
00707  M01S00705.secart  +++|      CALL REMARK('   *** UNRECOGNIZED PARAMETER: '//P)
00708  M01S00706.secart  +++|      GOTO 100
00709  M01S00707.secart  +++|
00710  M01S00708.secart  +++|* SET TO VALUE OR DEFAULT.
00711  M01S00709.secart  +++|
00712  M01S00710.secart  +++|  120 IF (J.EQ.1) THEN
00713  M01S00711.secart  +++|        LFN(I)=DEF(I)
00714  M01S00712.secart  +++|      ELSE
00715  M01S00713.secart  +++|        IF (I.EQ.8 .AND. V.EQ.'0') THEN
00716  M01S00714.secart  +++|          CALL REMARK('   *** LIST FILE REQUIRED.')
00717  M01S00715.secart  +++|        ELSE
00718  M01S00716.secart  +++|          LFN(I)=V
00719  M01S00717.secart  +++|        ENDIF
00720  M01S00718.secart  +++|      ENDIF
00721  M01S00719.secart  +++|      GOTO 100
00722  M01S00720.secart  +++|
00723  M01S00721.secart  +++|* FIRST, OPEN LIST OUTPUT FILE.
00724  M01S00722.secart  +++|
00725  M01S00723.secart  +++|  130 OPEN (8,FILE=LFN(8))
00726  M01S00724.secart  +++|
00727  M01S00725.secart  +++|* SECOND, LOAD ACCOUNT LOG MESSAGE IDENTIFIERS, IF ANY,
00728  M01S00726.secart  +++|* BEFORE DIRECTIVES TO AVOID AMNESIA PROBLEM.
00729  M01S00727.secart  +++|
00730  M01S00728.secart  +++|      IF (LFN(5).NE.'0') THEN
00731  M01S00729.secart  +++|        OPEN (5,FILE=LFN(5))
00732  M01S00730.secart  +++|        CALL AMSLOAD
00733  M01S00731.secart  +++|        CLOSE (5)
00734  M01S00732.secart  +++|      ENDIF
00735  M01S00733.secart  +++|
00736  M01S00734.secart  +++|* THIRD, PROCESS DIRECTIVES, IF ANY.
00737  M01S00735.secart  +++|
00738  M01S00736.secart  +++|      IF (LFN(7).NE.'0') THEN
00739  M01S00737.secart  +++|        CALL REMARK(' READING DIRECTIVES...')
00740  M01S00738.secart  +++|        HDR='S E C A R T   D I R E C T I V E S '
00741  M01S00739.secart  +++|        WRITE (8,10) HDR,PGM,RUNDT,RUNTM,IPAGE
00742  M01S00740.secart  +++|  10    FORMAT('1',A40,3A10,' PG',I3)
00743  M01S00741.secart  +++|        OPEN (7,FILE=LFN(7))
00744  M01S00742.secart  +++|        CALL DIRECT
00745  M01S00743.secart  +++|        CLOSE (7)
00746  M01S00744.secart  +++|      ENDIF
00747  M01S00745.secart  +++|
00748  M01S00746.secart  +++|* FOURTH, LOAD PREVIOUS JSN TRACE TABLE, IF ANY.
00749  M01S00747.secart  +++|
00750  M01S00748.secart  +++|      IF (LFN(6).NE.'0') THEN
00751  M01S00749.secart  +++|        CALL REMARK(' LOADING TRACE TABLE...')
00752  M01S00750.secart  +++|        OPEN (6,FILE=LFN(6))
00753  M01S00751.secart  +++|        CALL JSNLOAD
00754  M01S00752.secart  +++|        CLOSE (6)
00755  M01S00753.secart  +++|      ENDIF
00756  M01S00754.secart  +++|
00757  M01S00755.secart  +++|* ----------------------------------------------------------------------
00758  M01S00756.secart  +++|* PHASE 1:  MERGE AND SCREEN RAW LOGS, BUILD TRACE TABLE AND PICK JOBS.
00759  M01S00757.secart  +++|* ----------------------------------------------------------------------
00760  M01S00758.secart  +++|
00761  M01S00759.secart  +++|
00762  M01S00760.secart  +++|* PREVIEW EACH LOG TO OBTAIN SYSID, START DATE/TIME GROUP.
00763  M01S00761.secart  +++|
00764  M01S00762.secart  +++|      IF (LFN(1).NE.'0') THEN
00765  M01S00763.secart  +++|        OPEN (1,FILE=LFN(1))
00766  M01S00764.secart  +++|        CALL DFSCAN(LFN(1),*140)
00767  M01S00765.secart  +++|      ELSE
00768  M01S00766.secart  +++|        DFEOF=.TRUE.
00769  M01S00767.secart  +++|      ENDIF
00770  M01S00768.secart  +++|
00771  M01S00769.secart  +++|* NOW, RAW ACCOUNT LOG.
00772  M01S00770.secart  +++|
00773  M01S00771.secart  +++|  140 IF (LFN(2).NE.'0') THEN
00774  M01S00772.secart  +++|        OPEN (2,FILE=LFN(2))
00775  M01S00773.secart  +++|        CALL ACSCAN(LFN(2),*150)
00776  M01S00774.secart  +++|      ELSE
00777  M01S00775.secart  +++|        ACEOF=.TRUE.
00778  M01S00776.secart  +++|      ENDIF
00779  M01S00777.secart  +++|
00780  M01S00778.secart  +++|* CHECK FOR NO RAW LOG INPUT.
00781  M01S00779.secart  +++|
00782  M01S00780.secart  +++|  150 IF (ACIN+DFIN.EQ.0) GOTO 210
00783  M01S00781.secart  +++|      IPAGE=IPAGE+1
00784  M01S00782.secart  +++|      HDR='S C R E E N E D   M E S S A G E S'
00785  M01S00783.secart  +++|      WRITE (8,10) HDR,PGM,RUNDT,RUNTM,IPAGE
00786  M01S00784.secart  +++|      IF (.NOT.DFEOF) WRITE (8,11) 'DAYFILE',DFSDTG,DFSYSID
00787  M01S00785.secart  +++|      IF (.NOT.ACEOF) WRITE (8,11) 'ACCOUNT',ACSDTG,ACSYSID
00788  M01S00786.secart  +++|  11  FORMAT(5X,A7,' FROM',A20 /5X,'SYSTEM ID:   ',A60)
00789  M01S00787.secart  +++|
00790  M01S00788.secart  +++|* IF BOTH LOGS, CHECK FOR SYSTEM ID OR DATE MISMATCHES.
00791  M01S00789.secart  +++|
00792  M01S00790.secart  +++|      IF (ACIN*DFIN.NE.0) THEN
00793  M01S00791.secart  +++|        IF (ACSYSID.NE.DFSYSID) THEN
00794  M01S00792.secart  +++|          CALL REMARK('   *** SYSTEM ID MISMATCH ***')
00795  M01S00793.secart  +++|          STOP '   *** SECART TERMINATED.'
00796  M01S00794.secart  +++|        ENDIF
00797  M01S00795.secart  +++|        IF (ACSDATE.NE.DFSDATE) THEN
00798  M01S00796.secart  +++|          CALL REMARK('   *** LOG DATES MISMATCH.')
00799  M01S00797.secart  +++|        ENDIF
00800  M01S00798.secart  +++|      ENDIF
00801  M01S00799.secart  +++|
00802  M01S00800.secart  +++|* ANNOTATED LOG DATA MUST BE WRITTEN TO COMBO LOG FILE.
00803  M01S00801.secart  +++|
00804  M01S00802.secart  +++|      IF (LFN(3).EQ.'0') LFN(3)='TAPE3'
00805  M01S00803.secart  +++|      OPEN (3,FILE=LFN(3))
00806  M01S00804.secart  +++|
00807  M01S00805.secart  +++|* RECORD SOURCE LOG IDENTIFICATIONS IN COMPOSITE LOG.
00808  M01S00806.secart  +++|
00809  M01S00807.secart  +++|      IF (DFSDATE.NE.' ')
00810  M01S00808.secart  +++|     .  WRITE (3,13) DFSTIME,'- DAYFILE   ',DFSDATE,DFSYSID
00811  M01S00809.secart  +++|      IF (ACSDATE.NE.' ')
00812  M01S00810.secart  +++|     .  WRITE (3,13) ACSTIME,' +ACCOUNT   ',ACSDATE,ACSYSID
00813  M01S00811.secart  +++|  13  FORMAT(A10,8X,A12,A10,A60)
00814  M01S00812.secart  +++|
00815  M01S00813.secart  +++|      CALL REMARK(' DIGESTING RAW LOG(S)...')
00816  M01S00814.secart  +++|      IF (DFEOF) GOTO 170
00817  M01S00815.secart  +++|
00818  M01S00816.secart  +++|* SYNCHRONIZE PROCESSING AND MERGE LOGS.
00819  M01S00817.secart  +++|
00820  M01S00818.secart  +++|  160 CALL DFMSG(*180)
00821  M01S00819.secart  +++|      IF (.NOT.ACEOF .AND. ACEDTG.LT.DFEDTG) GOTO 170
00822  M01S00820.secart  +++|      GOTO 160
00823  M01S00821.secart  +++|
00824  M01S00822.secart  +++|* BIAS TO CLUMP DFL MSGS BEFORE ACL MSGS IN SAME SECOND.
00825  M01S00823.secart  +++|* SOME ACCOUNT LOG MSID-S TWEAK DTG TO PRECEDE DAYFILE MSG.
00826  M01S00824.secart  +++|
00827  M01S00825.secart  +++|  170 CALL ACMSG(*190)
00828  M01S00826.secart  +++|      IF (.NOT.DFEOF .AND. DFEDTG.LE.ACEDTG) GOTO 160
00829  M01S00827.secart  +++|      GOTO 170
00830  M01S00828.secart  +++|
00831  M01S00829.secart  +++|* END-OF-FILE DECISIONS.
00832  M01S00830.secart  +++|
00833  M01S00831.secart  +++|  180 CLOSE (1)
00834  M01S00832.secart  +++|      IF (.NOT.ACEOF) GOTO 170
00835  M01S00833.secart  +++|      GOTO 200
00836  M01S00834.secart  +++|
00837  M01S00835.secart  +++|  190 CLOSE (2)
00838  M01S00836.secart  +++|      IF (.NOT.DFEOF) GOTO 160
00839  M01S00837.secart  +++|
00840  M01S00838.secart  +++|* COMPLETED MERGE PASS (BURP!).
00841  M01S00839.secart  +++|
00842  M01S00840.secart  +++|  200 CLOSE (3)
00843  M01S00841.secart  +++|
00844  M01S00842.secart  +++|* ----------------------------------------------------------------------
00845  M01S00843.secart  +++|* PHASE 2:  INTERMEDIATE PRINTOUTS.
00846  M01S00844.secart  +++|* ----------------------------------------------------------------------
00847  M01S00845.secart  +++|
00848  M01S00846.secart  +++|* PRINTOUT ACCOUNT MESSAGE STATISTICS.
00849  M01S00847.secart  +++|
00850  M01S00848.secart  +++|      IF (ACIN.GT.0) THEN
00851  M01S00849.secart  +++|        CALL REMARK(' ACCOUNT MSG STATISTICS...')
00852  M01S00850.secart  +++|        CALL AMSLIST
00853  M01S00851.secart  +++|      ENDIF
00854  M01S00852.secart  +++|
00855  M01S00853.secart  +++|* PRINTOUT JSN/USER/TERMINAL TRACE TABLE (SORT OPTIONAL).
00856  M01S00854.secart  +++|
00857  M01S00855.secart  +++|  210 IF (NJ.GT.0) THEN
00858  M01S00856.secart  +++|        CALL REMARK(' TRACE TABLE PRINTOUT...')
00859  M01S00857.secart  +++|
00860  M01S00858.secart  +++|* UNIT 6 FILE REQUIRED FOR TRACE TABLE OUTPUT.
00861  M01S00859.secart  +++|
00862  M01S00860.secart  +++|        IF (LFN(6).EQ.'0') LFN(6)='TAPE6'
00863  M01S00861.secart  +++|        OPEN (6,FILE=LFN(6))
00864  M01S00862.secart  +++|        OPEN (9,STATUS='SCRATCH')
00865  M01S00863.secart  +++|        CALL JSNLIST(LFN(6))
00866  M01S00864.secart  +++|        CLOSE (6)
00867  M01S00865.secart  +++|        CLOSE (9)
00868  M01S00866.secart  +++|      ENDIF
00869  M01S00867.secart  +++|
00870  M01S00868.secart  +++|* ----------------------------------------------------------------------
00871  M01S00869.secart  +++|* PHASE 3:  SORT COMPOSITE LOG BY UNIQUE JSN TO GROUP INTO UNIT JOBS.
00872  M01S00870.secart  +++|* ----------------------------------------------------------------------
00873  M01S00871.secart  +++|
00874  M01S00872.secart  +++|* SORT UNIT 3 COMPOSITE LOG, IF PRODUCED/PROVIDED, TO UNIT 4 JOBS FILE,
00875  M01S00873.secart  +++|* REQUIRED FOR OUTPUT.
00876  M01S00874.secart  +++|
00877  M01S00875.secart  +++|      IF (LFN(3).EQ.'0') GOTO 220
00878  M01S00876.secart  +++|      OPEN (3,FILE=LFN(3))
00879  M01S00877.secart  +++|      REWIND 3
00880  M01S00878.secart  +++|      IF (LFN(4).EQ.'0') LFN(4)='TAPE4'
00881  M01S00879.secart  +++|      OPEN (4,FILE=LFN(4))
00882  M01S00880.secart  +++|      CALL REMARK(' SORTING OUT JOBS...')
00883  M01S00881.secart  +++|      CALL SM5SORT(0)
00884  M01S00882.secart  +++|      CALL SM5ENR(ACIN+DFIN)
00885  M01S00883.secart  +++|      CALL SM5FROM(LFN(3))
00886  M01S00884.secart  +++|      CALL SM5TO(LFN(4))
00887  M01S00885.secart  +++|      CALL SM5KEY(11,6,'DISPLAY','A')
00888  M01S00886.secart  +++|      CALL SM5RETA('YES')
00889  M01S00887.secart  +++|      CALL SM5END
00890  M01S00888.secart  +++|      CLOSE (3)
00891  M01S00889.secart  +++|      CLOSE (4)
00892  M01S00890.secart  +++|
00893  M01S00891.secart  +++|* ----------------------------------------------------------------------
00894  M01S00892.secart  +++|* PHASE 4:  EXTRACT UNIT JOBS FROM JOBS LOG FOR PRINTOUT.
00895  M01S00893.secart  +++|* ----------------------------------------------------------------------
00896  M01S00894.secart  +++|
00897  M01S00895.secart  +++|  220 IF (LFN(4).EQ.'0') GOTO 250
00898  M01S00896.secart  +++|      OPEN (4,FILE=LFN(4))
00899  M01S00897.secart  +++|      REWIND 4
00900  M01S00898.secart  +++|      CALL REMARK(' EXTRACTING SELECTED JOBS...')
00901  M01S00899.secart  +++|      IPAGE=IPAGE+1
00902  M01S00900.secart  +++|      HDR='S E L E C T E D   J O B S'
00903  M01S00901.secart  +++|      WRITE (8,10) HDR,PGM,RUNDT,RUNTM,IPAGE
00904  M01S00902.secart  +++|      UJSN=' '
00905  M01S00903.secart  +++|
00906  M01S00904.secart  +++|  230 READ (4,14,END=240) DFTXT
00907  M01S00905.secart  +++|  14  FORMAT(A100)
00908  M01S00906.secart  +++|      JSN=DFTXT(11:16)
00909  M01S00907.secart  +++|      IF (JSN.NE.UJSN) THEN
00910  M01S00908.secart  +++|        UJSN=JSN
00911  M01S00909.secart  +++|        CALL JSNLOOK(JSN,N)
00912  M01S00910.secart  +++|        PICKED=MK(N).NE.'     '
00913  M01S00911.secart  +++|        IF (PICKED) THEN
00914  M01S00912.secart  +++|          WRITE (8,18)
00915  M01S00913.secart  +++|  18      FORMAT('0')
00916  M01S00914.secart  +++|          J=JBLIMIT
00917  M01S00915.secart  +++|        ENDIF
00918  M01S00916.secart  +++|      ENDIF
00919  M01S00917.secart  +++|
00920  M01S00918.secart  +++|* PRINTOUT JOB TILL SAMPLE LIMIT.
00921  M01S00919.secart  +++|
00922  M01S00920.secart  +++|      IF (PICKED) THEN
00923  M01S00921.secart  +++|        IF (J.GT.0) THEN
00924  M01S00922.secart  +++|          WRITE (8,14) DFTXT
00925  M01S00923.secart  +++|          J=J-1
00926  M01S00924.secart  +++|          IF (J.EQ.0) WRITE (8,*)
00927  M01S00925.secart  +++|     .      '  ========= S A M P L E   L I M I T ========='
00928  M01S00926.secart  +++|        ENDIF
00929  M01S00927.secart  +++|      ENDIF
00930  M01S00928.secart  +++|      GOTO 230
00931  M01S00929.secart  +++|
00932  M01S00930.secart  +++|  240 CLOSE (4)
00933  M01S00931.secart  +++|
00934  M01S00932.secart  +++|* FINISHED.
00935  M01S00933.secart  +++|
00936  M01S00934.secart  +++|  250 CALL REMARK(' SECART COMPLETED.')
00937  M01S00935.secart  +++|      CLOSE (8)
00938  M01S00936.secart  +++|      END
00939  M01S00937.secart  +++|
00940  M01S00938.secart  +++|* ---------------------------------------------------------------------
00941  M01S00939.secart  +++|      SUBROUTINE DIRECT
00942  M01S00940.secart  +++|**        DIRECT - SECART DIRECTIVES PROCESSING.
00943  M01S00941.secart  +++|*
00944  M01S00942.secart  +++|*         THIS MODULE HANDLES ALL ASPECTS OF DIRECTIVES PROCESSING AND
00945  M01S00943.secart  +++|*         PROVIDES MULTIPLE ENTRY POINT FOR PURPOSES SUCH AS: ACCEPTING
00946  M01S00944.secart  +++|*         *SECART* DIRECTIVES DURING INITIALIZATION PHASE AND STORING
00947  M01S00945.secart  +++|*         SELECTION ARGUMENTS IN INTERNAL ARRAYS, MARKING ACCOUNT LOG
00948  M01S00946.secart  +++|*         MESSAGE ID-S FOR PRINTOUT SELECTION, AND CHECKING LOG DATA
00949  M01S00947.secart  +++|*         AGAINST SELECTION ARGUMENTS DURING RAW LOGS PROCESSING.
00950  M01S00948.secart  +++|
00951  M01S00949.secart  +++|
00952  M01S00950.secart  +++|      IMPLICIT INTEGER(A-Z)
00953  M01S00951.secart  +++|      PARAMETER (MXJ=1000)
00954  M01S00952.secart  +++|*                            SIZE OF JSN TRACE TABLE.
00955  M01S00953.secart  +++|
00956  M01S00954.secart  +++|      PARAMETER (MXP=50)
00957  M01S00955.secart  +++|*                            SIZE OF DIRECTIVE ARGUMENT TABLES.
00958  M01S00956.secart  +++|
00959  M01S00957.secart  +++|      LOGICAL       ACEOF
00960  M01S00958.secart  +++|*                            /CTL/ ACCOUNT LOG EOF FLAG.
00961  M01S00959.secart  +++|
00962  M01S00960.secart  +++|      INTEGER       ACIN
00963  M01S00961.secart  +++|*                            /CTL/ ACCOUNT LOG MESSAGE COUNTER.
00964  M01S00962.secart  +++|
00965  M01S00963.secart  +++|      LOGICAL       DFEOF
00966  M01S00964.secart  +++|*                            /CTL/ DAYFILE LOG EOF FLAG.
00967  M01S00965.secart  +++|
00968  M01S00966.secart  +++|      INTEGER       DFIN
00969  M01S00967.secart  +++|*                            /CTL/ DAYFILE LOG MESSAGE COUNTER.
00970  M01S00968.secart  +++|
00971  M01S00969.secart  +++|      CHARACTER*80  DIR
00972  M01S00970.secart  +++|*                            *SECART* DIRECTIVE TEXT STRING.
00973  M01S00971.secart  +++|
00974  M01S00972.secart  +++|      LOGICAL       ERR
00975  M01S00973.secart  +++|*                            DIRECTIVE ERROR(S) FLAG.
00976  M01S00974.secart  +++|
00977  M01S00975.secart  +++|      CHARACTER*10  ETM
00978  M01S00976.secart  +++|*                            ARG - MESSAGE TIMESTAMP.
00979  M01S00977.secart  +++|
00980  M01S00978.secart  +++|      CHARACTER*7   FAM(MXP)
00981  M01S00979.secart  +++|*                            USER= DIRECTIVE FAMILYNAME ARGUMENTS.
00982  M01S00980.secart  +++|
00983  M01S00981.secart  +++|      CHARACTER*7   FAMILY
00984  M01S00982.secart  +++|*                            TEMP - FAMILYNAME VARIABLE.
00985  M01S00983.secart  +++|
00986  M01S00984.secart  +++|      CHARACTER*7   FN
00987  M01S00985.secart  +++|*                            ARG - FAMILYNAME TO CHECK.
00988  M01S00986.secart  +++|
00989  M01S00987.secart  +++|      LOGICAL       HIT
00990  M01S00988.secart  +++|*                            ARG - FLAG RETURNED TO SHOW SELECTION.
00991  M01S00989.secart  +++|
00992  M01S00990.secart  +++|      INTEGER       ITX(MXP)
00993  M01S00991.secart  +++|*                            DMSG= DIRECTIVE CHARACTER START POSITIONS.
00994  M01S00992.secart  +++|
00995  M01S00993.secart  +++|      INTEGER       IW
00996  M01S00994.secart  +++|*                            LOCAL - CURRENT TIME WINDOW INDEX.
00997  M01S00995.secart  +++|
00998  M01S00996.secart  +++|      INTEGER       JBLIMIT
00999  M01S00997.secart  +++|*                            /CTL/ UNIT JOB PRINTOUT MESSAGE LIMIT.
01000  M01S00998.secart  +++|
01001  M01S00999.secart  +++|      CHARACTER*7   JN
01002  M01S01000.secart  +++|*                            ARG - JOBNAME TO CHECK.
01003  M01S01001.secart  +++|
01004  M01S01002.secart  +++|      CHARACTER*7   JOBNAME
01005  M01S01003.secart  +++|*                            TEMP - JOBNAME VARIABLE.
01006  M01S01004.secart  +++|
01007  M01S01005.secart  +++|      CHARACTER*6   JS
01008  M01S01006.secart  +++|*                            ARG - JSN TO CHECK.
01009  M01S01007.secart  +++|
01010  M01S01008.secart  +++|      CHARACTER*6   JSN(MXP)
01011  M01S01009.secart  +++|*                            JSN= DIRECTIVE ARGUMENTS.
01012  M01S01010.secart  +++|
01013  M01S01011.secart  +++|      INTEGER       LTX(MXP)
01014  M01S01012.secart  +++|*                            DMSG= DIRECTIVE LAST CHARACTER POSITIONS.
01015  M01S01013.secart  +++|
01016  M01S01014.secart  +++|      CHARACTER*4   MID
01017  M01S01015.secart  +++|*                            TEMP - FOR AMSG= DIRECTIVE MSG ID.
01018  M01S01016.secart  +++|
01019  M01S01017.secart  +++|      CHARACTER*5   MK
01020  M01S01018.secart  +++|*                            ARG - TRACE TABLE MARKS TO BE UPDATED.
01021  M01S01019.secart  +++|
01022  M01S01020.secart  +++|      INTEGER       ML(2,MXJ)
01023  M01S01021.secart  +++|*                            /CTL/ DFL/AFL MSG COUNTS FOR TRACE TABLE.
01024  M01S01022.secart  +++|
01025  M01S01023.secart  +++|      CHARACTER*40  MTX(MXP)
01026  M01S01024.secart  +++|*                            DMSG= DIRECTIVE MESSAGE STRINGS.
01027  M01S01025.secart  +++|
01028  M01S01026.secart  +++|      INTEGER       NJ
01029  M01S01027.secart  +++|*                            /CTL/ CURRENT NUMBER JOBS IN TRACE TABLE.
01030  M01S01028.secart  +++|
01031  M01S01029.secart  +++|      INTEGER       NM
01032  M01S01030.secart  +++|*                            NUMBER OF DMSG= ARGUMENTS STORED.
01033  M01S01031.secart  +++|
01034  M01S01032.secart  +++|      INTEGER       NN
01035  M01S01033.secart  +++|*                            NUMBER OF UJN= ARGUMENTS STORED.
01036  M01S01034.secart  +++|
01037  M01S01035.secart  +++|      INTEGER       NP
01038  M01S01036.secart  +++|*                            NUMBER OF UJN= ARGUMENTS STORED.
01039  M01S01037.secart  +++|
01040  M01S01038.secart  +++|      INTEGER       NS
01041  M01S01039.secart  +++|*                            NUMBER OF JSN= ARGUMENTS STORED.
01042  M01S01040.secart  +++|
01043  M01S01041.secart  +++|      INTEGER       NT
01044  M01S01042.secart  +++|*                            NUMBER OF TRM= ARGUMENTS STORED.
01045  M01S01043.secart  +++|
01046  M01S01044.secart  +++|      INTEGER       NU
01047  M01S01045.secart  +++|*                            NUMBER OF USER= ARGUMENTS STORED.
01048  M01S01046.secart  +++|
01049  M01S01047.secart  +++|      CHARACTER*3   SKY(12)
01050  M01S01048.secart  +++|*                            /SRT/ TRACE TABLE SORT KEYS.
01051  M01S01049.secart  +++|
01052  M01S01050.secart  +++|      CHARACTER*7   TERMINL
01053  M01S01051.secart  +++|*                            TEMP - TRM= VARIABLE.
01054  M01S01052.secart  +++|
01055  M01S01053.secart  +++|      CHARACTER*10  TME(MXP)
01056  M01S01054.secart  +++|*                            TIME= DIRECTIVE TIME END ARGUMENTS.
01057  M01S01055.secart  +++|
01058  M01S01056.secart  +++|      CHARACTER*10  TMS(MXP)
01059  M01S01057.secart  +++|*                            TIME= DIRECTIVE TIME START ARGUMENTS.
01060  M01S01058.secart  +++|
01061  M01S01059.secart  +++|      CHARACTER*7   TN
01062  M01S01060.secart  +++|*                            ARG - TERMINAL ID TO CHECK.
01063  M01S01061.secart  +++|
01064  M01S01062.secart  +++|      CHARACTER*7   TRM(MXP)
01065  M01S01063.secart  +++|*                            TRM= DIRECTIVE ARGUMENTS.
01066  M01S01064.secart  +++|
01067  M01S01065.secart  +++|      CHARACTER*80  TXT
01068  M01S01066.secart  +++|*                            ARG - MESSAGE TEXT TO CHECK.
01069  M01S01067.secart  +++|
01070  M01S01068.secart  +++|      CHARACTER*7   UJN(MXP)
01071  M01S01069.secart  +++|*                            UJN= DIRECTIVE ARGUMENTS.
01072  M01S01070.secart  +++|
01073  M01S01071.secart  +++|      CHARACTER*7   UN
01074  M01S01072.secart  +++|*                            ARG - USERNAME TO CHECK.
01075  M01S01073.secart  +++|
01076  M01S01074.secart  +++|      CHARACTER*7   USER
01077  M01S01075.secart  +++|*                            TEMP - USERNAME VARIABLE.
01078  M01S01076.secart  +++|
01079  M01S01077.secart  +++|      CHARACTER*7   USR(MXP)
01080  M01S01078.secart  +++|*                            USER= DIRECTIVE ARGUMENTS.
01081  M01S01079.secart  +++|
01082  M01S01080.secart  +++|      LOGICAL       WINDOW
01083  M01S01081.secart  +++|*                            FLAG TO REMEMBER TIME WINDOW IS OPEN.
01084  M01S01082.secart  +++|
01085  M01S01083.secart  +++|
01086  M01S01084.secart  +++|* GLOBAL NUMERIC/LOGICAL VARIABLES AND PARAMETERS.
01087  M01S01085.secart  +++|
01088  M01S01086.secart  +++|      COMMON /CTL/  NJ
01089  M01S01087.secart  +++|      COMMON /CTL/  ACIN
01090  M01S01088.secart  +++|      COMMON /CTL/  DFIN
01091  M01S01089.secart  +++|      COMMON /CTL/  ACEOF
01092  M01S01090.secart  +++|      COMMON /CTL/  DFEOF
01093  M01S01091.secart  +++|      COMMON /CTL/  ML
01094  M01S01092.secart  +++|      COMMON /CTL/  JBLIMIT
01095  M01S01093.secart  +++|
01096  M01S01094.secart  +++|* JSN TRACE TABLE SORT PARAMETERS.
01097  M01S01095.secart  +++|
01098  M01S01096.secart  +++|      COMMON /SRT/  SKY
01099  M01S01097.secart  +++|
01100  M01S01098.secart  +++|      DATA FAM      /MXP*' '/
01101  M01S01099.secart  +++|      DATA ITX      /MXP*0/
01102  M01S01100.secart  +++|      DATA JSN      /MXP*' '/
01103  M01S01101.secart  +++|      DATA LTX      /MXP*0/
01104  M01S01102.secart  +++|      DATA MTX      /MXP*' '/
01105  M01S01103.secart  +++|      DATA NM       /0/
01106  M01S01104.secart  +++|      DATA NN       /0/
01107  M01S01105.secart  +++|      DATA NP       /0/
01108  M01S01106.secart  +++|      DATA NS       /0/
01109  M01S01107.secart  +++|      DATA NT       /0/
01110  M01S01108.secart  +++|      DATA NU       /0/
01111  M01S01109.secart  +++|      DATA TME      /MXP*' '/
01112  M01S01110.secart  +++|      DATA TMS      /MXP*' '/
01113  M01S01111.secart  +++|      DATA TRM      /MXP*' '/
01114  M01S01112.secart  +++|      DATA UJN      /MXP*' '/
01115  M01S01113.secart  +++|      DATA USR      /MXP*' '/
01116  M01S01114.secart  +++|
01117  M01S01115.secart  +++|
01118  M01S01116.secart  +++|**        ENTRY -  CALL DIRECT  [NO ARGUMENTS].
01119  M01S01117.secart  +++|*                  UNIT 7 FILE CONTAINS DIRECTIVES INPUT.
01120  M01S01118.secart  +++|*
01121  M01S01119.secart  +++|*         EXIT -   UNIT 8 FILE CONTAINS PRINTOUT OF DIRECTIVES.
01122  M01S01120.secart  +++|*                  ARRAYS WITHIN MODULE CONTAIN SELECTION ARGUMENTS.
01123  M01S01121.secart  +++|*
01124  M01S01122.secart  +++|*         ERROR -  MESSAGES IN PRINTOUT AND DAYFILE:
01125  M01S01123.secart  +++|*                  *** UNRECOGNIZED DIRECTIVE ***
01126  M01S01124.secart  +++|*                  *** TOO MANY ARGUMENTS, EXCESS IGNORED.
01127  M01S01125.secart  +++|*                  *** DIRECTIVE ERROR(S).  [DAYFILE]
01128  M01S01126.secart  +++|*
01129  M01S01127.secart  +++|*         USES -   /CTL/ TO SET JBLIMIT.
01130  M01S01128.secart  +++|*                  /SRT/ TO STORE JSN TRACE TABLE SORT KEYS IN SKY(I).
01131  M01S01129.secart  +++|*
01132  M01S01130.secart  +++|*         CALLS -  *PARSE* TO EXTRACT WORDS FROM DIRECTIVES.
01133  M01S01131.secart  +++|*                  *TMARG* TO EXTRACT TIME ARGUMENTS FROM DIRECTIVES.
01134  M01S01132.secart  +++|*                  *AMSMARK* TO MARK ACCOUNT MESSAGE ID-S FOR SELECTION.
01135  M01S01133.secart  +++|*
01136  M01S01134.secart  +++|*         NOTES -  ARRAYS FOR STORAGE OF SELECTION ARGUMENTS ARE ALL
01137  M01S01135.secart  +++|*                  SAME SIZE, DEFINED VIA PARAMETER FOR CODE SIMPLICITY.
01138  M01S01136.secart  +++|*
01139  M01S01137.secart  +++|*
01140  M01S01138.secart  +++|*         DIRECTIVES -
01141  M01S01139.secart  +++|*
01142  M01S01140.secart  +++|*         AMSG=MSID,...        SCAN ACCOUNT MSG IDENTIFIERS FOR PRINT.
01143  M01S01141.secart  +++|*
01144  M01S01142.secart  +++|*         DMSG=[NN:]TEXT_STR   SCAN DAYFILE TEXT STRING FOR PRINTOUT.
01145  M01S01143.secart  +++|*                              NN IS START CHR [1-80] W/IN TEXT FIELD.
01146  M01S01144.secart  +++|*
01147  M01S01145.secart  +++|*         TIME=HHMMSS[-HHMMSS] SCAN TIME PERIOD FOR PRINTOUT.  EITHER
01148  M01S01146.secart  +++|*          (OR) HH.MM.SS.      FORMAT ACCEPTED, SECONDS OPTIONAL, END
01149  M01S01147.secart  +++|*                              TIME OPTIONAL BUT REQUIRES '-' SEPARATOR.
01150  M01S01148.secart  +++|*
01151  M01S01149.secart  +++|*         TRACE=KEY,...        SORT KEYS FOR TRACE TABLE PRINTOUT.
01152  M01S01150.secart  +++|*                              VALID KEYS: UJN,JSN,JC,SDT,EDT,FM,UN,TRM.
01153  M01S01151.secart  +++|*
01154  M01S01152.secart  +++|*         USER=FAMILY,USER     SELECT JOBS FOR PRINTOUT BY USER NAME/
01155  M01S01153.secart  +++|*                              INDEX (VIA *SUI* COMMANDS).
01156  M01S01154.secart  +++|*                              USE BLANK OR OMIT FOR DEFAULT FAMILY.
01157  M01S01155.secart  +++|*                              USE * FOR WILDCARD MATCH.  (NOTE THAT
01158  M01S01156.secart  +++|*                              USER=*,* SELECTS EVERY JOB!!)
01159  M01S01157.secart  +++|*
01160  M01S01158.secart  +++|*         UJN=JOBNAME,...      SELECT JOBS FOR PRINTOUT BY JOBNAME.
01161  M01S01159.secart  +++|*
01162  M01S01160.secart  +++|*         JSN=[D.]AAAA,...     SELECT UNIT JOBS FOR PRINTOUT BY JSN.
01163  M01S01161.secart  +++|*                              OPTIONAL PREFIX IS D/S UNIQUE CODE USED
01164  M01S01162.secart  +++|*                              TO RESOLVE JSN AMBIGUITIES ACROSS LEVEL
01165  M01S01163.secart  +++|*                              ZERO DEADSTARTS.
01166  M01S01164.secart  +++|*
01167  M01S01165.secart  +++|*         TRM=TERMID,...       SELECT JOBS FOR PRINTOUT BY TERMINAL ID.
01168  M01S01166.secart  +++|*
01169  M01S01167.secart  +++|*         LIMIT=NNNN           LIMIT JOB PRINTOUTS TO NNNN LINES EACH.
01170  M01S01168.secart  +++|
01171  M01S01169.secart  +++|* EACH DIRECTIVE LINE.
01172  M01S01170.secart  +++|
01173  M01S01171.secart  +++|  100 READ (7,10,END=190) DIR
01174  M01S01172.secart  +++|  10  FORMAT(A80)
01175  M01S01173.secart  +++|      WRITE (8,*) '  //// ',DIR
01176  M01S01174.secart  +++|
01177  M01S01175.secart  +++|* DIRECTIVE:  AMSG=MSID,MSID...
01178  M01S01176.secart  +++|* ACCOUNT LOG MSG ID-S FOR SERIAL PRINTOUT.
01179  M01S01177.secart  +++|
01180  M01S01178.secart  +++|      IF (DIR(1:5).EQ.'AMSG=') THEN
01181  M01S01179.secart  +++|        I=6
01182  M01S01180.secart  +++|
01183  M01S01181.secart  +++|  110   CALL PARSE(DIR,I,MID)
01184  M01S01182.secart  +++|        IF (MID.NE.' ') THEN
01185  M01S01183.secart  +++|          CALL AMSMARK(MID,'*')
01186  M01S01184.secart  +++|          GOTO 110
01187  M01S01185.secart  +++|        ENDIF
01188  M01S01186.secart  +++|
01189  M01S01187.secart  +++|* DIRECTIVE:  DMSG=NN:TEXT STRING...[40].
01190  M01S01188.secart  +++|* DAYFILE LOG TEXT STRING FOR SERIAL PRINTOUT.
01191  M01S01189.secart  +++|
01192  M01S01190.secart  +++|      ELSE IF (DIR(1:5).EQ.'DMSG=') THEN
01193  M01S01191.secart  +++|        NM=NM+1
01194  M01S01192.secart  +++|        I=6
01195  M01S01193.secart  +++|        N=INDEX('0123456789',DIR(I:I))
01196  M01S01194.secart  +++|        IF (N.GT.0) THEN
01197  M01S01195.secart  +++|          ITX(NM)=N-1
01198  M01S01196.secart  +++|          I=I+1
01199  M01S01197.secart  +++|          N=INDEX('0123456789',DIR(I:I))
01200  M01S01198.secart  +++|          IF (N.GT.0) THEN
01201  M01S01199.secart  +++|            ITX(NM)=10*ITX(NM)+(N-1)
01202  M01S01200.secart  +++|            I=I+1
01203  M01S01201.secart  +++|          ENDIF
01204  M01S01202.secart  +++|
01205  M01S01203.secart  +++|* COLON REQUIRED WITH CHAR POSITION.
01206  M01S01204.secart  +++|
01207  M01S01205.secart  +++|          IF (DIR(I:I).EQ.':') THEN
01208  M01S01206.secart  +++|            I=I+1
01209  M01S01207.secart  +++|
01210  M01S01208.secart  +++|* OTHERWISE USE AS TEXT STRING.
01211  M01S01209.secart  +++|
01212  M01S01210.secart  +++|          ELSE
01213  M01S01211.secart  +++|            I=6
01214  M01S01212.secart  +++|            ITX(NM)=0
01215  M01S01213.secart  +++|          ENDIF
01216  M01S01214.secart  +++|        ENDIF
01217  M01S01215.secart  +++|        MTX(NM)=DIR(I:I+39)
01218  M01S01216.secart  +++|        LTX(NM)=1
01219  M01S01217.secart  +++|        DO 120 I=1,40
01220  M01S01218.secart  +++|          IF (MTX(NM)(I:I).NE.' ') LTX(NM)=I
01221  M01S01219.secart  +++|  120   CONTINUE
01222  M01S01220.secart  +++|
01223  M01S01221.secart  +++|* DIRECTIVE:  TIME=START[,END]
01224  M01S01222.secart  +++|* TIME PERIOD FOR SERIAL PRINTOUT.
01225  M01S01223.secart  +++|
01226  M01S01224.secart  +++|      ELSE IF (DIR(1:5).EQ.'TIME=') THEN
01227  M01S01225.secart  +++|        I=6
01228  M01S01226.secart  +++|        IF (NP.GE.MXP) GOTO 180
01229  M01S01227.secart  +++|        CALL TMARG(DIR,I,TMS(NP+1))
01230  M01S01228.secart  +++|        TME(NP)=TMS(NP)
01231  M01S01229.secart  +++|        IF (DIR(I-1:I-1).EQ.'-') CALL TMARG(DIR,I,TME(NP+1))
01232  M01S01230.secart  +++|        IF (TMS(NP+1).NE.' '.AND.TME(NP+1).NE.' ') NP=NP+1
01233  M01S01231.secart  +++|        WINDOW=.FALSE.
01234  M01S01232.secart  +++|
01235  M01S01233.secart  +++|* DIRECTIVE:  TRACE=KEY,KEY,...
01236  M01S01234.secart  +++|* SORT KEYS FOR TRACE TABLE PRINTOUT.
01237  M01S01235.secart  +++|* VALID KEYS: UJN,JSN,JC,SDT,EDT,FM,UN,TRM.
01238  M01S01236.secart  +++|
01239  M01S01237.secart  +++|      ELSE IF (DIR(1:6).EQ.'TRACE=') THEN
01240  M01S01238.secart  +++|        I=7
01241  M01S01239.secart  +++|        DO 130 N=1,12
01242  M01S01240.secart  +++|        CALL PARSE(DIR,I,SKY(N))
01243  M01S01241.secart  +++|  130   CONTINUE
01244  M01S01242.secart  +++|
01245  M01S01243.secart  +++|* DIRECTIVE:  USER=FAMILY,USER.
01246  M01S01244.secart  +++|* FAMILY & USERNAME PAIR W/WILDCARDS.
01247  M01S01245.secart  +++|
01248  M01S01246.secart  +++|      ELSE IF (DIR(1:5).EQ.'USER=') THEN
01249  M01S01247.secart  +++|        I=6
01250  M01S01248.secart  +++|        CALL PARSE(DIR,I,FAMILY)
01251  M01S01249.secart  +++|        CALL PARSE(DIR,I,USER)
01252  M01S01250.secart  +++|        IF (NU.GE.MXP) GOTO 180
01253  M01S01251.secart  +++|        NU=NU+1
01254  M01S01252.secart  +++|        FAM(NU)=FAMILY
01255  M01S01253.secart  +++|        USR(NU)=USER
01256  M01S01254.secart  +++|
01257  M01S01255.secart  +++|* DIRECTIVE:  UJN=JOBNAME,...
01258  M01S01256.secart  +++|* USER JOB NAME FOR JOB SELECTION.
01259  M01S01257.secart  +++|
01260  M01S01258.secart  +++|      ELSE IF (DIR(1:4).EQ.'UJN=') THEN
01261  M01S01259.secart  +++|        I=5
01262  M01S01260.secart  +++|  140   CALL PARSE(DIR,I,JOBNAME)
01263  M01S01261.secart  +++|        IF (JOBNAME.NE.' ') THEN
01264  M01S01262.secart  +++|          IF (NN.GE.MXP) GOTO 180
01265  M01S01263.secart  +++|          NN=NN+1
01266  M01S01264.secart  +++|          UJN(NN)=JOBNAME
01267  M01S01265.secart  +++|          GOTO 140
01268  M01S01266.secart  +++|        ENDIF
01269  M01S01267.secart  +++|
01270  M01S01268.secart  +++|* DIRECTIVE:  JSN=[D.]AAAA,...
01271  M01S01269.secart  +++|* JOB SEQUENCE NAME (AAAA) W/ OPTIONAL D/S UNIQUE CODE (D.).
01272  M01S01270.secart  +++|
01273  M01S01271.secart  +++|      ELSE IF (DIR(1:4).EQ.'JSN=') THEN
01274  M01S01272.secart  +++|        I=5
01275  M01S01273.secart  +++|  150   IF(NS.GE.MXP) GOTO 180
01276  M01S01274.secart  +++|        JSN(NS+1)=' '
01277  M01S01275.secart  +++|        CALL PARSE(DIR,I,JSN(NS+1)(3:6))
01278  M01S01276.secart  +++|        IF (JSN(NS+1).NE.' ') THEN
01279  M01S01277.secart  +++|          NS=NS+1
01280  M01S01278.secart  +++|          IF (JSN(NS)(2:2).EQ.' ' .AND. DIR(I-1:I-1).EQ.'.') THEN
01281  M01S01279.secart  +++|            JSN(NS)(1:1)=JSN(NS)(3:3)
01282  M01S01280.secart  +++|            JSN(NS)(2:2)='.'
01283  M01S01281.secart  +++|            CALL PARSE(DIR,I,JSN(NS)(3:6))
01284  M01S01282.secart  +++|          ELSE
01285  M01S01283.secart  +++|            JSN(NS)(1:2)='*.'
01286  M01S01284.secart  +++|          ENDIF
01287  M01S01285.secart  +++|          GOTO 150
01288  M01S01286.secart  +++|        ENDIF
01289  M01S01287.secart  +++|
01290  M01S01288.secart  +++|* DIRECTIVE:  TRM=TERMID,...
01291  M01S01289.secart  +++|* TERMINAL NAMES SELECTION DIRECTIVE.
01292  M01S01290.secart  +++|
01293  M01S01291.secart  +++|      ELSE IF (DIR(1:4).EQ.'TRM=') THEN
01294  M01S01292.secart  +++|        I=5
01295  M01S01293.secart  +++|
01296  M01S01294.secart  +++|  160   CALL PARSE(DIR,I,TERMINL)
01297  M01S01295.secart  +++|        IF (TERMINL.NE.' ') THEN
01298  M01S01296.secart  +++|          IF (NT.GE.MXP) GOTO 180
01299  M01S01297.secart  +++|          NT=NT+1
01300  M01S01298.secart  +++|          TRM(NT)=TERMINL
01301  M01S01299.secart  +++|          GOTO 160
01302  M01S01300.secart  +++|        ENDIF
01303  M01S01301.secart  +++|
01304  M01S01302.secart  +++|* DIRECTIVE:  LIMIT=NNNN
01305  M01S01303.secart  +++|* SAMPLE LIMIT FOR PRINTOUTS.
01306  M01S01304.secart  +++|
01307  M01S01305.secart  +++|      ELSE IF (DIR(1:6).EQ.'LIMIT=') THEN
01308  M01S01306.secart  +++|        I=7
01309  M01S01307.secart  +++|        JBLIMIT=0
01310  M01S01308.secart  +++|
01311  M01S01309.secart  +++|  170   N=ICHAR(DIR(I:I))-16
01312  M01S01310.secart  +++|        IF(N.GE.0.AND.N.LE.9.AND.I.LE.12) THEN
01313  M01S01311.secart  +++|          JBLIMIT=JBLIMIT*10+N
01314  M01S01312.secart  +++|          I=I+1
01315  M01S01313.secart  +++|          GOTO 170
01316  M01S01314.secart  +++|        ENDIF
01317  M01S01315.secart  +++|
01318  M01S01316.secart  +++|* UNRECOGNIZED DIRECTIVE VERB.
01319  M01S01317.secart  +++|
01320  M01S01318.secart  +++|      ELSE
01321  M01S01319.secart  +++|        WRITE (8,*) '  *** UNRECOGNIZED DIRECTIVE ***'
01322  M01S01320.secart  +++|        ERR=.TRUE.
01323  M01S01321.secart  +++|      ENDIF
01324  M01S01322.secart  +++|      GOTO 100
01325  M01S01323.secart  +++|
01326  M01S01324.secart  +++|* ARGUMENT TABLE FULL, IGNORE ADDITIONAL ARGUMENTS.
01327  M01S01325.secart  +++|
01328  M01S01326.secart  +++|  180 WRITE (8,*) '  *** TOO MANY ARGUMENTS, EXCESS IGNORED.'
01329  M01S01327.secart  +++|      ERR=.TRUE.
01330  M01S01328.secart  +++|      GOTO 100
01331  M01S01329.secart  +++|
01332  M01S01330.secart  +++|* FINISHED WITH DIRECTIVES, REPORT IF ERRORS.
01333  M01S01331.secart  +++|
01334  M01S01332.secart  +++|  190 IF (ERR) CALL REMARK('   *** DIRECTIVE ERROR(S).')
01335  M01S01333.secart  +++|      RETURN
01336  M01S01334.secart  +++|
01337  M01S01335.secart  +++|
01338  M01S01336.secart  +++|* ---------------------------------------------------------------------
01339  M01S01337.secart  +++|* SERIAL PRINTOUT SELECTIONS.
01340  M01S01338.secart  +++|* ---------------------------------------------------------------------
01341  M01S01339.secart  +++|
01342  M01S01340.secart  +++|**        ENTRY -  CALL TMCHECK(ETM,HIT)
01343  M01S01341.secart  +++|*                  *ETM* CONTAINS TIMESTAMP FROM LOG MESSAGE.
01344  M01S01342.secart  +++|*
01345  M01S01343.secart  +++|*         EXIT -   *HIT* SET TO .TRUE. IF *ETM* FALLS WITHIN ANY TIME
01346  M01S01344.secart  +++|*                  WINDOW, OTHERWISE UNCHANGED (AVOID CONFLICT WITH
01347  M01S01345.secart  +++|*                  OTHER SELECTION IN CALLING ROUTINE).
01348  M01S01346.secart  +++|*
01349  M01S01347.secart  +++|*         PRINTOUT (UNIT 8) MESSAGES:
01350  M01S01348.secart  +++|*                  ====== TIME WINDOW START ======
01351  M01S01349.secart  +++|*                  ====== TIME WINDOW END ======
01352  M01S01350.secart  +++|*
01353  M01S01351.secart  +++|*         NOTES -  THIS ROUTINE REMEMBERS INDEX OF OPEN TIME WINDOW IN
01354  M01S01352.secart  +++|*                  *IW* TO SHORTCUT SEARCH AND TEST.
01355  M01S01353.secart  +++|
01356  M01S01354.secart  +++|
01357  M01S01355.secart  +++|      ENTRY TMCHECK(ETM,HIT)
01358  M01S01356.secart  +++|
01359  M01S01357.secart  +++|      IF (NP.LE.0) RETURN
01360  M01S01358.secart  +++|
01361  M01S01359.secart  +++|* CHECK FOR END OF CURRENT WINDOW, IF ANY.
01362  M01S01360.secart  +++|
01363  M01S01361.secart  +++|      IF (WINDOW) THEN
01364  M01S01362.secart  +++|        IF (ETM.LE.TME(IW)) THEN
01365  M01S01363.secart  +++|          HIT=.TRUE.
01366  M01S01364.secart  +++|          RETURN
01367  M01S01365.secart  +++|        ELSE
01368  M01S01366.secart  +++|          WINDOW=.FALSE.
01369  M01S01367.secart  +++|          WRITE (8,*) '  ====== TIME WINDOW END ======'
01370  M01S01368.secart  +++|        ENDIF
01371  M01S01369.secart  +++|      ENDIF
01372  M01S01370.secart  +++|
01373  M01S01371.secart  +++|* CHECK FOR START OF ANY TIME WINDOW.
01374  M01S01372.secart  +++|
01375  M01S01373.secart  +++|      DO 200 I=1,NP
01376  M01S01374.secart  +++|        IF (ETM.LT.TMS(I) .OR. ETM.GT.TME(I)) GOTO 200
01377  M01S01375.secart  +++|        IW=I
01378  M01S01376.secart  +++|        WINDOW=.TRUE.
01379  M01S01377.secart  +++|        WRITE (8,*) '  ====== TIME WINDOW START ======'
01380  M01S01378.secart  +++|  200 CONTINUE
01381  M01S01379.secart  +++|      RETURN
01382  M01S01380.secart  +++|
01383  M01S01381.secart  +++|
01384  M01S01382.secart  +++|**        ENTRY -  CALL MSCHECK(TXT,HIT)
01385  M01S01383.secart  +++|*                  *TXT* IS MESSAGE FIELD FROM DAYFILE MESSAGE.
01386  M01S01384.secart  +++|*
01387  M01S01385.secart  +++|*         EXIT -   *HIT* SET TO .TRUE. IF *TXT* CONTAINS SELECTED TEXT
01388  M01S01386.secart  +++|*                  STRING, .FALSE. OTHERWISE.
01389  M01S01387.secart  +++|
01390  M01S01388.secart  +++|      ENTRY MSCHECK(TXT,HIT)
01391  M01S01389.secart  +++|
01392  M01S01390.secart  +++|      IF (NM.EQ.0) RETURN
01393  M01S01391.secart  +++|      DO 210 N=1,NM
01394  M01S01392.secart  +++|        IF (ITX(N).EQ.0) THEN
01395  M01S01393.secart  +++|          IF (INDEX(TXT,MTX(N)(1:LTX(N))).NE.0) HIT=.TRUE.
01396  M01S01394.secart  +++|        ELSE
01397  M01S01395.secart  +++|          IF (TXT(ITX(N):ITX(N)+LTX(N)-1).EQ.MTX(N)(1:LTX(N)))
01398  M01S01396.secart  +++|     .      HIT=.TRUE.
01399  M01S01397.secart  +++|        ENDIF
01400  M01S01398.secart  +++|        IF (HIT) RETURN
01401  M01S01399.secart  +++|  210 CONTINUE
01402  M01S01400.secart  +++|      RETURN
01403  M01S01401.secart  +++|
01404  M01S01402.secart  +++|
01405  M01S01403.secart  +++|* ---------------------------------------------------------------------
01406  M01S01404.secart  +++|* JOB SELECTION ENTRY POINTS.
01407  M01S01405.secart  +++|* CALLED DURING 1ST PASS TO TAG PICKS IN TRACE TABLE.
01408  M01S01406.secart  +++|* ---------------------------------------------------------------------
01409  M01S01407.secart  +++|
01410  M01S01408.secart  +++|
01411  M01S01409.secart  +++|**        ENTRY -  CALL PICKJSN(JS,MK)
01412  M01S01410.secart  +++|*                  *JS*  IS JSN FROM LOG MESSAGE.
01413  M01S01411.secart  +++|*                  *MK*  IS MARKS FIELD FOR JOB IN JSN TRACE TABLE.
01414  M01S01412.secart  +++|*
01415  M01S01413.secart  +++|*         EXIT -   *MK(1:1)* SET TO 'J' IF JSN WAS SELECTED.
01416  M01S01414.secart  +++|
01417  M01S01415.secart  +++|      ENTRY PICKJSN(JS,MK)
01418  M01S01416.secart  +++|
01419  M01S01417.secart  +++|* CHECK NEW JSN AGAINST EACH SELECTED JSN, IF ANY.
01420  M01S01418.secart  +++|
01421  M01S01419.secart  +++|      IF (NS.EQ.0) RETURN
01422  M01S01420.secart  +++|      DO 220 I=1,NS
01423  M01S01421.secart  +++|        IF ( (JS(3:6).EQ.JSN(I)(3:6)) .AND.
01424  M01S01422.secart  +++|     .    (JS(1:1).EQ.JSN(I)(1:1) .OR. JSN(I)(1:1).EQ.'*') )MK(1:1)='J'
01425  M01S01423.secart  +++|  220 CONTINUE
01426  M01S01424.secart  +++|      RETURN
01427  M01S01425.secart  +++|
01428  M01S01426.secart  +++|
01429  M01S01427.secart  +++|**        ENTRY -  CALL PICKUJN(JN,MK)
01430  M01S01428.secart  +++|*                  *JN*  IS UJN FROM LOG MESSAGE.
01431  M01S01429.secart  +++|*                  *MK*  IS MARKS FIELD FOR JOB IN JSN TRACE TABLE.
01432  M01S01430.secart  +++|*
01433  M01S01431.secart  +++|*         EXIT -   *MK(2:2)* SET TO 'N' IF UJN WAS SELECTED.
01434  M01S01432.secart  +++|
01435  M01S01433.secart  +++|      ENTRY PICKUJN(JN,MK)
01436  M01S01434.secart  +++|
01437  M01S01435.secart  +++|* CHECK EACH NEW UJN AGAINST EACH SELECTED UJN-S, IF ANY.
01438  M01S01436.secart  +++|
01439  M01S01437.secart  +++|      IF (NN.EQ.0) RETURN
01440  M01S01438.secart  +++|      DO 230 I=1,NN
01441  M01S01439.secart  +++|        IF (JN.EQ.UJN(I)) MK(2:2)='N'
01442  M01S01440.secart  +++|  230 CONTINUE
01443  M01S01441.secart  +++|      RETURN
01444  M01S01442.secart  +++|
01445  M01S01443.secart  +++|
01446  M01S01444.secart  +++|**        ENTRY -  CALL PICKUSR(FN,UN,MK)
01447  M01S01445.secart  +++|*                  *FN*  IS FAMILYNAME FROM LOG MESSAGE.
01448  M01S01446.secart  +++|*                  *UN*  IS USERNAME FROM LOG MESSAGE.
01449  M01S01447.secart  +++|*                  *MK*  IS MARKS FIELD FOR JOB IN JSN TRACE TABLE.
01450  M01S01448.secart  +++|*
01451  M01S01449.secart  +++|*         EXIT -   *MK(3:3)* SET TO 'U' IF FAMILY/USER WAS SELECTED.
01452  M01S01450.secart  +++|
01453  M01S01451.secart  +++|      ENTRY PICKUSR(FN,UN,MK)
01454  M01S01452.secart  +++|
01455  M01S01453.secart  +++|* CHECK NEW USERID AGAINST EACH SELECTED FAMILY AND USER PAIR.
01456  M01S01454.secart  +++|* WILDCARD (*) MATCHES ANYTHING.  BLANK FAMILY MATCHES DEFAULT FAMILY.
01457  M01S01455.secart  +++|
01458  M01S01456.secart  +++|      IF (NU.EQ.0) RETURN
01459  M01S01457.secart  +++|      DO 240 I=1,NU
01460  M01S01458.secart  +++|        IF ( (FAM(I).EQ.'*'.OR.FN.EQ.FAM(I)) .AND.
01461  M01S01459.secart  +++|     .    (USR(I).EQ.'*'.OR.USR(I).EQ.UN) ) MK(3:3)='U'
01462  M01S01460.secart  +++|  240 CONTINUE
01463  M01S01461.secart  +++|      RETURN
01464  M01S01462.secart  +++|
01465  M01S01463.secart  +++|
01466  M01S01464.secart  +++|**        ENTRY -  CALL PICKTRM(TN,MK)
01467  M01S01465.secart  +++|*                  *TN*  IS TERMINAL ID FROM LOG MESSAGE.
01468  M01S01466.secart  +++|*                  *MK*  IS MARKS FIELD FOR JOB IN JSN TRACE TABLE.
01469  M01S01467.secart  +++|*
01470  M01S01468.secart  +++|*         EXIT -   *MK(4:4)* SET TO 'T' IF TERMINAL ID WAS SELECTED.
01471  M01S01469.secart  +++|
01472  M01S01470.secart  +++|      ENTRY PICKTRM(TN,MK)
01473  M01S01471.secart  +++|
01474  M01S01472.secart  +++|* CHECK NEW TERMINAL ID AGAINST EACH SELECTED TERMINAL ID, IF ANY.
01475  M01S01473.secart  +++|
01476  M01S01474.secart  +++|      IF (NT.EQ.0) RETURN
01477  M01S01475.secart  +++|      DO 250 I=1,NT
01478  M01S01476.secart  +++|        IF (TN.EQ.TRM(I)) MK(4:4)='T'
01479  M01S01477.secart  +++|  250 CONTINUE
01480  M01S01478.secart  +++|      RETURN
01481  M01S01479.secart  +++|      END
01482  M01S01480.secart  +++|
01483  M01S01481.secart  +++|* ---------------------------------------------------------------------
01484  M01S01482.secart  +++|      SUBROUTINE TMARG(DIR,IS,TIMEX)
01485  M01S01483.secart  +++|**        TMARG -  EXPANDS TIME= DIRECTIVE ARGUMENTS TO FIXED FORMAT.
01486  M01S01484.secart  +++|*
01487  M01S01485.secart  +++|*         *TMARG* ACCEPTS TIME ARGUMENTS IN A VARIETY OF FORMATS AND
01488  M01S01486.secart  +++|*         EXPANDS INTO A CANONICAL FIXED FORMAT FOR USE IN TIME WINDOW
01489  M01S01487.secart  +++|*         SELECTION OF MESSAGES FOR SERIAL PRINTOUT.
01490  M01S01488.secart  +++|*
01491  M01S01489.secart  +++|*         ENTRY -  CALL TMARG(DIR,IS,TIMEX)
01492  M01S01490.secart  +++|*                  *DIR*   IS DIRECTIVE CONTAINING TIME= ARGS.
01493  M01S01491.secart  +++|*                  *IS*    IS STRING POSITION OF TIME ARGUMENT.
01494  M01S01492.secart  +++|*
01495  M01S01493.secart  +++|*         EXIT -   *TIMEX* WILL CONTAIN FIXED FORMAT TIME ARGUMENT.
01496  M01S01494.secart  +++|*
01497  M01S01495.secart  +++|*         ERROR -  PRINTOUT (UNIT 8):
01498  M01S01496.secart  +++|*                  *** TIME ARGUMENT ERROR.
01499  M01S01497.secart  +++|*
01500  M01S01498.secart  +++|*         NOTES -  FTN5 INDEX FUNCTION IS USED TO TEST FOR DIGITS AND
01501  M01S01499.secart  +++|*                  NUMERIC RANGE AT SAME TIME.  ACCEPTED FORMS ARE:
01502  M01S01500.secart  +++|*                    HOURS -    HH-    HH.        REQUIRED.
01503  M01S01501.secart  +++|*                    MINUTES -    MM-     MM.     OPTIONAL.
01504  M01S01502.secart  +++|*                    SECONDS -      SS-      SS.  OPTIONAL W/MINUTES.
01505  M01S01503.secart  +++|*                    ----------------------------
01506  M01S01504.secart  +++|*                    EXPANDED TO =>  ' HH.MM.SS.' CANONICAL FORM.
01507  M01S01505.secart  +++|
01508  M01S01506.secart  +++|      IMPLICIT INTEGER(A-Z)
01509  M01S01507.secart  +++|
01510  M01S01508.secart  +++|      CHARACTER*80  DIR
01511  M01S01509.secart  +++|*                            ARG - DIRECTIVE TEXT STRING.
01512  M01S01510.secart  +++|
01513  M01S01511.secart  +++|      INTEGER       IS
01514  M01S01512.secart  +++|*                            ARG - START POSITION FOR TIME ARGUMENT.
01515  M01S01513.secart  +++|
01516  M01S01514.secart  +++|      CHARACTER*10  TIMEX
01517  M01S01515.secart  +++|*                            ARG - FIXED FORMAT TIME RETURNED.
01518  M01S01516.secart  +++|
01519  M01S01517.secart  +++|* SET DEFAULT RESULT.
01520  M01S01518.secart  +++|
01521  M01S01519.secart  +++|      TIMEX=' 00.00.00.'
01522  M01S01520.secart  +++|
01523  M01S01521.secart  +++|* HOURS PORTION OF TIMESTAMP.
01524  M01S01522.secart  +++|
01525  M01S01523.secart  +++|      IF (INDEX('012',DIR(IS:IS)).NE.0) THEN
01526  M01S01524.secart  +++|        TIMEX(2:2)=DIR(IS:IS)
01527  M01S01525.secart  +++|        IS=IS+1
01528  M01S01526.secart  +++|      ELSE
01529  M01S01527.secart  +++|        GOTO 110
01530  M01S01528.secart  +++|      ENDIF
01531  M01S01529.secart  +++|
01532  M01S01530.secart  +++|      IF (INDEX('0123456789',DIR(IS:IS)).NE.0) THEN
01533  M01S01531.secart  +++|        TIMEX(3:3)=DIR(IS:IS)
01534  M01S01532.secart  +++|        IS=IS+1
01535  M01S01533.secart  +++|      ELSE
01536  M01S01534.secart  +++|        GOTO 110
01537  M01S01535.secart  +++|      ENDIF
01538  M01S01536.secart  +++|      IF (DIR(IS:IS).EQ.'.') IS=IS+1
01539  M01S01537.secart  +++|      IF (DIR(IS:IS).EQ.'-') GOTO 100
01540  M01S01538.secart  +++|
01541  M01S01539.secart  +++|* MINUTES PORTION OF TIMESTAMP.
01542  M01S01540.secart  +++|
01543  M01S01541.secart  +++|      IF (INDEX('012345',DIR(IS:IS)).NE.0) THEN
01544  M01S01542.secart  +++|        TIMEX(5:5)=DIR(IS:IS)
01545  M01S01543.secart  +++|        IS=IS+1
01546  M01S01544.secart  +++|      ELSE
01547  M01S01545.secart  +++|        GOTO 110
01548  M01S01546.secart  +++|      ENDIF
01549  M01S01547.secart  +++|
01550  M01S01548.secart  +++|      IF (INDEX('0123456789',DIR(IS:IS)).NE.0) THEN
01551  M01S01549.secart  +++|        TIMEX(6:6)=DIR(IS:IS)
01552  M01S01550.secart  +++|        IS=IS+1
01553  M01S01551.secart  +++|      ELSE
01554  M01S01552.secart  +++|        GOTO 110
01555  M01S01553.secart  +++|      ENDIF
01556  M01S01554.secart  +++|      IF (DIR(IS:IS).EQ.'.') IS=IS+1
01557  M01S01555.secart  +++|      IF (DIR(IS:IS).EQ.'-') GOTO 100
01558  M01S01556.secart  +++|
01559  M01S01557.secart  +++|* SECONDS PORTION OF TIMESTAMP.
01560  M01S01558.secart  +++|
01561  M01S01559.secart  +++|      IF (INDEX('012345',DIR(IS:IS)).NE.0) THEN
01562  M01S01560.secart  +++|        TIMEX(8:8)=DIR(IS:IS)
01563  M01S01561.secart  +++|        IS=IS+1
01564  M01S01562.secart  +++|      ELSE
01565  M01S01563.secart  +++|        GOTO 110
01566  M01S01564.secart  +++|      ENDIF
01567  M01S01565.secart  +++|
01568  M01S01566.secart  +++|      IF (INDEX('0123456789',DIR(IS:IS)).NE.0) THEN
01569  M01S01567.secart  +++|        TIMEX(9:9)=DIR(IS:IS)
01570  M01S01568.secart  +++|        IS=IS+1
01571  M01S01569.secart  +++|      ELSE
01572  M01S01570.secart  +++|        GOTO 110
01573  M01S01571.secart  +++|      ENDIF
01574  M01S01572.secart  +++|      IF (DIR(IS:IS).EQ.'.') IS=IS+1
01575  M01S01573.secart  +++|      IF (DIR(IS:IS).NE.'-') RETURN
01576  M01S01574.secart  +++|
01577  M01S01575.secart  +++|  100 IS=IS+1
01578  M01S01576.secart  +++|      RETURN
01579  M01S01577.secart  +++|
01580  M01S01578.secart  +++|* TIMESTAMP ARGUMENT ERROR.
01581  M01S01579.secart  +++|
01582  M01S01580.secart  +++|  110 WRITE (8,*) '  *** TIME ARGUMENT ERROR.'
01583  M01S01581.secart  +++|      TIMEX=' '
01584  M01S01582.secart  +++|      RETURN
01585  M01S01583.secart  +++|      END
01586  M01S01584.secart  +++|
01587  M01S01585.secart  +++|* ---------------------------------------------------------------------
01588  M01S01586.secart  +++|      SUBROUTINE DFSCAN(LFN,*)
01589  M01S01587.secart  +++|**        DFSCAN - DAYFILE LOG MESSAGE PROCESSING.
01590  M01S01588.secart  +++|*
01591  M01S01589.secart  +++|*         *DFSCAN* PROVIDES THE PRIMARY ROUTINES FOR PROCESSING DAYFILE
01592  M01S01590.secart  +++|*         LOG MESSAGES.  IT PROVIDES AN ENTRY POINT TO PRE-SCAN THE LOG
01593  M01S01591.secart  +++|*         FILE TO VALIDATE FORMAT AND EXTRACT CRITICAL SYSTEM ID AND
01594  M01S01592.secart  +++|*         DATE/TIME DATA, AND ANOTHER FOR ROUTINE PROCESSING OF EACH
01595  M01S01593.secart  +++|*         LOG MESSAGE IN THE SEQUENCE CONTROLLED BY *SECART*. ANNOTATED
01596  M01S01594.secart  +++|*         MESSAGES ARE WRITTEN TO COMPOSITE LOG FILE ON UNIT 3.
01597  M01S01595.secart  +++|
01598  M01S01596.secart  +++|
01599  M01S01597.secart  +++|      IMPLICIT INTEGER(A-Z)
01600  M01S01598.secart  +++|
01601  M01S01599.secart  +++|      PARAMETER     (MXJ=1000)
01602  M01S01600.secart  +++|*                            SIZE OF JSN TRACE TABLE.
01603  M01S01601.secart  +++|
01604  M01S01602.secart  +++|      EQUIVALENCE   (DFEDTG,DFEDATE)
01605  M01S01603.secart  +++|*                            /DFL/ DFEDTG*20 = DFEDATE*10//DFETIME*10.
01606  M01S01604.secart  +++|
01607  M01S01605.secart  +++|
01608  M01S01606.secart  +++|      LOGICAL       ACEOF
01609  M01S01607.secart  +++|*                            /CTL/ ACCOUNT LOG EOF FLAG.
01610  M01S01608.secart  +++|
01611  M01S01609.secart  +++|      INTEGER       ACIN
01612  M01S01610.secart  +++|*                            /CTL/ ACCOUNT LOG MESSAGE COUNTER.
01613  M01S01611.secart  +++|
01614  M01S01612.secart  +++|      LOGICAL       DFEOF
01615  M01S01613.secart  +++|*                            /CTL/ DAYFILE LOG EOF FLAG.
01616  M01S01614.secart  +++|
01617  M01S01615.secart  +++|      CHARACTER*10  DFEDATE
01618  M01S01616.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG END DATE.
01619  M01S01617.secart  +++|
01620  M01S01618.secart  +++|      CHARACTER*20  DFEDTG
01621  M01S01619.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG END DATE/TIME.
01622  M01S01620.secart  +++|
01623  M01S01621.secart  +++|      CHARACTER*10  DFETIME
01624  M01S01622.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG END TIME.
01625  M01S01623.secart  +++|
01626  M01S01624.secart  +++|      INTEGER       DFIN
01627  M01S01625.secart  +++|*                            /CTL/ DAYFILE LOG MESSAGE COUNTER.
01628  M01S01626.secart  +++|
01629  M01S01627.secart  +++|      CHARACTER*10  DFSDATE
01630  M01S01628.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG START DATE.
01631  M01S01629.secart  +++|
01632  M01S01630.secart  +++|      CHARACTER*10  DFSTIME
01633  M01S01631.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG START TIME.
01634  M01S01632.secart  +++|
01635  M01S01633.secart  +++|      CHARACTER*40  DFTITLE
01636  M01S01634.secart  +++|*                            /DFL/ DAYFILE SYSTEM TITLE.
01637  M01S01635.secart  +++|
01638  M01S01636.secart  +++|      CHARACTER*100 DFTXT
01639  M01S01637.secart  +++|*                            /DFL/ CURRENT DAYFILE MESSAGE TEXT.
01640  M01S01638.secart  +++|
01641  M01S01639.secart  +++|      CHARACTER*20  DFVERSN
01642  M01S01640.secart  +++|*                            /DFL/ SYSTEM VERSION (PART OF SYID).
01643  M01S01641.secart  +++|
01644  M01S01642.secart  +++|      CHARACTER*1   DSU
01645  M01S01643.secart  +++|*                            /TRC/ DEADSTART UNIQUE PREFIX CODE.
01646  M01S01644.secart  +++|
01647  M01S01645.secart  +++|      CHARACTER*7   FAM
01648  M01S01646.secart  +++|*                            TEMP - FAMILYNAME VARIABLE.
01649  M01S01647.secart  +++|
01650  M01S01648.secart  +++|      CHARACTER*7   FN(MXJ)
01651  M01S01649.secart  +++|*                            /TRC/ FAMILY NAME COLUMN IN TRACE TABLE.
01652  M01S01650.secart  +++|
01653  M01S01651.secart  +++|      INTEGER       JBLIMIT
01654  M01S01652.secart  +++|*                            /CTL/ UNIT JOB PRINTOUT MESSAGE LIMIT.
01655  M01S01653.secart  +++|
01656  M01S01654.secart  +++|      CHARACTER*1   JC(MXJ)
01657  M01S01655.secart  +++|*                            /TRC/ JOB CLASS COLUMN IN TRACE TABLE.
01658  M01S01656.secart  +++|
01659  M01S01657.secart  +++|      CHARACTER*1   JCL
01660  M01S01658.secart  +++|*                            TEMP - JOB CLASS VARIABLE.
01661  M01S01659.secart  +++|
01662  M01S01660.secart  +++|      CHARACTER*7   JN(MXJ)
01663  M01S01661.secart  +++|*                            /TRC/ UJN COLUMN IN TRACE TABLE.
01664  M01S01662.secart  +++|
01665  M01S01663.secart  +++|      CHARACTER*6   JS(MXJ)
01666  M01S01664.secart  +++|*                            /TRC/ D.JSN COLUMN IN TRACE TABLE.
01667  M01S01665.secart  +++|
01668  M01S01666.secart  +++|      CHARACTER*6   JSN
01669  M01S01667.secart  +++|*                            TEMP - JSN VARIABLE.
01670  M01S01668.secart  +++|
01671  M01S01669.secart  +++|      CHARACTER*7   LFN
01672  M01S01670.secart  +++|*                            ARG - LFN OF DAYFILE LOG FILE.
01673  M01S01671.secart  +++|
01674  M01S01672.secart  +++|      CHARACTER*5   MK(MXJ)
01675  M01S01673.secart  +++|*                            /TRC/ JOB SELECTION MARKS IN TRACE TABLE.
01676  M01S01674.secart  +++|
01677  M01S01675.secart  +++|      INTEGER       ML(2,MXJ)
01678  M01S01676.secart  +++|*                            /CTL/ DFL/AFL MSG COUNTS FOR TRACE TABLE.
01679  M01S01677.secart  +++|
01680  M01S01678.secart  +++|      INTEGER       NJ
01681  M01S01679.secart  +++|*                            /CTL/ CURRENT NUMBER JOBS IN TRACE TABLE.
01682  M01S01680.secart  +++|
01683  M01S01681.secart  +++|      CHARACTER*7   NUL
01684  M01S01682.secart  +++|*                            TEMP - FOR IGNORED WORD FROM *PARSE*.
01685  M01S01683.secart  +++|
01686  M01S01684.secart  +++|      LOGICAL       PRT
01687  M01S01685.secart  +++|*                            FLAG SET TO PRINTOUT DAYFILE MESSAGE.
01688  M01S01686.secart  +++|
01689  M01S01687.secart  +++|      INTEGER       SM
01690  M01S01688.secart  +++|*                            LOCAL COUNTER  FOR DFL SYSTEM MESSAGES.
01691  M01S01689.secart  +++|
01692  M01S01690.secart  +++|      CHARACTER*20  TE(MXJ)
01693  M01S01691.secart  +++|*                            /TRC/ JOB DATE/TIME END IN TRACE TABLE.
01694  M01S01692.secart  +++|
01695  M01S01693.secart  +++|      CHARACTER*7   TN(MXJ)
01696  M01S01694.secart  +++|*                            /TRC/ JOB TERMINAL NAME IN TRACE TABLE.
01697  M01S01695.secart  +++|
01698  M01S01696.secart  +++|      CHARACTER*20  TS(MXJ)
01699  M01S01697.secart  +++|*                            /TRC/ JOB DATE/TIME START IN TRACE TABLE.
01700  M01S01698.secart  +++|
01701  M01S01699.secart  +++|      CHARACTER*7   UN(MXJ)
01702  M01S01700.secart  +++|*                            /TRC/ JOB USERNAME IN TRACE TABLE.
01703  M01S01701.secart  +++|
01704  M01S01702.secart  +++|      CHARACTER*7   USR
01705  M01S01703.secart  +++|*                            TEMP - USERNAME VARIABLE.
01706  M01S01704.secart  +++|
01707  M01S01705.secart  +++|      CHARACTER*7   VERB
01708  M01S01706.secart  +++|*                            TEMP - COMMAND CRACKING VARIABLE.
01709  M01S01707.secart  +++|
01710  M01S01708.secart  +++|
01711  M01S01709.secart  +++|* GLOBAL NUMERIC/LOGICAL VARIABLES AND PARAMETERS.
01712  M01S01710.secart  +++|
01713  M01S01711.secart  +++|      COMMON /CTL/  NJ
01714  M01S01712.secart  +++|      COMMON /CTL/  ACIN
01715  M01S01713.secart  +++|      COMMON /CTL/  DFIN
01716  M01S01714.secart  +++|      COMMON /CTL/  ACEOF
01717  M01S01715.secart  +++|      COMMON /CTL/  DFEOF
01718  M01S01716.secart  +++|      COMMON /CTL/  ML
01719  M01S01717.secart  +++|      COMMON /CTL/  JBLIMIT
01720  M01S01718.secart  +++|
01721  M01S01719.secart  +++|* DAYFILE LOG SPECIFIC VARIABLES.
01722  M01S01720.secart  +++|
01723  M01S01721.secart  +++|      COMMON /DFL/  DFSDATE
01724  M01S01722.secart  +++|      COMMON /DFL/  DFSTIME
01725  M01S01723.secart  +++|      COMMON /DFL/  DFEDATE
01726  M01S01724.secart  +++|      COMMON /DFL/  DFETIME
01727  M01S01725.secart  +++|      COMMON /DFL/  DFTITLE
01728  M01S01726.secart  +++|      COMMON /DFL/  DFVERSN
01729  M01S01727.secart  +++|      COMMON /DFL/  DFTXT
01730  M01S01728.secart  +++|
01731  M01S01729.secart  +++|* JSN TRACE TABLE STORAGE.
01732  M01S01730.secart  +++|
01733  M01S01731.secart  +++|      COMMON /TRC/  DSU
01734  M01S01732.secart  +++|      COMMON /TRC/  MK
01735  M01S01733.secart  +++|      COMMON /TRC/  JN
01736  M01S01734.secart  +++|      COMMON /TRC/  JS
01737  M01S01735.secart  +++|      COMMON /TRC/  JC
01738  M01S01736.secart  +++|      COMMON /TRC/  TS
01739  M01S01737.secart  +++|      COMMON /TRC/  TE
01740  M01S01738.secart  +++|      COMMON /TRC/  FN
01741  M01S01739.secart  +++|      COMMON /TRC/  UN
01742  M01S01740.secart  +++|      COMMON /TRC/  TN
01743  M01S01741.secart  +++|
01744  M01S01742.secart  +++|      DATA SM/0/
01745  M01S01743.secart  +++|
01746  M01S01744.secart  +++|
01747  M01S01745.secart  +++|**        ENTRY -  CALL DFSCAN(LFN,*NNN)
01748  M01S01746.secart  +++|*                  *LFN* IS LFN OF DAYFILE LOG FILE.
01749  M01S01747.secart  +++|*                  *NNN  IS ALTERNATE EXIT STATEMENT NUMBER.
01750  M01S01748.secart  +++|*
01751  M01S01749.secart  +++|*         EXIT -   FILE REWOUND AND FIRST RECORD READ FOR PROCESSING.
01752  M01S01750.secart  +++|*
01753  M01S01751.secart  +++|*         ERROR -  ALTERNATE EXIT TAKEN IF FILE FAILS FORMAT TEST OR
01754  M01S01752.secart  +++|*                  EOF FOUND BEFORE FIRST 3 SYSJOB MESSAGES FOUND.
01755  M01S01753.secart  +++|*
01756  M01S01754.secart  +++|*         USES -   COMMON /CTL/ FOR GLOBAL VARIABLES DFEOF, DFIN.
01757  M01S01755.secart  +++|*                  COMMON /DFL/ FOR DAYFILE-SPECIFIC VARIABLES.
01758  M01S01756.secart  +++|*
01759  M01S01757.secart  +++|*         CALLS -  *LOGTEST* TO TEST LOG FORMAT, EXTRACT DATE/TIME.
01760  M01S01758.secart  +++|*
01761  M01S01759.secart  +++|*         NOTES -  DAYFILE LOG PRE-SCAN ROUTINE REQUIRES:
01762  M01S01760.secart  +++|*                  1) THAT FILE BE FORMATTED AS A RAW DAYFILE LOG.
01763  M01S01761.secart  +++|*                  2) FINDING A START DATE VIA -
01764  M01S01762.secart  +++|*                     A) 1ST RECORD DATE STAMP -OR-
01765  M01S01763.secart  +++|*                     B) DATE IN 1ST SYSJOB MESSAGE -OR-
01766  M01S01764.secart  +++|*                     C) A DEAD START MSG -OR-
01767  M01S01765.secart  +++|*                     D) AN HOURLY DATE STAMP MSG.
01768  M01S01766.secart  +++|*                  3) ESTABLISHING SYSTEM ID VIA -
01769  M01S01767.secart  +++|*                     A) TITLE IN 2ND SYSJOB MSG -AND-
01770  M01S01768.secart  +++|*                     B) VERSION IN 3RD SYSJOB MSG.
01771  M01S01769.secart  +++|*                  IF SUCCESSFUL, FILE WILL BE REWOUND AND FIRST RECORD
01772  M01S01770.secart  +++|*                  WILL BE READ IN ADVANCE TO START PROCESSING.
01773  M01S01771.secart  +++|
01774  M01S01772.secart  +++|      SM=0
01775  M01S01773.secart  +++|      DFEOF=.FALSE.
01776  M01S01774.secart  +++|
01777  M01S01775.secart  +++|* CHECK LOG FORMAT AND EXTRACT START [DATE]/TIME STAMPS.
01778  M01S01776.secart  +++|
01779  M01S01777.secart  +++|      CALL LOGTEST(1,DFTXT,DFEDATE,DFETIME,*130)
01780  M01S01778.secart  +++|      IF (DFETIME.EQ.' ') THEN
01781  M01S01779.secart  +++|        CALL REMARK('   *** '//LFN//' NOT RAW DAYFILE LOG.')
01782  M01S01780.secart  +++|        DFEOF=.TRUE.
01783  M01S01781.secart  +++|        RETURN 1
01784  M01S01782.secart  +++|      ENDIF
01785  M01S01783.secart  +++|
01786  M01S01784.secart  +++|* ACCEPT TIME, COUNT DATE STAMP RECORD AND REMEMBER TO SKIP OVER.
01787  M01S01785.secart  +++|
01788  M01S01786.secart  +++|      DFSTIME=DFETIME
01789  M01S01787.secart  +++|      IF (DFEDATE.NE.' ') DFIN=1
01790  M01S01788.secart  +++|      GOTO 110
01791  M01S01789.secart  +++|
01792  M01S01790.secart  +++|* READ NEXT DAYFILE LOG RECORD.
01793  M01S01791.secart  +++|
01794  M01S01792.secart  +++|  100 READ (1,10,END=130) DFTXT
01795  M01S01793.secart  +++|  10  FORMAT(A100)
01796  M01S01794.secart  +++|
01797  M01S01795.secart  +++|* SCAN FOR SYSJOB MESSAGES ONLY.
01798  M01S01796.secart  +++|
01799  M01S01797.secart  +++|  110 DFETIME=DFTXT(1:10)
01800  M01S01798.secart  +++|      IF (DFTXT(13:17).NE.'SYS S') GOTO 100
01801  M01S01799.secart  +++|
01802  M01S01800.secart  +++|* FIRST THREE SYSJOB MESSAGES HAVE SYSTEM DATE, TITLE, & VERSION.
01803  M01S01801.secart  +++|
01804  M01S01802.secart  +++|      SM=SM+1
01805  M01S01803.secart  +++|      IF (SM.EQ.1) THEN
01806  M01S01804.secart  +++|        L=INDEX(DFTXT,'/')
01807  M01S01805.secart  +++|        IF (L.GT.3 .AND. DFTXT(L+3:L+3).EQ.'/') THEN
01808  M01S01806.secart  +++|          DFEDATE=DFTXT(L-3:L+6)
01809  M01S01807.secart  +++|        ENDIF
01810  M01S01808.secart  +++|
01811  M01S01809.secart  +++|      ELSE IF (SM.EQ.2) THEN
01812  M01S01810.secart  +++|        DFTITLE=DFTXT(21:60)
01813  M01S01811.secart  +++|
01814  M01S01812.secart  +++|      ELSE IF (SM.EQ.3) THEN
01815  M01S01813.secart  +++|        DFVERSN=DFTXT(21:40)
01816  M01S01814.secart  +++|
01817  M01S01815.secart  +++|* OTHER SYSJOB MSG-S INCLUDE DEAD START DATE MESSAGE WITH DATE.
01818  M01S01816.secart  +++|
01819  M01S01817.secart  +++|      ELSE IF (DFTXT(32:41).EQ.'DEAD START') THEN
01820  M01S01818.secart  +++|        DFEDATE=DFTXT(21:30)
01821  M01S01819.secart  +++|
01822  M01S01820.secart  +++|* HOURLY LOG DATE MESSAGE.
01823  M01S01821.secart  +++|
01824  M01S01822.secart  +++|      ELSE IF (DFTXT(5:9).EQ.'00.00' .AND.
01825  M01S01823.secart  +++|     .         DFTXT(21:31).EQ.'SYSTEM DATE') THEN
01826  M01S01824.secart  +++|        DFEDATE=DFTXT(35:44)
01827  M01S01825.secart  +++|      ENDIF
01828  M01S01826.secart  +++|
01829  M01S01827.secart  +++|* ACCEPT START DATE, IF FOUND.
01830  M01S01828.secart  +++|
01831  M01S01829.secart  +++|      IF (DFSDATE.EQ.' ' .AND. DFEDATE.NE.' ') DFSDATE=DFEDATE
01832  M01S01830.secart  +++|
01833  M01S01831.secart  +++|* NEED DATE, SYSTEM TITLE AND VERSION TO PROCESS LOG.
01834  M01S01832.secart  +++|
01835  M01S01833.secart  +++|      IF (DFSDATE.EQ.' '.OR.DFTITLE.EQ.' '.OR.DFVERSN.EQ.' ') GOTO 100
01836  M01S01834.secart  +++|
01837  M01S01835.secart  +++|* REWIND FOR ROUTINE PROCESSING AND SKIP OVER DATE STAMP.
01838  M01S01836.secart  +++|
01839  M01S01837.secart  +++|      REWIND 1
01840  M01S01838.secart  +++|      IF (DFIN.EQ.1) READ (1,10,END=130) DFTXT
01841  M01S01839.secart  +++|      PRT=.FALSE.
01842  M01S01840.secart  +++|
01843  M01S01841.secart  +++|* DROP THROUGH TO READ FIRST USABLE MESSAGE.
01844  M01S01842.secart  +++|
01845  M01S01843.secart  +++|* ---------------------------------------------------------------------
01846  M01S01844.secart  +++|* ROUTINE DAYFILE MESSAGE PROCESSING.
01847  M01S01845.secart  +++|* ---------------------------------------------------------------------
01848  M01S01846.secart  +++|
01849  M01S01847.secart  +++|* GET MSG, COUNT & MARK AS TO SOURCE ('-' IN COL 19 = DAYFILE).
01850  M01S01848.secart  +++|
01851  M01S01849.secart  +++|  120 READ (1,10,END=130) DFTXT
01852  M01S01850.secart  +++|      DFIN=DFIN+1
01853  M01S01851.secart  +++|      DFTXT(19:19)='-'
01854  M01S01852.secart  +++|      DFETIME=DFTXT(1:10)
01855  M01S01853.secart  +++|      RETURN
01856  M01S01854.secart  +++|
01857  M01S01855.secart  +++|* EOF ALTERNATE EXIT.
01858  M01S01856.secart  +++|
01859  M01S01857.secart  +++|  130 DFEOF=.TRUE.
01860  M01S01858.secart  +++|      WRITE (8,*) '  === EOF DAYFILE LOG ',LFN,', ',DFIN,' MESSAGES'
01861  M01S01859.secart  +++|      RETURN 1
01862  M01S01860.secart  +++|
01863  M01S01861.secart  +++|**        ENTRY -  CALL DFMSG(*NNN)
01864  M01S01862.secart  +++|*                  *NNN IS ALTERNATE EXIT TAKEN WHEN DFEOF = .TRUE. AT
01865  M01S01863.secart  +++|*                       TIME OF CALL.
01866  M01S01864.secart  +++|*
01867  M01S01865.secart  +++|*         EXIT -   ANNOTATED DAYFILE MESSAGE IS WRITTEN TO COMPOSITE
01868  M01S01866.secart  +++|*                  LOG FILE ON UNIT 3 AND NEXT RECORD IS READ, OR
01869  M01S01867.secart  +++|*                  *DFEOF* IS SET .TRUE.
01870  M01S01868.secart  +++|*
01871  M01S01869.secart  +++|*         ERROR -  NONE.
01872  M01S01870.secart  +++|*
01873  M01S01871.secart  +++|*         PRINTOUT -
01874  M01S01872.secart  +++|*                  ANNOTATED COPIES OF CERTAIN DAYFILE LOG MESSAGES:
01875  M01S01873.secart  +++|*                  - LEVEL ZERO DEADSTART MESSAGES,
01876  M01S01874.secart  +++|*                  - ALL WITH TIMESTAMP WITHIN TIME WINDOW,
01877  M01S01875.secart  +++|*                  - ALL *SUI* MESSAGES,
01878  M01S01876.secart  +++|*                  - ALL CONSOLE OPERATOR COMMAND MESSAGES,
01879  M01S01877.secart  +++|*                  - ANY CONTAINING SELECTED TEXT STRING.
01880  M01S01878.secart  +++|*
01881  M01S01879.secart  +++|*         CALLS -  *JSNLVL0* TO UPDATE D/S UNIQUE JSN PREFIX CODE.
01882  M01S01880.secart  +++|*                  *TMCHECK* TO CHECK FOR TIME WINDOWS.
01883  M01S01881.secart  +++|*                  *JSNTRAK* TO COLLECT ATTRIBUTES IN JSN TRACE TABLE.
01884  M01S01882.secart  +++|*                  *PARSE* TO EXTRACT DATA ITEMS FROM LOG MESSAGES.
01885  M01S01883.secart  +++|*                  *PICKUSR* TO CHECK NEW USERIDS FOR SELECTION.
01886  M01S01884.secart  +++|*                  *MSCHECK* TO CHECK FOR SELECTED TEXT STRINGS.
01887  M01S01885.secart  +++|*
01888  M01S01886.secart  +++|*         USES -   COMMON /CTL/ FOR GLOBAL VARIABLES.
01889  M01S01887.secart  +++|*                  COMMON /DFL/ FOR DAYFILE-SPECIFIC VARIABLES.
01890  M01S01888.secart  +++|*                  COMMON /TRC/ FOR JSN TRACE TABLE DATA.
01891  M01S01889.secart  +++|*
01892  M01S01890.secart  +++|*         NOTES -  THIS ROUTINE PROCESSES MESSAGE READ DURING PREVIOUS
01893  M01S01891.secart  +++|*                  CALL AND THEN READS NEXT RECORD BEFORE RETURNING.
01894  M01S01892.secart  +++|*                  THIS ALLOWS *SECART* TO SEE TIMESTAMP OF NEXT RECORD
01895  M01S01893.secart  +++|*                  AND DECIDE WHEN TO PROCESS VIS A VIS ACCOUNT LOG.
01896  M01S01894.secart  +++|
01897  M01S01895.secart  +++|      ENTRY DFMSG(*)
01898  M01S01896.secart  +++|
01899  M01S01897.secart  +++|* WATCH FOR SYSJOB MSGS W/ DATE.
01900  M01S01898.secart  +++|
01901  M01S01899.secart  +++|      IF (DFTXT(13:17).EQ.'SYS S') THEN
01902  M01S01900.secart  +++|
01903  M01S01901.secart  +++|* SYSJOB HOURLY DATE MESSAGES.
01904  M01S01902.secart  +++|
01905  M01S01903.secart  +++|        IF (DFTXT(5:9).EQ.'00.00' .AND.
01906  M01S01904.secart  +++|     .      DFTXT(21:31).EQ.'SYSTEM DATE') THEN
01907  M01S01905.secart  +++|          DFEDATE=DFTXT(35:44)
01908  M01S01906.secart  +++|
01909  M01S01907.secart  +++|* SYSJOB DEAD START MESSAGE W/ DATE.
01910  M01S01908.secart  +++|
01911  M01S01909.secart  +++|        ELSE IF (DFTXT(32:41).EQ.'DEAD START') THEN
01912  M01S01910.secart  +++|          DFEDATE=DFTXT(21:30)
01913  M01S01911.secart  +++|
01914  M01S01912.secart  +++|* LEVEL 0 REQUIRES UPDATE D/S UNIQUE CODE.
01915  M01S01913.secart  +++|
01916  M01S01914.secart  +++|          IF (DFTXT(43:51).EQ.'LEVEL  0.') CALL JSNLVL0
01917  M01S01915.secart  +++|        ENDIF
01918  M01S01916.secart  +++|
01919  M01S01917.secart  +++|* DETECT SPECIAL JSN FOR LEVEL 0 DEADSTART TOO.
01920  M01S01918.secart  +++|
01921  M01S01919.secart  +++|      ELSE IF (DFTXT(13:17).EQ.'AAAAA') THEN
01922  M01S01920.secart  +++|        PRT=.TRUE.
01923  M01S01921.secart  +++|        CALL JSNLVL0
01924  M01S01922.secart  +++|      ENDIF
01925  M01S01923.secart  +++|
01926  M01S01924.secart  +++|* INSERT D/S UNIQUE CODE LETTER AS JSN PREFIX.
01927  M01S01925.secart  +++|
01928  M01S01926.secart  +++|      DFTXT(11:12)=DSU//'.'
01929  M01S01927.secart  +++|
01930  M01S01928.secart  +++|* CHECK FOR TIME WINDOW PRINTOUT.
01931  M01S01929.secart  +++|
01932  M01S01930.secart  +++|      CALL TMCHECK(DFETIME,PRT)
01933  M01S01931.secart  +++|
01934  M01S01932.secart  +++|* MATCH/COLLECT JSN AND DATE/TIME GROUP (DTG).
01935  M01S01933.secart  +++|
01936  M01S01934.secart  +++|      JSN=DFTXT(11:16)
01937  M01S01935.secart  +++|      JCL=DFTXT(17:17)
01938  M01S01936.secart  +++|      CALL JSNTRAK(JSN,JCL,DFEDTG,N,1)
01939  M01S01937.secart  +++|
01940  M01S01938.secart  +++|* CRACK 1ST WORD TO PICK OUT UJN OR USER, SUI, OPERATOR COMMANDS.
01941  M01S01939.secart  +++|* SHORTSTOP COMMENT LINES.
01942  M01S01940.secart  +++|
01943  M01S01941.secart  +++|      I=21
01944  M01S01942.secart  +++|      CALL PARSE(DFTXT,I,VERB)
01945  M01S01943.secart  +++|      IF (VERB.EQ.'*') GOTO 140
01946  M01S01944.secart  +++|
01947  M01S01945.secart  +++|* ACCOMMODATE USE OF $ AND / COMMAND PREFIXES ONLY.
01948  M01S01946.secart  +++|
01949  M01S01947.secart  +++|      IF (VERB.EQ.' ') THEN
01950  M01S01948.secart  +++|        IF (INDEX('$/',DFTXT(I-1:I-1)).NE.0) THEN
01951  M01S01949.secart  +++|          CALL PARSE(DFTXT,I,VERB)
01952  M01S01950.secart  +++|        ELSE
01953  M01S01951.secart  +++|          GOTO 140
01954  M01S01952.secart  +++|        ENDIF
01955  M01S01953.secart  +++|      ENDIF
01956  M01S01954.secart  +++|
01957  M01S01955.secart  +++|* TRY TO EXTRACT UJN FROM FIRST DAYFILE MESSAGE FOR EACH JOB.
01958  M01S01956.secart  +++|
01959  M01S01957.secart  +++|      IF ((ML(1,N).EQ.1) .AND. JN(N).EQ.' ') THEN
01960  M01S01958.secart  +++|        JN(N)=VERB
01961  M01S01959.secart  +++|        CALL PICKUJN(JN(N),MK(N))
01962  M01S01960.secart  +++|      ENDIF
01963  M01S01961.secart  +++|
01964  M01S01962.secart  +++|* WATCH FOR USER COMMAND TO EXTRACT FM,UN & CHECK FOR SELECTION.
01965  M01S01963.secart  +++|
01966  M01S01964.secart  +++|      IF (VERB.EQ.'USER') THEN
01967  M01S01965.secart  +++|        CALL PARSE(DFTXT,I,USR)
01968  M01S01966.secart  +++|        CALL PARSE(DFTXT,I,NUL)
01969  M01S01967.secart  +++|        CALL PARSE(DFTXT,I,FAM)
01970  M01S01968.secart  +++|        IF (UN(N).EQ.' ' .AND .FN(N).EQ.' ') THEN
01971  M01S01969.secart  +++|          UN(N) = USR
01972  M01S01970.secart  +++|          FN(N) = FAM
01973  M01S01971.secart  +++|        ENDIF
01974  M01S01972.secart  +++|        CALL PICKUSR(FAM,USR,MK(N))
01975  M01S01973.secart  +++|
01976  M01S01974.secart  +++|* SPECIAL CASE 'SUI' COMMAND AS USERNAME.
01977  M01S01975.secart  +++|
01978  M01S01976.secart  +++|      ELSE IF (VERB.EQ.'SUI') THEN
01979  M01S01977.secart  +++|        CALL PARSE(DFTXT,I,USR)
01980  M01S01978.secart  +++|        IF (UN(N).EQ.' ') UN(N) = USR
01981  M01S01979.secart  +++|        CALL PICKUSR(FN(N),USR,MK(N))
01982  M01S01980.secart  +++|
01983  M01S01981.secart  +++|* SPECIAL CASE PRINTOUT OF OPERATOR COMMANDS.
01984  M01S01982.secart  +++|
01985  M01S01983.secart  +++|      ELSE IF (VERB.EQ.'DS'.AND.DFTXT(I-1:I).EQ.', ') THEN
01986  M01S01984.secart  +++|        PRT=.TRUE.
01987  M01S01985.secart  +++|      ENDIF
01988  M01S01986.secart  +++|
01989  M01S01987.secart  +++|* FINAL CHECK FOR DIRECTIVE SELECTED TEXT STRING(S).
01990  M01S01988.secart  +++|
01991  M01S01989.secart  +++|  140 CALL MSCHECK(DFTXT(21:100),PRT)
01992  M01S01990.secart  +++|
01993  M01S01991.secart  +++|* PRINTOUT MESSAGE FOR ANY REASON.
01994  M01S01992.secart  +++|
01995  M01S01993.secart  +++|      IF (PRT) THEN
01996  M01S01994.secart  +++|        WRITE (8,10) DFTXT
01997  M01S01995.secart  +++|        PRT=.FALSE.
01998  M01S01996.secart  +++|      ENDIF
01999  M01S01997.secart  +++|
02000  M01S01998.secart  +++|* PUT ANNOTATED MESSAGE INTO MERGED LOG FILE.
02001  M01S01999.secart  +++|
02002  M01S02000.secart  +++|      WRITE (3,10) DFTXT
02003  M01S02001.secart  +++|      GOTO 120
02004  M01S02002.secart  +++|
02005  M01S02003.secart  +++|      END
02006  M01S02004.secart  +++|
02007  M01S02005.secart  +++|* ---------------------------------------------------------------------
02008  M01S02006.secart  +++|      SUBROUTINE ACSCAN(LFN,*)
02009  M01S02007.secart  +++|**        ACSCAN - ACCOUNT LOG MESSAGE PROCESSING.
02010  M01S02008.secart  +++|*
02011  M01S02009.secart  +++|*         *ACSCAN* PROVIDES THE PRIMARY ROUTINES FOR PROCESSING ACCOUNT
02012  M01S02010.secart  +++|*         LOG MESSAGES.  IT PROVIDES AN ENTRY POINT TO PRE-SCAN THE LOG
02013  M01S02011.secart  +++|*         FILE TO VALIDATE FORMAT AND EXTRACT CRITICAL SYSTEM ID AND
02014  M01S02012.secart  +++|*         DATE/TIME DATA, AND ANOTHER FOR ROUTINE PROCESSING OF EACH
02015  M01S02013.secart  +++|*         LOG MESSAGE IN THE SEQUENCE CONTROLLED BY *SECART*. ANNOTATED
02016  M01S02014.secart  +++|*         ACCOUNT LOG MESSAGES ARE WRITTEN TO COMPOSITE LOG ON UNIT 3.
02017  M01S02015.secart  +++|
02018  M01S02016.secart  +++|      IMPLICIT INTEGER(A-Z)
02019  M01S02017.secart  +++|
02020  M01S02018.secart  +++|      PARAMETER     (MXJ=1000)
02021  M01S02019.secart  +++|*                            SIZE OF JSN TRACE TABLE.
02022  M01S02020.secart  +++|
02023  M01S02021.secart  +++|      EQUIVALENCE   (ACEDTG,ACEDATE)
02024  M01S02022.secart  +++|*                            /ACL/ ACEDTG*20 = ACEDATE*10 // ACETIME*10.
02025  M01S02023.secart  +++|
02026  M01S02024.secart  +++|
02027  M01S02025.secart  +++|      CHARACTER*10  ACEDATE
02028  M01S02026.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG END DATE.
02029  M01S02027.secart  +++|
02030  M01S02028.secart  +++|      CHARACTER*20  ACEDTG
02031  M01S02029.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG END DATE/TIME.
02032  M01S02030.secart  +++|
02033  M01S02031.secart  +++|      LOGICAL       ACEOF
02034  M01S02032.secart  +++|*                            /CTL/ ACCOUNT LOG EOF FLAG.
02035  M01S02033.secart  +++|
02036  M01S02034.secart  +++|      CHARACTER*10  ACETIME
02037  M01S02035.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG END TIME.
02038  M01S02036.secart  +++|
02039  M01S02037.secart  +++|      INTEGER       ACIN
02040  M01S02038.secart  +++|*                            /CTL/ ACCOUNT LOG MESSAGE COUNTER.
02041  M01S02039.secart  +++|
02042  M01S02040.secart  +++|      CHARACTER*10  ACSDATE
02043  M01S02041.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG START DATE.
02044  M01S02042.secart  +++|
02045  M01S02043.secart  +++|      CHARACTER*10  ACSTIME
02046  M01S02044.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG START TIME.
02047  M01S02045.secart  +++|
02048  M01S02046.secart  +++|      CHARACTER*40  ACTITLE
02049  M01S02047.secart  +++|*                            /ACL/ ACCOUNT LOG SYSTEM TITLE.
02050  M01S02048.secart  +++|
02051  M01S02049.secart  +++|      CHARACTER*100 ACTXT
02052  M01S02050.secart  +++|*                            /ACL/ CURRENT ACCOUNT LOG MESSAGE TEXT.
02053  M01S02051.secart  +++|
02054  M01S02052.secart  +++|      CHARACTER*20  ACVERSN
02055  M01S02053.secart  +++|*                            /ACL/ ACCOUNT LOG SYSTEM VERSION.
02056  M01S02054.secart  +++|
02057  M01S02055.secart  +++|      LOGICAL       DFEOF
02058  M01S02056.secart  +++|*                            /CTL/ DAYFILE LOG EOF FLAG.
02059  M01S02057.secart  +++|
02060  M01S02058.secart  +++|      INTEGER       DFIN
02061  M01S02059.secart  +++|*                            /CTL/ DAYFILE LOG MESSAGE COUNTER.
02062  M01S02060.secart  +++|
02063  M01S02061.secart  +++|      CHARACTER*1   DSU
02064  M01S02062.secart  +++|*                            /TRC/ DEADSTART UNIQUE PREFIX CODE.
02065  M01S02063.secart  +++|
02066  M01S02064.secart  +++|      CHARACTER*7   FAM
02067  M01S02065.secart  +++|*                            TEMP - FAMILYNAME VARIABLE.
02068  M01S02066.secart  +++|
02069  M01S02067.secart  +++|      CHARACTER*7   FN(MXJ)
02070  M01S02068.secart  +++|*                            /TRC/ FAMILY NAME COLUMN IN TRACE TABLE.
02071  M01S02069.secart  +++|
02072  M01S02070.secart  +++|      INTEGER       JBLIMIT
02073  M01S02071.secart  +++|*                            /CTL/ UNIT JOB PRINTOUT MESSAGE LIMIT.
02074  M01S02072.secart  +++|
02075  M01S02073.secart  +++|      CHARACTER*1   JC(MXJ)
02076  M01S02074.secart  +++|*                            /TRC/ JOB CLASS COLUMN IN TRACE TABLE.
02077  M01S02075.secart  +++|
02078  M01S02076.secart  +++|      CHARACTER*1   JCL
02079  M01S02077.secart  +++|*                            TEMP - JOB CLASS VARIABLE.
02080  M01S02078.secart  +++|
02081  M01S02079.secart  +++|      CHARACTER*7   JN(MXJ)
02082  M01S02080.secart  +++|*                            /TRC/ UJN COLUMN IN TRACE TABLE.
02083  M01S02081.secart  +++|
02084  M01S02082.secart  +++|      CHARACTER*6   JS(MXJ)
02085  M01S02083.secart  +++|*                            /TRC/ D.JSN COLUMN IN TRACE TABLE.
02086  M01S02084.secart  +++|
02087  M01S02085.secart  +++|      CHARACTER*6   JSN
02088  M01S02086.secart  +++|*                            TEMP   JSN VARIABLE.
02089  M01S02087.secart  +++|
02090  M01S02088.secart  +++|      CHARACTER*7   LFN
02091  M01S02089.secart  +++|*                            ARG - LFN FOR ACCOUNT LOG FILE.
02092  M01S02090.secart  +++|
02093  M01S02091.secart  +++|      CHARACTER*4   MID
02094  M01S02092.secart  +++|*                            TEMP - ACCOUNT MESSAGE ID.
02095  M01S02093.secart  +++|
02096  M01S02094.secart  +++|      CHARACTER*5   MK(MXJ)
02097  M01S02095.secart  +++|*                            /TRC/ JOB SELECTION MARKS IN TRACE TABLE.
02098  M01S02096.secart  +++|
02099  M01S02097.secart  +++|      INTEGER       ML(2,MXJ)
02100  M01S02098.secart  +++|*                            /CTL/ DFL/AFL MSG COUNTS FOR TRACE TABLE.
02101  M01S02099.secart  +++|
02102  M01S02100.secart  +++|      INTEGER       NJ
02103  M01S02101.secart  +++|*                            /CTL/ CURRENT NUMBER JOBS IN TRACE TABLE.
02104  M01S02102.secart  +++|
02105  M01S02103.secart  +++|      CHARACTER*20  NUDTG
02106  M01S02104.secart  +++|*                            TEMP - NEW DATE/TIME GROUP VARIABLE.
02107  M01S02105.secart  +++|
02108  M01S02106.secart  +++|      CHARACTER*6   NUJSN
02109  M01S02107.secart  +++|*                            TEMP - NEW JSN VARIABLE.
02110  M01S02108.secart  +++|
02111  M01S02109.secart  +++|      LOGICAL       PRT
02112  M01S02110.secart  +++|*                            FLAG TO PRINTOUT ACCOUNT LOG MESSAGE.
02113  M01S02111.secart  +++|
02114  M01S02112.secart  +++|      CHARACTER*2   SC
02115  M01S02113.secart  +++|*                            TEMP - IGNORED WORD FROM *PARSE*.
02116  M01S02114.secart  +++|
02117  M01S02115.secart  +++|      CHARACTER*20  TE(MXJ)
02118  M01S02116.secart  +++|*                            /TRC/ JOB DATE/TIME END IN TRACE TABLE.
02119  M01S02117.secart  +++|
02120  M01S02118.secart  +++|      CHARACTER*7   TN(MXJ)
02121  M01S02119.secart  +++|*                            /TRC/ JOB TERMINAL NAME IN TRACE TABLE.
02122  M01S02120.secart  +++|
02123  M01S02121.secart  +++|      CHARACTER*7   TRM
02124  M01S02122.secart  +++|*                            TEMP - TERMINAL ID VARIABLE.
02125  M01S02123.secart  +++|
02126  M01S02124.secart  +++|      CHARACTER*20  TS(MXJ)
02127  M01S02125.secart  +++|*                            /TRC/ JOB DATE/TIME START IN TRACE TABLE.
02128  M01S02126.secart  +++|
02129  M01S02127.secart  +++|      CHARACTER*7   UN(MXJ)
02130  M01S02128.secart  +++|*                            /TRC/ JOB USERNAME IN TRACE TABLE.
02131  M01S02129.secart  +++|
02132  M01S02130.secart  +++|      CHARACTER*7   USR
02133  M01S02131.secart  +++|*                            TEMP - USERNAME VARIABLE.
02134  M01S02132.secart  +++|
02135  M01S02133.secart  +++|      CHARACTER*1   X
02136  M01S02134.secart  +++|*                            TEMP - USED IN D.JSN ATTRIBUTES RECOVERY.
02137  M01S02135.secart  +++|
02138  M01S02136.secart  +++|
02139  M01S02137.secart  +++|* ACCOUNT LOG SPECIFIC VARIABLES.
02140  M01S02138.secart  +++|
02141  M01S02139.secart  +++|      COMMON /ACL/  ACSDATE
02142  M01S02140.secart  +++|      COMMON /ACL/  ACSTIME
02143  M01S02141.secart  +++|      COMMON /ACL/  ACEDATE
02144  M01S02142.secart  +++|      COMMON /ACL/  ACETIME
02145  M01S02143.secart  +++|      COMMON /ACL/  ACTITLE
02146  M01S02144.secart  +++|      COMMON /ACL/  ACVERSN
02147  M01S02145.secart  +++|      COMMON /ACL/  ACTXT
02148  M01S02146.secart  +++|
02149  M01S02147.secart  +++|* GLOBAL NUMERIC/LOGICAL VARIABLES AND PARAMETERS.
02150  M01S02148.secart  +++|
02151  M01S02149.secart  +++|      COMMON /CTL/  NJ
02152  M01S02150.secart  +++|      COMMON /CTL/  ACIN
02153  M01S02151.secart  +++|      COMMON /CTL/  DFIN
02154  M01S02152.secart  +++|      COMMON /CTL/  ACEOF
02155  M01S02153.secart  +++|      COMMON /CTL/  DFEOF
02156  M01S02154.secart  +++|      COMMON /CTL/  ML
02157  M01S02155.secart  +++|      COMMON /CTL/  JBLIMIT
02158  M01S02156.secart  +++|
02159  M01S02157.secart  +++|* JSN TRACE TABLE STORAGE.
02160  M01S02158.secart  +++|
02161  M01S02159.secart  +++|      COMMON /TRC/  DSU
02162  M01S02160.secart  +++|      COMMON /TRC/  MK
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/secart.txt · Last modified: by 127.0.0.1