User Tools

Site Tools


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

Deck SECART

Library Member Format: MODIFY

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.secart  +++|*NOSEQ
00002  M00S00002.secart  +++|      PROGRAM SECART
Line S00003 Modification History
M01 (Removed by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00003  M01S00003.281l803 ---|*         COMMENT.  COPYRIGHT CONTROL DATA CORPORATION 1986.
00004  M00S00004.secart  +++|***       SECART -  SECURITY AUDIT REDUCTION TOOL.
Line S00001 Modification History
M01 (Added by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00005  M01S00001.281l803 +++|*
00006  M01S00002.281l803 +++|*         COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00007  M00S00005.secart  +++|*
00008  M00S00006.secart  +++|*         T. A. CURETON.      86/06/30.
00009  M00S00007.secart  +++|
00010  M00S00008.secart  +++|***       OVERVIEW.
00011  M00S00009.secart  +++|*
00012  M00S00010.secart  +++|*         *SECART* IS A STAND-ALONE SECURITY ADMINISTRATOR UTILITY WHICH
00013  M00S00011.secart  +++|*         DIGESTS BOTH *ACCOUNT* AND *DAYFILE* LOG MESSAGES, REDUCING
00014  M00S00012.secart  +++|*         THE VOLUME OF DATA WHICH MUST BE REVIEWED AND PRODUCES
00015  M00S00013.secart  +++|*         PRINTOUTS AND FILES USEFUL FOR SECURITY AUDITING PURPOSES.
00016  M00S00014.secart  +++|
00017  M00S00015.secart  +++|***       FUNCTIONS.
00018  M00S00016.secart  +++|*
00019  M00S00017.secart  +++|*         - MERGE BY TIME SEQUENCE MESSAGES FROM RAW *DAYFILE* AND
00020  M00S00018.secart  +++|*           *ACCOUNT* LOGS TO PRODUCE A NEAR-NORMAL CAUSE-AND-EFFECT
00021  M00S00019.secart  +++|*           SERIAL SEQUENCE AND ESTABLISH EVENT CONTEXT.
00022  M00S00020.secart  +++|*
00023  M00S00021.secart  +++|*         - SELECT MESSAGES FROM RAW LOGS FOR SERIAL PRINTOUT BASED ON
00024  M00S00022.secart  +++|*           CRITERIA SPECIFIED IN DIRECTIVES.
00025  M00S00023.secart  +++|*
00026  M00S00024.secart  +++|*         - EXTRACT JSN-S, USER NAMES, AND OTHER ATTRIBUTES OF EACH JOB
00027  M00S00025.secart  +++|*           ENCOUNTERED IN THE RAW LOG INPUT(S).
00028  M00S00026.secart  +++|*
00029  M00S00027.secart  +++|*         - RECOGNIZE MESSAGES INDICATING LEVEL 0 DEADSTARTS WHICH RESET
00030  M00S00028.secart  +++|*           JSN GENERATION SEQUENCE AND AUGMENT JSN IDENTIFIERS TO
00031  M00S00029.secart  +++|*           UNIQUELY IDENTIFY EACH JOB.
00032  M00S00030.secart  +++|*
00033  M00S00031.secart  +++|*         - RECOGNIZE JOB RECOVERY EVENTS AND, WHERE POSSIBLE, RECOVER
00034  M00S00032.secart  +++|*           JOB ATTRIBUTES FROM PREVIOUS JSN TRACE TABLE ENTRIES.
00035  M00S00033.secart  +++|*
00036  M00S00034.secart  +++|*         - COLLECT AND PRINTOUT STATISTICS ON USAGE OF *ACCOUNT* LOG
00037  M00S00035.secart  +++|*           MESSAGE IDENTIFIERS.
00038  M00S00036.secart  +++|*
00039  M00S00037.secart  +++|*         - SORT AND PRINTOUT JSN TRACE TABLE PER DIRECTIVES.
00040  M00S00038.secart  +++|*
00041  M00S00039.secart  +++|*         - SORT COMPOSITE (MERGED) LOG TO GROUP MESSAGES BY UNIQUE JSN.
00042  M00S00040.secart  +++|*
00043  M00S00041.secart  +++|*         - SELECT AND PRINTOUT UNIT JOBS PER DIRECTIVES.  APPLY SAMPLE
00044  M00S00042.secart  +++|*           LIMIT TO NUMBER OF MESSAGES PRINTED FOR EACH JOB TO REDUCE
00045  M00S00043.secart  +++|*           RISK OF MASSIVE PRINTOUT OR EXCEEDING RESOURCE LIMITS.
00046  M00S00044.secart  +++|
00047  M00S00045.secart  +++|***       COMMAND FORMAT.
00048  M00S00046.secart  +++|*
00049  M00S00047.secart  +++|*         SECART(P1,P2,...PN)
00050  M00S00048.secart  +++|*
00051  M00S00049.secart  +++|*         EACH PARAMETER SPECIFIES THE LFN OF A FILE PROVIDED AS INPUT
00052  M00S00050.secart  +++|*         OR TO BE PRODUCED AS AN OUTPUT OF THE PROGRAM.  PARAMETERS
00053  M00S00051.secart  +++|*         MUST BE IN KEYWORD=VALUE FORMAT AND MAY BE IN ANY ORDER.  A
00054  M00S00052.secart  +++|*         VALUE OF *0* (ZERO) SPECIFIES NO FILE IS PROVIDED OR PRODUCED.
00055  M00S00053.secart  +++|*         A PARAMETER OMITTED OR SPECIFIED WITHOUT A VALUE FIELD WILL
00056  M00S00054.secart  +++|*         ASSUME A DEFAULT VALUE AS DEFINED IN THE FOLLOWING TABLE:
00057  M00S00055.secart  +++|*
00058  M00S00056.secart  +++|*           PARAM OMIT NO_VALUE DESCRIPTION
00059  M00S00057.secart  +++|*
00060  M00S00058.secart  +++|*           *D*   0    DFLOG    RAW DAYFILE LOG INPUT.
00061  M00S00059.secart  +++|*           *A*   0    ACLOG    RAW ACCOUNT LOG INPUT.
00062  M00S00060.secart  +++|*           *C*   0    COMBO    COMPOSITE LOG OUTPUT/INPUT.
00063  M00S00061.secart  +++|*           *J*   0    JOBS     UNIT JOBS COMPOSITE LOG OUTPUT/INPUT.
00064  M00S00062.secart  +++|*           *M*   0    MSGID    ACCOUNT MSG ID REFERENCE INPUT FILE.
00065  M00S00063.secart  +++|*           *T*   0    TRACE    JSN TRACE TABLE INPUT AND OUTPUT.
00066  M00S00064.secart  +++|*           *I* INPUT  INPUT    DIRECTIVES INPUT FILE.
00067  M00S00065.secart  +++|*           *L* OUTPUT OUTPUT   PRINTOUTS FILE.  REQUIRED OUTPUT.
00068  M00S00066.secart  +++|*
00069  M00S00067.secart  +++|*         AT LEAST ONE OF THE FILES IDENTIFIED BY PARAMETERS *D*,*A*,
00070  M00S00068.secart  +++|*         C*,*J*,*T* MUST BE SPECIFIED TO PROVIDE INPUT(S) FOR *SECART*
00071  M00S00069.secart  +++|*         PROCESSING.  SPECIFYING EITHER (OR BOTH) RAW LOGS (*D*,*A*)
00072  M00S00070.secart  +++|*         DEFINES AN INITIAL RUN WITH COMPOSITE (*C*) AND UNIT JOB (*J*)
00073  M00S00071.secart  +++|*         LOGS AND JSN TRACE TABLE (*T*) PRODUCED AS OUTPUT FILES.
00074  M00S00072.secart  +++|*
00075  M00S00073.secart  +++|*         IF NO RAW LOG FILE IS SPECIFIED, *SECART* WILL ASSUME RERUN
00076  M00S00074.secart  +++|*         MODE AND LOOK FOR 1) A COMPOSITE LOG OR 2) UNIT JOBS LOG AS
00077  M00S00075.secart  +++|*         INPUT.  IF A COMPOSITE LOG (*C*) IS PROVIDED, THE UNIT JOBS
00078  M00S00076.secart  +++|*         LOG (*J*) WILL BE AN OUTPUT FILE.  IF A UNIT JOBS LOG (*J*) IS
00079  M00S00077.secart  +++|*         THE LOG INPUT FILE, ONLY PRINTOUTS WILL BE PRODUCED.
00080  M00S00078.secart  +++|*
00081  M00S00079.secart  +++|*         THE JSN TRACE TABLE FILE (*T*) IS PRODUCED ONLY DURING AN
00082  M00S00080.secart  +++|*         INITIAL RUN.  IT CONTAINS AN ENTRY FOR EACH JOB FOUND IN THE
00083  M00S00081.secart  +++|*         RAW LOG(S) AND SHOULD BE SAVED TO FACILLITATE RERUNS.  ANY
00084  M00S00082.secart  +++|*         *SECART* RERUN USING A PRE-PROCESSED LOG FILE REQUIRES
00085  M00S00083.secart  +++|*         PROVIDING THE TRACE TABLE FILE WHICH CORRESPONDS TO THE INPUT
00086  M00S00084.secart  +++|*         LOG.  PROVIDING A JSN TRACE TABLE FILE AS THE ONLY INPUT IS
00087  M00S00085.secart  +++|*         USEFUL FOR RE-SORTING AND/OR PRINTOUT OF THE JSN TRACE TABLE.
00088  M00S00086.secart  +++|*         TO AID RECOVERY OF JOB ATTRIBUTES FROM A PREVIOUS SET OF RAW
00089  M00S00087.secart  +++|*         LOGS, THE TRACE TABLE (OR A SUBSET) FROM THE PREVIOUS RUN MAY
00090  M00S00088.secart  +++|*         BE PROVIDED FOR AN INITIAL RAW LOGS *SECART* RUN.  SINCE THIS
00091  M00S00089.secart  +++|*         FILE WILL BE FIRST READ, THEN REWRITTEN, AN EXPENDABLE COPY OF
00092  M00S00090.secart  +++|*         THE TRACE TABLE FILE (OR SUBSET) SHOULD BE PROVIDED.
00093  M00S00091.secart  +++|*
00094  M00S00092.secart  +++|*         THE INPUT FILE (*I*) MAY CONTAIN *SECART* DIRECTIVES WHICH
00095  M00S00093.secart  +++|*         SPECIFY CRITERIA FOR SELECTING MESSAGES AND/OR UNIT JOBS FOR
00096  M00S00094.secart  +++|*         PRINTOUT, SORTING JSN TRACE TABLE ENTRIES, AND LIMITING UNIT
00097  M00S00095.secart  +++|*         JOB PRINTOUTS.  SEE DIRECTIVES SECTION BELOW FOR DESCRIPTIONS.
00098  M00S00096.secart  +++|*
00099  M00S00097.secart  +++|*         A LIST FILE (*L*) IS ALWAYS PRODUCED AND THE *L* PARAMETER MAY
00100  M00S00098.secart  +++|*         BE USED TO DIRECT PRINTOUTS TO A FILENAME.  THE SEQUENCE OF
00101  M00S00099.secart  +++|*         PRINTOUTS MAY INCLUDE:
00102  M00S00100.secart  +++|*
00103  M00S00101.secart  +++|*             - *SECART* DIRECTIVES AND ANY DIRECTIVE ERROR MESSAGES.
00104  M00S00102.secart  +++|*
00105  M00S00103.secart  +++|*             - TIME SEQUENCED SERIAL PRINTOUT OF SELECTED MESSAGES.
00106  M00S00104.secart  +++|*
00107  M00S00105.secart  +++|*             - *ACCOUNT* MESSAGE ID STATISTICS.
00108  M00S00106.secart  +++|*
00109  M00S00107.secart  +++|*             - SORTED JSN TRACE TABLE.
00110  M00S00108.secart  +++|*
00111  M00S00109.secart  +++|*             - SELECTED UNIT JOBS.
00112  M00S00110.secart  +++|
00113  M00S00111.secart  +++|***       DIRECTIVES.
00114  M00S00112.secart  +++|*
00115  M00S00113.secart  +++|*         *SECART* DIRECTIVES MAY BE USED TO SPECIFY OPTIONS AND TO
00116  M00S00114.secart  +++|*         SELECT MESSAGES, TIME WINDOWS, AND JOBS FOR PRINTOUT.  ALL
00117  M00S00115.secart  +++|*         SELECTIONS ARE ON AN INCLUSIVE OR BASIS.  SELECTED *ACCOUNT*
00118  M00S00116.secart  +++|*         MESSAGE ID-S ARE FLAGGED AND OCCURRENCES TABULATED IN THE
00119  M00S00117.secart  +++|*         STATISTICS PRINTOUT.  SELECTED JOBS ARE ANNOTATED TO SHOW
00120  M00S00118.secart  +++|*         SELECTION BASIS IN THE JSN TRACE TABLE PRINTOUT.
00121  M00S00119.secart  +++|*
00122  M00S00120.secart  +++|*         EACH DIRECTIVE MUST BEGIN IN COLUMN 1 ON A SEPARATE INPUT
00123  M00S00121.secart  +++|*         LINE.  THE *=* AFTER THE DIRECTIVE NAME IS REQUIRED.  SYNTAX
00124  M00S00122.secart  +++|*         IS GENERALLY FREEFORM USING A COMMA AND/OR BLANKS TO SEPARATE
00125  M00S00123.secart  +++|*         ARGUMENTS.  ITEMS SHOWN BELOW IN [BRACKETS] ARE OPTIONAL.
00126  M00S00124.secart  +++|*         REPETITIVE ARGUMENTS ARE INDICATED BY TRIPLE PERIODS AND MAY
00127  M00S00125.secart  +++|*         MAY BE ENTERED VIA MULTIPLE DIRECTIVES TO A MAXIMUM DEFINED
00128  M00S00126.secart  +++|*         BY TABLE SPACE (50 EACH TYPE).
00129  M00S00127.secart  +++|*
00130  M00S00128.secart  +++|*         AMSG=MSID,MSID,...
00131  M00S00129.secart  +++|*
00132  M00S00130.secart  +++|*                  SELECTS FOR SERIAL PRINTOUT ALL MESSAGES CONTAINING
00133  M00S00131.secart  +++|*                  ANY OF THE SPECIFIED ACCOUNT MESSAGE IDENTIFIERS.
00134  M00S00132.secart  +++|*
00135  M00S00133.secart  +++|*         DMSG=[NN:]TEXTSTRING
00136  M00S00134.secart  +++|*
00137  M00S00135.secart  +++|*                  SELECTS FOR SERIAL PRINTOUT OF ALL DAYFILE
00138  M00S00136.secart  +++|*                  MESSAGES CONTAINING SPECIFIED TEXT STRING.  NN IS
00139  M00S00137.secart  +++|*                  OPTIONAL AND SPECIFIES A START CHARACTER POSITION
00140  M00S00138.secart  +++|*                  [1-80] RELATIVE TO MESSAGE PORTION OF DAYFILE.  TEXT
00141  M00S00139.secart  +++|*                  STRING IS UNDELIMITED, BEGINS IMMEDIATELY AFTER THE
00142  M00S00140.secart  +++|*                  EQUAL OR COLON, AND ENDS WITH LAST NON-BLANK.
00143  M00S00141.secart  +++|*
00144  M00S00142.secart  +++|*         TIME=HHMMSS[-HHMMSS]      (OR)
00145  M00S00143.secart  +++|*         TIME=HH.MM.SS.[-HH.MM.SS]
00146  M00S00144.secart  +++|*
00147  M00S00145.secart  +++|*                  SPECIFIES TIME WINDOW FOR SERIAL PRINTOUT.
00148  M00S00146.secart  +++|*                  SECONDS PORTION IS OPTIONAL.  END TIME IS OPTIONAL
00149  M00S00147.secart  +++|*                  BUT REQUIRES '-' SEPARATOR.  DEFAULTS TO SAME AS
00150  M00S00148.secart  +++|*                  START TIME FOR ONE SECOND WINDOW.
00151  M00S00149.secart  +++|*
00152  M00S00150.secart  +++|*         TRACE=KEY,KEY,...
00153  M00S00151.secart  +++|*
00154  M00S00152.secart  +++|*                  SPECIFIES SORT KEYS FOR TRACE TABLE PRINTOUT.  VALID
00155  M00S00153.secart  +++|*                  KEYS:  UJN,JSN,JC,SDT,EDT,FM,UN,TRM.  DEFAULT IS SDT
00156  M00S00154.secart  +++|*                  WHICH IS SEQUENCE OF ENCOUNTERING UNIQUE JSN-S.
00157  M00S00155.secart  +++|*
00158  M00S00156.secart  +++|*         USER=FAMILY,USER
00159  M00S00157.secart  +++|*
00160  M00S00158.secart  +++|*                  SELECTS UNIT JOBS FOR PRINTOUT BY USER/FAMILY
00161  M00S00159.secart  +++|*                  IDENTIFICATION.  FAMILY MAY BE BLANK OR OMITTED TO
00162  M00S00160.secart  +++|*                  SELECT DEFAULT FAMILY.  ASTERISK MAY BE SPECIFIED
00163  M00S00161.secart  +++|*                  FOR WILDCARD MATCH ON FAMILY OR USER.   NOTE THAT
00164  M00S00162.secart  +++|*                  USER=*,* SELECTS ALL JOBS.  SINCE *SECART* RECOGNIZES
00165  M00S00163.secart  +++|*                  THE USER INDEX IN A *SUI* COMMAND AS A USER ID, A
00166  M00S00164.secart  +++|*                  USER INDEX MAY BE SPECIFIED IN PLACE OF THE USERNAME
00167  M00S00165.secart  +++|*                  AND WILL BE RECOGNIZED WHEN A *SUI* WITH THAT UI IS
00168  M00S00166.secart  +++|*                  ENCOUNTERED IN THE DAYFILE LOG.
00169  M00S00167.secart  +++|*
00170  M00S00168.secart  +++|*         UJN=JOBNAME,...
00171  M00S00169.secart  +++|*
00172  M00S00170.secart  +++|*                  SELECTS UNIT JOBS FOR PRINTOUT BY JOBNAME FOUND IN
00173  M00S00171.secart  +++|*                  FIRST DAYFILE MESSAGE (USUALLY).
00174  M00S00172.secart  +++|*
00175  M00S00173.secart  +++|*         JSN=[D.]AAAA,...
00176  M00S00174.secart  +++|*
00177  M00S00175.secart  +++|*                  SELECTS UNIT JOBS FOR PRINTOUT BY JSN.  'D.' IS
00178  M00S00176.secart  +++|*                  OPTIONAL AND SPECIFIES AN *SECART*-ASSIGNED PREFIX
00179  M00S00177.secart  +++|*                  CODE USED TO RESOLVE JSN AMBIGUITY ACROSS LEVEL 0
00180  M00S00178.secart  +++|*                  DEADSTARTS.
00181  M00S00179.secart  +++|*
00182  M00S00180.secart  +++|*         TRM=TERMID,...
00183  M00S00181.secart  +++|*
00184  M00S00182.secart  +++|*                  SELECTS UNIT JOBS PRINTOUT BY TERMINAL ID.
00185  M00S00183.secart  +++|*
00186  M00S00184.secart  +++|*         LIMIT=NNNN
00187  M00S00185.secart  +++|*
00188  M00S00186.secart  +++|*                  LIMITS UNIT JOB PRINTOUTS TO NNNN LINES EACH.  HELPS
00189  M00S00187.secart  +++|*                  REDUCE/AVOID MASSSIVE PRINTOUTS.
00190  M00S00188.secart  +++|
00191  M00S00189.secart  +++|***       CALLS.
00192  M00S00190.secart  +++|*
00193  M00S00191.secart  +++|*         SORT/MERGE V5 - TO GROUP COMPOSITE LOG INTO UNIT JOBS AND
00194  M00S00192.secart  +++|*                       - TO SORT TRACE TABLE (OPTIONAL).
00195  M00S00193.secart  +++|
00196  M00S00194.secart  +++|***       DAYFILE MESSAGES.
00197  M00S00195.secart  +++|*
00198  M00S00196.secart  +++|*         *SECART* ISSUES TWO CLASSES OF DAYFILE MESSAGES - STATUS AND
00199  M00S00197.secart  +++|*         ERROR MESSAGES.
00200  M00S00198.secart  +++|*
00201  M00S00199.secart  +++|*         STATUS MESSAGES MERELY INDICATE PROCESSING PHASES AND ARE
00202  M00S00200.secart  +++|*         SELF-EXPLANATORY.  ALL STATUS MESSAGES BEGIN WITH ONE LEADING
00203  M00S00201.secart  +++|*         BLANK AND OCCUR IN THE FOLLOWING SEQUENCE:
00204  M00S00202.secart  +++|*
00205  M00S00203.secart  +++|*             READING DIRECTIVES...
00206  M00S00204.secart  +++|*
00207  M00S00205.secart  +++|*             LOADING TRACE TABLE...
00208  M00S00206.secart  +++|*
00209  M00S00207.secart  +++|*             DIGESTING RAW LOG(S)...
00210  M00S00208.secart  +++|*
00211  M00S00209.secart  +++|*             ACCOUNT MSG STATISTICS...
00212  M00S00210.secart  +++|*
00213  M00S00211.secart  +++|*             TRACE TABLE PRINTOUT...
00214  M00S00212.secart  +++|*
00215  M00S00213.secart  +++|*             SORTING OUT JOBS...
00216  M00S00214.secart  +++|*
00217  M00S00215.secart  +++|*             EXTRACTING SELECTED JOBS...
00218  M00S00216.secart  +++|*
00219  M00S00217.secart  +++|*             SECART COMPLETED.
00220  M00S00218.secart  +++|*
00221  M00S00219.secart  +++|*         ALL ERROR MESSAGES ARE OFFSET WITH THREE LEADING BLANKS AND
00222  M00S00220.secart  +++|*         FLAGGED WITH ASTERISKS TO STAND OUT IN THE DAYFILE SEQUENCE.
00223  M00S00221.secart  +++|*         ERROR MESSAGES LEADING TO TERMINATION ALSO HAVE TRAILING
00224  M00S00222.secart  +++|*         ASTERISKS.  ERROR MESSAGES AND EXPLANATIONS ARE:
00225  M00S00223.secart  +++|*
00226  M00S00224.secart  +++|*         *** SECART TERMINATED.
00227  M00S00225.secart  +++|*
00228  M00S00226.secart  +++|*                  ABNORMAL *SECART* TERMINATION.  PRECEEDING MESSAGE
00229  M00S00227.secart  +++|*                  IDENTIFIES CAUSE.
00230  M00S00228.secart  +++|*
00231  M00S00229.secart  +++|*         *** DIRECTIVE ERROR(S).
00232  M00S00230.secart  +++|*
00233  M00S00231.secart  +++|*                  SEE PRINTOUT FOR ERRORS.
00234  M00S00232.secart  +++|*
00235  M00S00233.secart  +++|*         *** [LFN] NOT RAW ACCOUNT LOG.
00236  M00S00234.secart  +++|*
00237  M00S00235.secart  +++|*                  FIRST AND/OR SECOND LINES NOT IN DATE/TIME FORMAT.
00238  M00S00236.secart  +++|*
00239  M00S00237.secart  +++|*         *** [LFN] NOT RAW DAYFILE LOG.
00240  M00S00238.secart  +++|*
00241  M00S00239.secart  +++|*                  FIRST AND/OR SECOND LINES NOT IN DATE/TIME FORMAT.
00242  M00S00240.secart  +++|*
00243  M00S00241.secart  +++|*         *** LIST FILE REQUIRED.
00244  M00S00242.secart  +++|*
00245  M00S00243.secart  +++|*                  *L=0* PARAMETER IGNORED.
00246  M00S00244.secart  +++|*
00247  M00S00245.secart  +++|*         *** LOG DATES MISMATCH.
00248  M00S00246.secart  +++|*
00249  M00S00247.secart  +++|*                  *ACCOUNT* VS *DAYFILE* SYSTEM DATE MISMATCH.  LOG
00250  M00S00248.secart  +++|*                  TIME PERIODS MAY NOT OVERLAP.
00251  M00S00249.secart  +++|*
00252  M00S00250.secart  +++|*         *** MSGID SEQUENCE ERROR(S).
00253  M00S00251.secart  +++|*
00254  M00S00252.secart  +++|*                  *ACCOUNT* MESSAGE ID TABLE (*M*) OUT OF SEQUENCE.
00255  M00S00253.secart  +++|*
00256  M00S00254.secart  +++|*         *** MSGID TABLE FULL ***
00257  M00S00255.secart  +++|*
00258  M00S00256.secart  +++|*                  *ACCOUNT* MESSAGE ID FILE EXCEEDS TABLE SIZE.
00259  M00S00257.secart  +++|*
00260  M00S00258.secart  +++|*         *** SYSTEM ID MISMATCH ***
00261  M00S00259.secart  +++|*
00262  M00S00260.secart  +++|*                  *ACCOUNT* VS *DAYFILE* SYSTEM TITLE/VERSION
00263  M00S00261.secart  +++|*                  MISMATCH.  LOGS NOT FROM SAME SYSTEM.
00264  M00S00262.secart  +++|*
00265  M00S00263.secart  +++|*         *** TRACE TABLE FULL ***
00266  M00S00264.secart  +++|*
00267  M00S00265.secart  +++|*                  JSN TRACE TABLE OVERFLOW.  MAY BE DUE TO COMBINING
00268  M00S00266.secart  +++|*                  TABLE FROM PREVIOUS LOGS.
00269  M00S00267.secart  +++|*
00270  M00S00268.secart  +++|*         *** TRACE TABLE SEQUENCE ERROR(S).
00271  M00S00269.secart  +++|*
00272  M00S00270.secart  +++|*                  LOADED TRACE TABLE (*T*) NOT IN ASCENDING D.JSN
00273  M00S00271.secart  +++|*                  SEQUENCE.
00274  M00S00272.secart  +++|*
00275  M00S00273.secart  +++|*         *** UNRECOGNIZED PARAMETER: [PARAM]
00276  M00S00274.secart  +++|*
00277  M00S00275.secart  +++|*                  PROGRAM CALL PARAMETER NOT RECOGNIZED.
00278  M00S00276.secart  +++|
00279  M00S00277.secart  +++|***       PRINTOUT MESSAGES.
00280  M00S00278.secart  +++|*
00281  M00S00279.secart  +++|*         INFORMATIVE AND ERROR MESSAGES INSERTED IN THE PRINTOUT ARE
00282  M00S00280.secart  +++|*         FLAGGED WITH === AND *** RESPECTIVELY.  ALL ARE INDENTED THREE
00283  M00S00281.secart  +++|*         SPACES.  A FEW INFORMATIVE MESSAGES ARE ALSO   E X P A N D E D
00284  M00S00282.secart  +++|*         SO AS TO STAND OUT WHEN EMBEDDED IN LENGTHY SERIAL PRINTOUT.
00285  M00S00283.secart  +++|*
00286  M00S00284.secart  +++|*         === EOF ACCOUNT LOG [LFN], NNNN MESSAGES     (OR)
00287  M00S00285.secart  +++|*         === EOF DAYFILE LOG [LFN], NNNN MESSAGES
00288  M00S00286.secart  +++|*
00289  M00S00287.secart  +++|*                  MARKS LOG END-OF-FILE POINT AND NUMBER OF MESSAGES.
00290  M00S00288.secart  +++|*
00291  M00S00289.secart  +++|*         === JSN NOT FOUND: [JSN] YY/MM/DD. HH.MM.SS.
00292  M00S00290.secart  +++|*
00293  M00S00291.secart  +++|*                  ORIGINAL JSN NOT IN TRACE TABLE.  JOB ATTRIBUTES
00294  M00S00292.secart  +++|*                  NOT RECOVERED.
00295  M00S00293.secart  +++|*
00296  M00S00294.secart  +++|*         === JSN RECOVERED [D.JSN]
00297  M00S00295.secart  +++|*
00298  M00S00296.secart  +++|*                  JOB RECOVERY LINKED TO ORIGINAL JSN IN TRACE TABLE.
00299  M00S00297.secart  +++|*                  JOB ATTRIBUTES RECOVERED VIA TRACE TABLE.
00300  M00S00298.secart  +++|*
00301  M00S00299.secart  +++|*         ========= L E V E L   0   D / S   ( X ) =========
00302  M00S00300.secart  +++|*
00303  M00S00301.secart  +++|*                  INITIAL LEVEL 0 D/S RESETS JSN SEQUENCE.  X IS NEW
00304  M00S00302.secart  +++|*                  *SECART*-GENERATED PREFIX FOR SUBSEQUENT JOBS.
00305  M00S00303.secart  +++|*
00306  M00S00304.secart  +++|*         ========= S A M P L E   L I M I T =========
00307  M00S00305.secart  +++|*
00308  M00S00306.secart  +++|*                  UNIT JOB PRINTOUT TRUNCATED PER *LIMIT* DIRECTIVE.
00309  M00S00307.secart  +++|*
00310  M00S00308.secart  +++|*         *** TIME ARGUMENT ERROR.
00311  M00S00309.secart  +++|*
00312  M00S00310.secart  +++|*                  ERROR IN VALUE OR SYNTAX FOR *TIME* DIRECTIVE.
00313  M00S00311.secart  +++|*
00314  M00S00312.secart  +++|*         ====== TIME WINDOW START ======
00315  M00S00313.secart  +++|*         ====== TIME WINDOW END ======
00316  M00S00314.secart  +++|*
00317  M00S00315.secart  +++|*                  INDICATES START/END OF SPECIFIED TIME WINDOW.
00318  M00S00316.secart  +++|*
00319  M00S00317.secart  +++|*         *** TOO MANY ARGUMENTS, EXCESS IGNORED.
00320  M00S00318.secart  +++|*
00321  M00S00319.secart  +++|*                  REPETITIVE ARGUMENT LIST EXCEEDS TABLE SIZE.
00322  M00S00320.secart  +++|*
00323  M00S00321.secart  +++|*         *** UNRECOGNIZED DIRECTIVE ***
00324  M00S00322.secart  +++|*
00325  M00S00323.secart  +++|*                  DIRECTIVE NOT RECOGNIZED - MISPELLED, ETC.
00326  M00S00324.secart  +++|
00327  M00S00325.secart  +++|**        INTERNAL OVERVIEW.
00328  M00S00326.secart  +++|*
00329  M00S00327.secart  +++|*         *SECART* IS WRITTEN IN FORTRAN FOR COMPILATION VIA FTN5.  IT
00330  M00S00328.secart  +++|*         CONSISTS OF A MAIN PROGRAM, PRIMARY SUBROUTINES, AND SUPPORT
00331  M00S00329.secart  +++|*         SUBROUTINES ORGANIZED IN A TOP-DOWN STRUCTURE.  THE MAIN
00332  M00S00330.secart  +++|*         PROGRAM ESTABLISHES OVERALL PROCESSING SEQUENCE AND CONTROL.
00333  M00S00331.secart  +++|*         EACH PRIMARY SUBROUTINE ISOLATES RESPONSIBILITY FOR A MAJOR
00334  M00S00332.secart  +++|*         PROGRAM OBJECTIVE TO A SINGLE CODE MODULE AND SUPPORTS
00335  M00S00333.secart  +++|*         SEVERAL RELATED FUNCTIONS VIA MULTIPLE ENTRY POINTS.  LOW
00336  M00S00334.secart  +++|*         LEVEL SUPPORT SUBROUTINES PROVIDE COMMON/REDUNDANT FUNCTIONS
00337  M00S00335.secart  +++|*         USED BY ONE OR MORE SUBROUTINES AND/OR THE MAIN PROGRAM.
00338  M00S00336.secart  +++|*         THE LIST OF MODULES AND [ENTRY POINTS] , INDENTED TO SHOW
00339  M00S00337.secart  +++|*         STRUCTURE, INCLUDES:
00340  M00S00338.secart  +++|*
00341  M00S00339.secart  +++|*         SECART - MAIN PROGRAM.
00342  M00S00340.secart  +++|*
00343  M00S00341.secart  +++|*             DIRECT - DIRECTIVES AND SELECTION FUNCTIONS.
00344  M00S00342.secart  +++|*             [TMCHECK] - TIME WINDOW CHECKING.
00345  M00S00343.secart  +++|*             [MSCHECK] - DAYFILE MESSAGE CHECK.
00346  M00S00344.secart  +++|*             [PICKJSN] - PICK JOBS BY JSN.
00347  M00S00345.secart  +++|*             [PICKUJN] - PICK JOBS BY UJN.
00348  M00S00346.secart  +++|*             [PICKUSR] - PICK JOBS BY USER, FAMILY NAME.
00349  M00S00347.secart  +++|*             [PICKTRM] - PICK JOBS BY TERMINAL NAME.
00350  M00S00348.secart  +++|*
00351  M00S00349.secart  +++|*                  TMARG - REDUNDANT TIME ARGUMENT DIRECTIVE CRACKING.
00352  M00S00350.secart  +++|*
00353  M00S00351.secart  +++|*             DFSCAN - *DAYFILE* LOG I/O AND MESSAGE PROCESSING.
00354  M00S00352.secart  +++|*             [DFMSG] - ROUTINE MESSAGE PROCESSING.
00355  M00S00353.secart  +++|*
00356  M00S00354.secart  +++|*             ACSCAN - *ACCOUNT* LOG I/O AND MESSAGE PROCESSING.
00357  M00S00355.secart  +++|*             [ACMSG] - ROUTINE MESSAGE PROCESSING.
00358  M00S00356.secart  +++|*
00359  M00S00357.secart  +++|*                  LOGTEST - CHECK FORMAT, EXTRACT START DATE/TIME.
00360  M00S00358.secart  +++|*
00361  M00S00359.secart  +++|*             JSNLOAD - JSN TRACE TABLE MANAGEMENT.
00362  M00S00360.secart  +++|*             [JSNTRAK] - MATCH/COLLECT JSN-S, JOB ATTRIBUTES.
00363  M00S00361.secart  +++|*             [JSNLOOK] - JSN MATCH ONLY.
00364  M00S00362.secart  +++|*             [JSNLVL0] - HANDLE LEVEL 0 D/S EVENTS W/O DUPLICATION.
00365  M00S00363.secart  +++|*             [JSNLIST] - TRACE TABLE SORT (OPTIONAL) AND PRINTOUT.
00366  M00S00364.secart  +++|*
00367  M00S00365.secart  +++|*             AMSLOAD - *ACCOUNT* MESSAGE ID TABLE AND STATISTICS.
00368  M00S00366.secart  +++|*             [AMSMARK] - FLAG ID-S FOR SELECTION.
00369  M00S00367.secart  +++|*             [AMSTEST] - ID MATCH, SELECTION TEST, TABULATION.
00370  M00S00368.secart  +++|*             [AMSLIST] - MESSAGE ID STATISTICS PRINTOUT.
00371  M00S00369.secart  +++|*
00372  M00S00370.secart  +++|*                  PARSE - COMMON TEXT PARSER.
00373  M00S00371.secart  +++|
00374  M00S00372.secart  +++|**        COMMON BLOCKS.
00375  M00S00373.secart  +++|*
00376  M00S00374.secart  +++|*         COMMON BLOCKS PROVIDE THE PRIMARY MEANS OF SHARING
00377  M00S00375.secart  +++|*         INFORMATION BETWEEN MODULES.  AS WITH CODE MODULES, THEY ARE
00378  M00S00376.secart  +++|*         ORGANIZED BY FUNCTIONAL AREA AND EACH IS DEFINED ONLY IN
00379  M00S00377.secart  +++|*         THOSE MODULES WHICH NEED ACCESS TO ONE OR MORE VARIABLES IN
00380  M00S00378.secart  +++|*         THAT BLOCK.  OF NECESSITY, EACH BLOCK CONTAINS EXCLUSIVELY
00381  M00S00379.secart  +++|*         EITHER NUMERIC OR TEXT STRING VARIABLES WHICH SIGNIFICANTLY
00382  M00S00380.secart  +++|*         INFLUENCES ORGANIZATION.  DEFINED COMMON BLOCKS ARE:
00383  M00S00381.secart  +++|*
00384  M00S00382.secart  +++|*         /ACL/  STRINGS, *ACCOUNT* LOG SPECIFIC VARIABLES.
00385  M00S00383.secart  +++|*
00386  M00S00384.secart  +++|*         /CTL/  NUMERIC, PROGRAM-WIDE VARIABLES & PARAMETERS.
00387  M00S00385.secart  +++|*
00388  M00S00386.secart  +++|*         /DFL/  STRINGS, *DAYFILE* LOG SPECIFIC VARIABLES.
00389  M00S00387.secart  +++|*
00390  M00S00388.secart  +++|*         /SRT/  STRINGS, TRACE TABLE SORT KEY IDENTIFIERS.
00391  M00S00389.secart  +++|*
00392  M00S00390.secart  +++|*         /SYS/  STRINGS, PROGRAM-WIDE VARIABLES.
00393  M00S00391.secart  +++|*
00394  M00S00392.secart  +++|*         /TRC/  STRINGS, JSN TRACE TABLE.
00395  M00S00393.secart  +++|
00396  M00S00394.secart  +++|**        SPECIAL TECHNIQUES.
00397  M00S00395.secart  +++|*
00398  M00S00396.secart  +++|*         THE PROGRAM INITIALIZATION SEQUENCE IS DESIGNED TO AVOID
00399  M00S00397.secart  +++|*         CONFLICTS BETWEEN DIRECTIVES AND INFORMATION CONTAINED IN
00400  M00S00398.secart  +++|*         DATA TABLE FILES, AND TO AUTOMATICALLY ACCOMMODATE OMMISSION
00401  M00S00399.secart  +++|*         OF INPUT FILES WHICH INDICATE RERUNS VERSUS INITIAL RAW LOGS
00402  M00S00400.secart  +++|*         PROCESSING RUNS.
00403  M00S00401.secart  +++|*
00404  M00S00402.secart  +++|*         THE USE OF TWO INDEPENDENT SUBROUTINES TO ENCAPSULATE I/O AND
00405  M00S00403.secart  +++|*         MESSAGE ANALYSIS FOR EACH RAW LOG ALLOWS THE MAIN PROGRAM TO
00406  M00S00404.secart  +++|*         FOCUS ON SYNCHRONIZATION OF MESSAGES FROM BOTH LOGS INTO A
00407  M00S00405.secart  +++|*         NEAR CAUSE-AND-EFFECT SEQUENCE FOR SUBSEQUENT PROCESSING.
00408  M00S00406.secart  +++|
00409  M00S00407.secart  +++|**        KNOWN LIMITATIONS.
00410  M00S00408.secart  +++|*
00411  M00S00409.secart  +++|*         THE PROGRAM-S CAPACITY FOR DIRECTIVE ARGUMENTS, MESSAGE ID-S,
00412  M00S00410.secart  +++|*         UNIQUE JSN-S, AND JSN TRACE TABLE SORT KEYS ARE LIMITED BY
00413  M00S00411.secart  +++|*         THEIR RESPECTIVE TABLE SIZES AND ULTIMATELY BY OVERALL
00414  M00S00412.secart  +++|*         PROGRAM SIZE.  FOR PERFORMANCE REASONS, NO ATTEMPT HAS BEEN
00415  M00S00413.secart  +++|*         MADE TO ACCOMMODATE DYNAMIC TABLE MANAGEMENT OR OVERFLOW TO
00416  M00S00414.secart  +++|*         MASS STORAGE.
00417  M00S00415.secart  +++|
00418  M00S00416.secart  +++|
00419  M00S00417.secart  +++|      IMPLICIT INTEGER(A-Z)
00420  M00S00418.secart  +++|
00421  M00S00419.secart  +++|      PARAMETER (MXJ=1000)
00422  M00S00420.secart  +++|*                            SIZE OF JSN TRACE TABLE.
00423  M00S00421.secart  +++|
00424  M00S00422.secart  +++|      PARAMETER (NK=8)
00425  M00S00423.secart  +++|*                            NUMBER OF COMMAND KEYWORD PARAMETERS.
00426  M00S00424.secart  +++|
00427  M00S00425.secart  +++|      EQUIVALENCE (ACSDTG,ACSDATE)
00428  M00S00426.secart  +++|*                            /ACL/ ACSDTG*20 = ACSDATE*10 // ACSTIME*10.
00429  M00S00427.secart  +++|
00430  M00S00428.secart  +++|      EQUIVALENCE (ACEDTG,ACEDATE)
00431  M00S00429.secart  +++|*                            /ACL/ ACEDTG*20 = ACEDATE*10 // ACETIME*10.
00432  M00S00430.secart  +++|
00433  M00S00431.secart  +++|      EQUIVALENCE (ACSYSID,ACTITLE)
00434  M00S00432.secart  +++|*                            /ACL/ ACSYSID*60 = ACTITLE*40//ACVERSN*20.
00435  M00S00433.secart  +++|
00436  M00S00434.secart  +++|      EQUIVALENCE (DFSDTG,DFSDATE)
00437  M00S00435.secart  +++|*                            /DFL/ DFSDTG*20 = DFSDATE*10 // DFSTIME*10.
00438  M00S00436.secart  +++|
00439  M00S00437.secart  +++|      EQUIVALENCE (DFEDTG,DFEDATE)
00440  M00S00438.secart  +++|*                            /DFL/ DFEDTG*20 = DFEDATE*10 // DFETIME*10.
00441  M00S00439.secart  +++|
00442  M00S00440.secart  +++|      EQUIVALENCE (DFSYSID,DFTITLE)
00443  M00S00441.secart  +++|*                            /DFL/ DFSYSID*60 = DFTITLE*40//DFVERSN*20.
00444  M00S00442.secart  +++|
00445  M00S00443.secart  +++|      CHARACTER*10  ACEDATE
00446  M00S00444.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG END DATE.
00447  M00S00445.secart  +++|
00448  M00S00446.secart  +++|      CHARACTER*10  ACETIME
00449  M00S00447.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG END TIME.
00450  M00S00448.secart  +++|
00451  M00S00449.secart  +++|      CHARACTER*20  ACEDTG
00452  M00S00450.secart  +++|*                            /ACL/ ACCOUNT LOG END DATE/TIME GROUP.
00453  M00S00451.secart  +++|
00454  M00S00452.secart  +++|      LOGICAL       ACEOF
00455  M00S00453.secart  +++|*                            /CTL/ ACCOUNT LOG EOF FLAG.
00456  M00S00454.secart  +++|
00457  M00S00455.secart  +++|      INTEGER       ACIN
00458  M00S00456.secart  +++|*                            /CTL/ ACCOUNT LOG MESSAGE COUNTER.
00459  M00S00457.secart  +++|
00460  M00S00458.secart  +++|      CHARACTER*10  ACSDATE
00461  M00S00459.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG START DATE.
00462  M00S00460.secart  +++|
00463  M00S00461.secart  +++|      CHARACTER*20  ACSDTG
00464  M00S00462.secart  +++|*                            /ACL/ ACCOUNT LOG START DATE/TIME GROUP.
00465  M00S00463.secart  +++|
00466  M00S00464.secart  +++|      CHARACTER*10  ACSTIME
00467  M00S00465.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG START TIME.
00468  M00S00466.secart  +++|
00469  M00S00467.secart  +++|      CHARACTER*60  ACSYSID
00470  M00S00468.secart  +++|*                            /ACL/ ACCOUNT LOG SYSTEM TITLE/VERSION.
00471  M00S00469.secart  +++|
00472  M00S00470.secart  +++|      CHARACTER*40  ACTITLE
00473  M00S00471.secart  +++|*                            /ACL/ ACCOUNT LOG SYSTEM TITLE.
00474  M00S00472.secart  +++|
00475  M00S00473.secart  +++|      CHARACTER*100 ACTXT
00476  M00S00474.secart  +++|*                            /ACL/ ACCOUNT LOG CURRENT MESSAGE TEXT.
00477  M00S00475.secart  +++|
00478  M00S00476.secart  +++|      CHARACTER*20  ACVERSN
00479  M00S00477.secart  +++|*                            /ACL/ ACCOUNT LOG SYSTEM VERSION.
00480  M00S00478.secart  +++|
00481  M00S00479.secart  +++|      CHARACTER*10  DATE
00482  M00S00480.secart  +++|*                            TYPING FOR FTN5 FUNCTION.
00483  M00S00481.secart  +++|
00484  M00S00482.secart  +++|      CHARACTER*7   DEF(NK)
00485  M00S00483.secart  +++|*                            *SECART* COMMAND KEYWORD DEFAULTS.
00486  M00S00484.secart  +++|
00487  M00S00485.secart  +++|      CHARACTER*10  DFEDATE
00488  M00S00486.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG END DATE.
00489  M00S00487.secart  +++|
00490  M00S00488.secart  +++|      CHARACTER*20  DFEDTG
00491  M00S00489.secart  +++|*                            /DFL/ DAYFILE LOG END DATE/TIME GROUP.
00492  M00S00490.secart  +++|
00493  M00S00491.secart  +++|      CHARACTER*10  DFETIME
00494  M00S00492.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG END TIME.
00495  M00S00493.secart  +++|
00496  M00S00494.secart  +++|      LOGICAL       DFEOF
00497  M00S00495.secart  +++|*                            /CTL/ DAYFILE LOG EOF FLAG.
00498  M00S00496.secart  +++|
00499  M00S00497.secart  +++|      INTEGER       DFIN
00500  M00S00498.secart  +++|*                            /CTL/ DAYFILE LOG MESSAGE COUNTER.
00501  M00S00499.secart  +++|
00502  M00S00500.secart  +++|      CHARACTER*10  DFSDATE
00503  M00S00501.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG START DATE.
00504  M00S00502.secart  +++|
00505  M00S00503.secart  +++|      CHARACTER*20  DFSDTG
00506  M00S00504.secart  +++|*                            /DFL/ DAYFILE LOG START DATE/TIME GROUP.
00507  M00S00505.secart  +++|
00508  M00S00506.secart  +++|      CHARACTER*10  DFSTIME
00509  M00S00507.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG START TIME.
00510  M00S00508.secart  +++|
00511  M00S00509.secart  +++|      CHARACTER*60  DFSYSID
00512  M00S00510.secart  +++|*                            /DFL/ DAYFILE LOG SYSTEM TITLE/VERSION.
00513  M00S00511.secart  +++|
00514  M00S00512.secart  +++|      CHARACTER*40  DFTITLE
00515  M00S00513.secart  +++|*                            /DFL/ DAYFILE LOG SYSTEM TITLE.
00516  M00S00514.secart  +++|
00517  M00S00515.secart  +++|      CHARACTER*20  DFVERSN
00518  M00S00516.secart  +++|*                            /DFL/ DAYFILE LOG SYSTEM VERSION.
00519  M00S00517.secart  +++|
00520  M00S00518.secart  +++|      CHARACTER*100 DFTXT
00521  M00S00519.secart  +++|*                            /DFL/ DAYFILE LOG CURRENT MESSAGE TEXT.
00522  M00S00520.secart  +++|
00523  M00S00521.secart  +++|      CHARACTER*1   DSU
00524  M00S00522.secart  +++|*                            /TRC/ DEADSTART UNIQUE PREFIX CODE.
00525  M00S00523.secart  +++|
00526  M00S00524.secart  +++|      CHARACTER*7   FN(MXJ)
00527  M00S00525.secart  +++|*                            /TRC/ FAMILY NAME COLUMN IN TRACE TABLE.
00528  M00S00526.secart  +++|
00529  M00S00527.secart  +++|      CHARACTER*40  HDR
00530  M00S00528.secart  +++|*                            /SYS/ PRINTOUT HEADER TEXT.
00531  M00S00529.secart  +++|
00532  M00S00530.secart  +++|      INTEGER       IPAGE
00533  M00S00531.secart  +++|*                            LOCAL PRINTOUT PAGE COUNTER.
00534  M00S00532.secart  +++|
00535  M00S00533.secart  +++|      INTEGER       JBLIMIT
00536  M00S00534.secart  +++|*                            /CTL/ UNIT JOB PRINTOUT MESSAGE LIMIT.
00537  M00S00535.secart  +++|
00538  M00S00536.secart  +++|      CHARACTER*1   JC(MXJ)
00539  M00S00537.secart  +++|*                            /TRC/ JOB CLASS COLUMN IN TRACE TABLE.
00540  M00S00538.secart  +++|
00541  M00S00539.secart  +++|      CHARACTER*7   JN(MXJ)
00542  M00S00540.secart  +++|*                            /TRC/ UJN COLUMN IN TRACE TABLE.
00543  M00S00541.secart  +++|
00544  M00S00542.secart  +++|      CHARACTER*6   JS(MXJ)
00545  M00S00543.secart  +++|*                            /TRC/ D.JSN COLUMN IN TRACE TABLE.
00546  M00S00544.secart  +++|
00547  M00S00545.secart  +++|      CHARACTER*6   JSN
00548  M00S00546.secart  +++|*                            TEMP - D.JSN VARIABLE.
00549  M00S00547.secart  +++|
00550  M00S00548.secart  +++|      CHARACTER*7   KWD(NK)
00551  M00S00549.secart  +++|*                            *SECART* COMMAND KEYWORD LIST.
00552  M00S00550.secart  +++|
00553  M00S00551.secart  +++|      CHARACTER*7   LFN(NK)
00554  M00S00552.secart  +++|*                            LFN LIST BUILT FROM *SECART* COMMAND.
00555  M00S00553.secart  +++|
00556  M00S00554.secart  +++|      CHARACTER*5   MK(MXJ)
00557  M00S00555.secart  +++|*                            /TRC/ JOB SELECTION MARKS IN TRACE TABLE.
00558  M00S00556.secart  +++|
00559  M00S00557.secart  +++|      INTEGER       ML(2,MXJ)
00560  M00S00558.secart  +++|*                            /CTL/ DFL/AFL MSG COUNTS FOR TRACE TABLE.
00561  M00S00559.secart  +++|
00562  M00S00560.secart  +++|      INTEGER       NJ
00563  M00S00561.secart  +++|*                            /CTL/ CURRENT NUMBER JOBS IN TRACE TABLE.
00564  M00S00562.secart  +++|
00565  M00S00563.secart  +++|      CHARACTER*7   P
00566  M00S00564.secart  +++|*                            TEMP USED IN *SECART* COMMAND PROCESSING.
00567  M00S00565.secart  +++|
00568  M00S00566.secart  +++|      CHARACTER*10  PGM
00569  M00S00567.secart  +++|*                            /SYS/ *SECART* VERSION ID FOR PRINTOUTS.
00570  M00S00568.secart  +++|
00571  M00S00569.secart  +++|      LOGICAL       PICKED
00572  M00S00570.secart  +++|*                            TEMP FLAG USED IN UNIT JOB PRINTOUT.
00573  M00S00571.secart  +++|
00574  M00S00572.secart  +++|      CHARACTER*10  RUNDT
00575  M00S00573.secart  +++|*                            /SYS/ *SECART* RUN DATE FOR PRINTOUTS.
00576  M00S00574.secart  +++|
00577  M00S00575.secart  +++|      CHARACTER*10  RUNTM
00578  M00S00576.secart  +++|*                            /SYS/ *SECART* RUN TIME FOR PRINTOUTS.
00579  M00S00577.secart  +++|
00580  M00S00578.secart  +++|      CHARACTER*3   SKY(12)
00581  M00S00579.secart  +++|*                            /SRT/ TRACE TABLE SORT KEYS.
00582  M00S00580.secart  +++|
00583  M00S00581.secart  +++|      CHARACTER*20  TE(MXJ)
00584  M00S00582.secart  +++|*                            /TRC/ JOB DATE/TIME END IN TRACE TABLE.
00585  M00S00583.secart  +++|
00586  M00S00584.secart  +++|      CHARACTER*10  TIME
00587  M00S00585.secart  +++|*                            TYPING FOR FTN5 FUNCTION.
00588  M00S00586.secart  +++|
00589  M00S00587.secart  +++|      CHARACTER*7   TN(MXJ)
00590  M00S00588.secart  +++|*                            /TRC/ JOB TERMINAL NAME IN TRACE TABLE.
00591  M00S00589.secart  +++|
00592  M00S00590.secart  +++|      CHARACTER*20  TS(MXJ)
00593  M00S00591.secart  +++|*                            /TRC/ JOB DATE/TIME START IN TRACE TABLE.
00594  M00S00592.secart  +++|
00595  M00S00593.secart  +++|      CHARACTER*6   UJSN
00596  M00S00594.secart  +++|*                            TEMP - D.JSN VARIABLE.
00597  M00S00595.secart  +++|
00598  M00S00596.secart  +++|      CHARACTER*7   UN(MXJ)
00599  M00S00597.secart  +++|*                            /TRC/ JOB USERNAME IN TRACE TABLE.
00600  M00S00598.secart  +++|
00601  M00S00599.secart  +++|      CHARACTER*7   V
00602  M00S00600.secart  +++|*                            TEMP - VALUE USED IN COMMAND PROCESSING.
00603  M00S00601.secart  +++|
00604  M00S00602.secart  +++|* ACCOUNT LOG SPECIFIC VARIABLES.
00605  M00S00603.secart  +++|
00606  M00S00604.secart  +++|      COMMON /ACL/  ACSDATE
00607  M00S00605.secart  +++|      COMMON /ACL/  ACSTIME
00608  M00S00606.secart  +++|      COMMON /ACL/  ACEDATE
00609  M00S00607.secart  +++|      COMMON /ACL/  ACETIME
00610  M00S00608.secart  +++|      COMMON /ACL/  ACTITLE
00611  M00S00609.secart  +++|      COMMON /ACL/  ACVERSN
00612  M00S00610.secart  +++|      COMMON /ACL/  ACTXT
00613  M00S00611.secart  +++|
00614  M00S00612.secart  +++|* GLOBAL NUMERIC/LOGICAL VARIABLES AND PARAMETERS.
00615  M00S00613.secart  +++|
00616  M00S00614.secart  +++|      COMMON /CTL/  NJ
00617  M00S00615.secart  +++|      COMMON /CTL/  ACIN
00618  M00S00616.secart  +++|      COMMON /CTL/  DFIN
00619  M00S00617.secart  +++|      COMMON /CTL/  ACEOF
00620  M00S00618.secart  +++|      COMMON /CTL/  DFEOF
00621  M00S00619.secart  +++|      COMMON /CTL/  ML
00622  M00S00620.secart  +++|      COMMON /CTL/  JBLIMIT
00623  M00S00621.secart  +++|
00624  M00S00622.secart  +++|* DAYFILE LOG SPECIFIC VARIABLES.
00625  M00S00623.secart  +++|
00626  M00S00624.secart  +++|      COMMON /DFL/  DFSDATE
00627  M00S00625.secart  +++|      COMMON /DFL/  DFSTIME
00628  M00S00626.secart  +++|      COMMON /DFL/  DFEDATE
00629  M00S00627.secart  +++|      COMMON /DFL/  DFETIME
00630  M00S00628.secart  +++|      COMMON /DFL/  DFTITLE
00631  M00S00629.secart  +++|      COMMON /DFL/  DFVERSN
00632  M00S00630.secart  +++|      COMMON /DFL/  DFTXT
00633  M00S00631.secart  +++|
00634  M00S00632.secart  +++|* JSN TRACE TABLE SORT PARAMETERS.
00635  M00S00633.secart  +++|
00636  M00S00634.secart  +++|      COMMON /SRT/  SKY
00637  M00S00635.secart  +++|
00638  M00S00636.secart  +++|* GLOBAL STRING VARIABLES.
00639  M00S00637.secart  +++|
00640  M00S00638.secart  +++|      COMMON /SYS/  HDR
00641  M00S00639.secart  +++|      COMMON /SYS/  PGM
00642  M00S00640.secart  +++|      COMMON /SYS/  RUNDT
00643  M00S00641.secart  +++|      COMMON /SYS/  RUNTM
00644  M00S00642.secart  +++|
00645  M00S00643.secart  +++|* JSN TRACE TABLE STORAGE.
00646  M00S00644.secart  +++|
00647  M00S00645.secart  +++|      COMMON /TRC/  DSU
00648  M00S00646.secart  +++|      COMMON /TRC/  MK
00649  M00S00647.secart  +++|      COMMON /TRC/  JN
00650  M00S00648.secart  +++|      COMMON /TRC/  JS
00651  M00S00649.secart  +++|      COMMON /TRC/  JC
00652  M00S00650.secart  +++|      COMMON /TRC/  TS
00653  M00S00651.secart  +++|      COMMON /TRC/  TE
00654  M00S00652.secart  +++|      COMMON /TRC/  FN
00655  M00S00653.secart  +++|      COMMON /TRC/  UN
00656  M00S00654.secart  +++|      COMMON /TRC/  TN
00657  M00S00655.secart  +++|
00658  M00S00656.secart  +++|      DATA ACEDTG  /' '/
00659  M00S00657.secart  +++|      DATA ACEOF   /.FALSE./
00660  M00S00658.secart  +++|      DATA ACIN    /0/
00661  M00S00659.secart  +++|      DATA ACSDTG  /' '/
00662  M00S00660.secart  +++|      DATA ACSYSID  /' '/
00663  M00S00661.secart  +++|      DATA DFEDTG  /' '/
00664  M00S00662.secart  +++|      DATA DFEOF   /.FALSE./
00665  M00S00663.secart  +++|      DATA DFIN    /0/
00666  M00S00664.secart  +++|      DATA DFSDTG  /' '/
00667  M00S00665.secart  +++|      DATA DFSYSID  /' '/
00668  M00S00666.secart  +++|      DATA DSU     /'A'/
00669  M00S00667.secart  +++|      DATA FN      /MXJ*' '/
00670  M00S00668.secart  +++|      DATA IPAGE   /1/
00671  M00S00669.secart  +++|      DATA JBLIMIT /99999/
00672  M00S00670.secart  +++|      DATA JC      /MXJ*' '/
00673  M00S00671.secart  +++|      DATA JN      /MXJ*' '/
00674  M00S00672.secart  +++|      DATA JS      /MXJ*' '/
00675  M00S00673.secart  +++|      DATA MK      /MXJ*' '/
00676  M00S00674.secart  +++|      DATA NJ      /0/
00677  M00S00675.secart  +++|      DATA PGM     /' SECART V1'/
00678  M00S00676.secart  +++|      DATA SKY     /12*'   '/
00679  M00S00677.secart  +++|      DATA TE      /MXJ*' '/
00680  M00S00678.secart  +++|      DATA TN      /MXJ*' '/
00681  M00S00679.secart  +++|      DATA TS      /MXJ*' '/
00682  M00S00680.secart  +++|      DATA UN      /MXJ*' '/
00683  M00S00681.secart  +++|      DATA (KWD(I) ,LFN(I)   ,DEF(I),I=1,NK)/
00684  M00S00682.secart  +++|     .      'D',   '0',      'DFLOG',
00685  M00S00683.secart  +++|     .      'A',   '0',      'ACLOG',
00686  M00S00684.secart  +++|     .      'C',   '0',      'COMBO',
00687  M00S00685.secart  +++|     .      'J',   '0',      'JOBS',
00688  M00S00686.secart  +++|     .      'M',   '0',      'MSGID',
00689  M00S00687.secart  +++|     .      'T',   '0',      'TRACE',
00690  M00S00688.secart  +++|     .      'I',   'INPUT',  'INPUT',
00691  M00S00689.secart  +++|     .      'L',   'OUTPUT', 'OUTPUT'/
00692  M00S00690.secart  +++|
00693  M00S00691.secart  +++|* ----------------------------------------------------------------------
00694  M00S00692.secart  +++|* INITIALIZATION PHASE
00695  M00S00693.secart  +++|* ----------------------------------------------------------------------
00696  M00S00694.secart  +++|
00697  M00S00695.secart  +++|      RUNDT=DATE()
00698  M00S00696.secart  +++|      RUNTM=TIME()
00699  M00S00697.secart  +++|
00700  M00S00698.secart  +++|* PROCESS EXECUTION PARAMETERS.
00701  M00S00699.secart  +++|
00702  M00S00700.secart  +++|  100 CALL GETPARM(P,V,J)
00703  M00S00701.secart  +++|      IF (J.LT.0) GOTO 130
00704  M00S00702.secart  +++|      DO 110 I=1,NK
00705  M00S00703.secart  +++|        IF (P.EQ.KWD(I)) GOTO 120
00706  M00S00704.secart  +++|  110 CONTINUE
00707  M00S00705.secart  +++|      CALL REMARK('   *** UNRECOGNIZED PARAMETER: '//P)
00708  M00S00706.secart  +++|      GOTO 100
00709  M00S00707.secart  +++|
00710  M00S00708.secart  +++|* SET TO VALUE OR DEFAULT.
00711  M00S00709.secart  +++|
00712  M00S00710.secart  +++|  120 IF (J.EQ.1) THEN
00713  M00S00711.secart  +++|        LFN(I)=DEF(I)
00714  M00S00712.secart  +++|      ELSE
00715  M00S00713.secart  +++|        IF (I.EQ.8 .AND. V.EQ.'0') THEN
00716  M00S00714.secart  +++|          CALL REMARK('   *** LIST FILE REQUIRED.')
00717  M00S00715.secart  +++|        ELSE
00718  M00S00716.secart  +++|          LFN(I)=V
00719  M00S00717.secart  +++|        ENDIF
00720  M00S00718.secart  +++|      ENDIF
00721  M00S00719.secart  +++|      GOTO 100
00722  M00S00720.secart  +++|
00723  M00S00721.secart  +++|* FIRST, OPEN LIST OUTPUT FILE.
00724  M00S00722.secart  +++|
00725  M00S00723.secart  +++|  130 OPEN (8,FILE=LFN(8))
00726  M00S00724.secart  +++|
00727  M00S00725.secart  +++|* SECOND, LOAD ACCOUNT LOG MESSAGE IDENTIFIERS, IF ANY,
00728  M00S00726.secart  +++|* BEFORE DIRECTIVES TO AVOID AMNESIA PROBLEM.
00729  M00S00727.secart  +++|
00730  M00S00728.secart  +++|      IF (LFN(5).NE.'0') THEN
00731  M00S00729.secart  +++|        OPEN (5,FILE=LFN(5))
00732  M00S00730.secart  +++|        CALL AMSLOAD
00733  M00S00731.secart  +++|        CLOSE (5)
00734  M00S00732.secart  +++|      ENDIF
00735  M00S00733.secart  +++|
00736  M00S00734.secart  +++|* THIRD, PROCESS DIRECTIVES, IF ANY.
00737  M00S00735.secart  +++|
00738  M00S00736.secart  +++|      IF (LFN(7).NE.'0') THEN
00739  M00S00737.secart  +++|        CALL REMARK(' READING DIRECTIVES...')
00740  M00S00738.secart  +++|        HDR='S E C A R T   D I R E C T I V E S '
00741  M00S00739.secart  +++|        WRITE (8,10) HDR,PGM,RUNDT,RUNTM,IPAGE
00742  M00S00740.secart  +++|  10    FORMAT('1',A40,3A10,' PG',I3)
00743  M00S00741.secart  +++|        OPEN (7,FILE=LFN(7))
00744  M00S00742.secart  +++|        CALL DIRECT
00745  M00S00743.secart  +++|        CLOSE (7)
00746  M00S00744.secart  +++|      ENDIF
00747  M00S00745.secart  +++|
00748  M00S00746.secart  +++|* FOURTH, LOAD PREVIOUS JSN TRACE TABLE, IF ANY.
00749  M00S00747.secart  +++|
00750  M00S00748.secart  +++|      IF (LFN(6).NE.'0') THEN
00751  M00S00749.secart  +++|        CALL REMARK(' LOADING TRACE TABLE...')
00752  M00S00750.secart  +++|        OPEN (6,FILE=LFN(6))
00753  M00S00751.secart  +++|        CALL JSNLOAD
00754  M00S00752.secart  +++|        CLOSE (6)
00755  M00S00753.secart  +++|      ENDIF
00756  M00S00754.secart  +++|
00757  M00S00755.secart  +++|* ----------------------------------------------------------------------
00758  M00S00756.secart  +++|* PHASE 1:  MERGE AND SCREEN RAW LOGS, BUILD TRACE TABLE AND PICK JOBS.
00759  M00S00757.secart  +++|* ----------------------------------------------------------------------
00760  M00S00758.secart  +++|
00761  M00S00759.secart  +++|
00762  M00S00760.secart  +++|* PREVIEW EACH LOG TO OBTAIN SYSID, START DATE/TIME GROUP.
00763  M00S00761.secart  +++|
00764  M00S00762.secart  +++|      IF (LFN(1).NE.'0') THEN
00765  M00S00763.secart  +++|        OPEN (1,FILE=LFN(1))
00766  M00S00764.secart  +++|        CALL DFSCAN(LFN(1),*140)
00767  M00S00765.secart  +++|      ELSE
00768  M00S00766.secart  +++|        DFEOF=.TRUE.
00769  M00S00767.secart  +++|      ENDIF
00770  M00S00768.secart  +++|
00771  M00S00769.secart  +++|* NOW, RAW ACCOUNT LOG.
00772  M00S00770.secart  +++|
00773  M00S00771.secart  +++|  140 IF (LFN(2).NE.'0') THEN
00774  M00S00772.secart  +++|        OPEN (2,FILE=LFN(2))
00775  M00S00773.secart  +++|        CALL ACSCAN(LFN(2),*150)
00776  M00S00774.secart  +++|      ELSE
00777  M00S00775.secart  +++|        ACEOF=.TRUE.
00778  M00S00776.secart  +++|      ENDIF
00779  M00S00777.secart  +++|
00780  M00S00778.secart  +++|* CHECK FOR NO RAW LOG INPUT.
00781  M00S00779.secart  +++|
00782  M00S00780.secart  +++|  150 IF (ACIN+DFIN.EQ.0) GOTO 210
00783  M00S00781.secart  +++|      IPAGE=IPAGE+1
00784  M00S00782.secart  +++|      HDR='S C R E E N E D   M E S S A G E S'
00785  M00S00783.secart  +++|      WRITE (8,10) HDR,PGM,RUNDT,RUNTM,IPAGE
00786  M00S00784.secart  +++|      IF (.NOT.DFEOF) WRITE (8,11) 'DAYFILE',DFSDTG,DFSYSID
00787  M00S00785.secart  +++|      IF (.NOT.ACEOF) WRITE (8,11) 'ACCOUNT',ACSDTG,ACSYSID
00788  M00S00786.secart  +++|  11  FORMAT(5X,A7,' FROM',A20 /5X,'SYSTEM ID:   ',A60)
00789  M00S00787.secart  +++|
00790  M00S00788.secart  +++|* IF BOTH LOGS, CHECK FOR SYSTEM ID OR DATE MISMATCHES.
00791  M00S00789.secart  +++|
00792  M00S00790.secart  +++|      IF (ACIN*DFIN.NE.0) THEN
00793  M00S00791.secart  +++|        IF (ACSYSID.NE.DFSYSID) THEN
00794  M00S00792.secart  +++|          CALL REMARK('   *** SYSTEM ID MISMATCH ***')
00795  M00S00793.secart  +++|          STOP '   *** SECART TERMINATED.'
00796  M00S00794.secart  +++|        ENDIF
00797  M00S00795.secart  +++|        IF (ACSDATE.NE.DFSDATE) THEN
00798  M00S00796.secart  +++|          CALL REMARK('   *** LOG DATES MISMATCH.')
00799  M00S00797.secart  +++|        ENDIF
00800  M00S00798.secart  +++|      ENDIF
00801  M00S00799.secart  +++|
00802  M00S00800.secart  +++|* ANNOTATED LOG DATA MUST BE WRITTEN TO COMBO LOG FILE.
00803  M00S00801.secart  +++|
00804  M00S00802.secart  +++|      IF (LFN(3).EQ.'0') LFN(3)='TAPE3'
00805  M00S00803.secart  +++|      OPEN (3,FILE=LFN(3))
00806  M00S00804.secart  +++|
00807  M00S00805.secart  +++|* RECORD SOURCE LOG IDENTIFICATIONS IN COMPOSITE LOG.
00808  M00S00806.secart  +++|
00809  M00S00807.secart  +++|      IF (DFSDATE.NE.' ')
00810  M00S00808.secart  +++|     .  WRITE (3,13) DFSTIME,'- DAYFILE   ',DFSDATE,DFSYSID
00811  M00S00809.secart  +++|      IF (ACSDATE.NE.' ')
00812  M00S00810.secart  +++|     .  WRITE (3,13) ACSTIME,' +ACCOUNT   ',ACSDATE,ACSYSID
00813  M00S00811.secart  +++|  13  FORMAT(A10,8X,A12,A10,A60)
00814  M00S00812.secart  +++|
00815  M00S00813.secart  +++|      CALL REMARK(' DIGESTING RAW LOG(S)...')
00816  M00S00814.secart  +++|      IF (DFEOF) GOTO 170
00817  M00S00815.secart  +++|
00818  M00S00816.secart  +++|* SYNCHRONIZE PROCESSING AND MERGE LOGS.
00819  M00S00817.secart  +++|
00820  M00S00818.secart  +++|  160 CALL DFMSG(*180)
00821  M00S00819.secart  +++|      IF (.NOT.ACEOF .AND. ACEDTG.LT.DFEDTG) GOTO 170
00822  M00S00820.secart  +++|      GOTO 160
00823  M00S00821.secart  +++|
00824  M00S00822.secart  +++|* BIAS TO CLUMP DFL MSGS BEFORE ACL MSGS IN SAME SECOND.
00825  M00S00823.secart  +++|* SOME ACCOUNT LOG MSID-S TWEAK DTG TO PRECEDE DAYFILE MSG.
00826  M00S00824.secart  +++|
00827  M00S00825.secart  +++|  170 CALL ACMSG(*190)
00828  M00S00826.secart  +++|      IF (.NOT.DFEOF .AND. DFEDTG.LE.ACEDTG) GOTO 160
00829  M00S00827.secart  +++|      GOTO 170
00830  M00S00828.secart  +++|
00831  M00S00829.secart  +++|* END-OF-FILE DECISIONS.
00832  M00S00830.secart  +++|
00833  M00S00831.secart  +++|  180 CLOSE (1)
00834  M00S00832.secart  +++|      IF (.NOT.ACEOF) GOTO 170
00835  M00S00833.secart  +++|      GOTO 200
00836  M00S00834.secart  +++|
00837  M00S00835.secart  +++|  190 CLOSE (2)
00838  M00S00836.secart  +++|      IF (.NOT.DFEOF) GOTO 160
00839  M00S00837.secart  +++|
00840  M00S00838.secart  +++|* COMPLETED MERGE PASS (BURP!).
00841  M00S00839.secart  +++|
00842  M00S00840.secart  +++|  200 CLOSE (3)
00843  M00S00841.secart  +++|
00844  M00S00842.secart  +++|* ----------------------------------------------------------------------
00845  M00S00843.secart  +++|* PHASE 2:  INTERMEDIATE PRINTOUTS.
00846  M00S00844.secart  +++|* ----------------------------------------------------------------------
00847  M00S00845.secart  +++|
00848  M00S00846.secart  +++|* PRINTOUT ACCOUNT MESSAGE STATISTICS.
00849  M00S00847.secart  +++|
00850  M00S00848.secart  +++|      IF (ACIN.GT.0) THEN
00851  M00S00849.secart  +++|        CALL REMARK(' ACCOUNT MSG STATISTICS...')
00852  M00S00850.secart  +++|        CALL AMSLIST
00853  M00S00851.secart  +++|      ENDIF
00854  M00S00852.secart  +++|
00855  M00S00853.secart  +++|* PRINTOUT JSN/USER/TERMINAL TRACE TABLE (SORT OPTIONAL).
00856  M00S00854.secart  +++|
00857  M00S00855.secart  +++|  210 IF (NJ.GT.0) THEN
00858  M00S00856.secart  +++|        CALL REMARK(' TRACE TABLE PRINTOUT...')
00859  M00S00857.secart  +++|
00860  M00S00858.secart  +++|* UNIT 6 FILE REQUIRED FOR TRACE TABLE OUTPUT.
00861  M00S00859.secart  +++|
00862  M00S00860.secart  +++|        IF (LFN(6).EQ.'0') LFN(6)='TAPE6'
00863  M00S00861.secart  +++|        OPEN (6,FILE=LFN(6))
00864  M00S00862.secart  +++|        OPEN (9,STATUS='SCRATCH')
00865  M00S00863.secart  +++|        CALL JSNLIST(LFN(6))
00866  M00S00864.secart  +++|        CLOSE (6)
00867  M00S00865.secart  +++|        CLOSE (9)
00868  M00S00866.secart  +++|      ENDIF
00869  M00S00867.secart  +++|
00870  M00S00868.secart  +++|* ----------------------------------------------------------------------
00871  M00S00869.secart  +++|* PHASE 3:  SORT COMPOSITE LOG BY UNIQUE JSN TO GROUP INTO UNIT JOBS.
00872  M00S00870.secart  +++|* ----------------------------------------------------------------------
00873  M00S00871.secart  +++|
00874  M00S00872.secart  +++|* SORT UNIT 3 COMPOSITE LOG, IF PRODUCED/PROVIDED, TO UNIT 4 JOBS FILE,
00875  M00S00873.secart  +++|* REQUIRED FOR OUTPUT.
00876  M00S00874.secart  +++|
00877  M00S00875.secart  +++|      IF (LFN(3).EQ.'0') GOTO 220
00878  M00S00876.secart  +++|      OPEN (3,FILE=LFN(3))
00879  M00S00877.secart  +++|      REWIND 3
00880  M00S00878.secart  +++|      IF (LFN(4).EQ.'0') LFN(4)='TAPE4'
00881  M00S00879.secart  +++|      OPEN (4,FILE=LFN(4))
00882  M00S00880.secart  +++|      CALL REMARK(' SORTING OUT JOBS...')
00883  M00S00881.secart  +++|      CALL SM5SORT(0)
00884  M00S00882.secart  +++|      CALL SM5ENR(ACIN+DFIN)
00885  M00S00883.secart  +++|      CALL SM5FROM(LFN(3))
00886  M00S00884.secart  +++|      CALL SM5TO(LFN(4))
00887  M00S00885.secart  +++|      CALL SM5KEY(11,6,'DISPLAY','A')
00888  M00S00886.secart  +++|      CALL SM5RETA('YES')
00889  M00S00887.secart  +++|      CALL SM5END
00890  M00S00888.secart  +++|      CLOSE (3)
00891  M00S00889.secart  +++|      CLOSE (4)
00892  M00S00890.secart  +++|
00893  M00S00891.secart  +++|* ----------------------------------------------------------------------
00894  M00S00892.secart  +++|* PHASE 4:  EXTRACT UNIT JOBS FROM JOBS LOG FOR PRINTOUT.
00895  M00S00893.secart  +++|* ----------------------------------------------------------------------
00896  M00S00894.secart  +++|
00897  M00S00895.secart  +++|  220 IF (LFN(4).EQ.'0') GOTO 250
00898  M00S00896.secart  +++|      OPEN (4,FILE=LFN(4))
00899  M00S00897.secart  +++|      REWIND 4
00900  M00S00898.secart  +++|      CALL REMARK(' EXTRACTING SELECTED JOBS...')
00901  M00S00899.secart  +++|      IPAGE=IPAGE+1
00902  M00S00900.secart  +++|      HDR='S E L E C T E D   J O B S'
00903  M00S00901.secart  +++|      WRITE (8,10) HDR,PGM,RUNDT,RUNTM,IPAGE
00904  M00S00902.secart  +++|      UJSN=' '
00905  M00S00903.secart  +++|
00906  M00S00904.secart  +++|  230 READ (4,14,END=240) DFTXT
00907  M00S00905.secart  +++|  14  FORMAT(A100)
00908  M00S00906.secart  +++|      JSN=DFTXT(11:16)
00909  M00S00907.secart  +++|      IF (JSN.NE.UJSN) THEN
00910  M00S00908.secart  +++|        UJSN=JSN
00911  M00S00909.secart  +++|        CALL JSNLOOK(JSN,N)
00912  M00S00910.secart  +++|        PICKED=MK(N).NE.'     '
00913  M00S00911.secart  +++|        IF (PICKED) THEN
00914  M00S00912.secart  +++|          WRITE (8,18)
00915  M00S00913.secart  +++|  18      FORMAT('0')
00916  M00S00914.secart  +++|          J=JBLIMIT
00917  M00S00915.secart  +++|        ENDIF
00918  M00S00916.secart  +++|      ENDIF
00919  M00S00917.secart  +++|
00920  M00S00918.secart  +++|* PRINTOUT JOB TILL SAMPLE LIMIT.
00921  M00S00919.secart  +++|
00922  M00S00920.secart  +++|      IF (PICKED) THEN
00923  M00S00921.secart  +++|        IF (J.GT.0) THEN
00924  M00S00922.secart  +++|          WRITE (8,14) DFTXT
00925  M00S00923.secart  +++|          J=J-1
00926  M00S00924.secart  +++|          IF (J.EQ.0) WRITE (8,*)
00927  M00S00925.secart  +++|     .      '  ========= S A M P L E   L I M I T ========='
00928  M00S00926.secart  +++|        ENDIF
00929  M00S00927.secart  +++|      ENDIF
00930  M00S00928.secart  +++|      GOTO 230
00931  M00S00929.secart  +++|
00932  M00S00930.secart  +++|  240 CLOSE (4)
00933  M00S00931.secart  +++|
00934  M00S00932.secart  +++|* FINISHED.
00935  M00S00933.secart  +++|
00936  M00S00934.secart  +++|  250 CALL REMARK(' SECART COMPLETED.')
00937  M00S00935.secart  +++|      CLOSE (8)
00938  M00S00936.secart  +++|      END
00939  M00S00937.secart  +++|
00940  M00S00938.secart  +++|* ---------------------------------------------------------------------
00941  M00S00939.secart  +++|      SUBROUTINE DIRECT
00942  M00S00940.secart  +++|**        DIRECT - SECART DIRECTIVES PROCESSING.
00943  M00S00941.secart  +++|*
00944  M00S00942.secart  +++|*         THIS MODULE HANDLES ALL ASPECTS OF DIRECTIVES PROCESSING AND
00945  M00S00943.secart  +++|*         PROVIDES MULTIPLE ENTRY POINT FOR PURPOSES SUCH AS: ACCEPTING
00946  M00S00944.secart  +++|*         *SECART* DIRECTIVES DURING INITIALIZATION PHASE AND STORING
00947  M00S00945.secart  +++|*         SELECTION ARGUMENTS IN INTERNAL ARRAYS, MARKING ACCOUNT LOG
00948  M00S00946.secart  +++|*         MESSAGE ID-S FOR PRINTOUT SELECTION, AND CHECKING LOG DATA
00949  M00S00947.secart  +++|*         AGAINST SELECTION ARGUMENTS DURING RAW LOGS PROCESSING.
00950  M00S00948.secart  +++|
00951  M00S00949.secart  +++|
00952  M00S00950.secart  +++|      IMPLICIT INTEGER(A-Z)
00953  M00S00951.secart  +++|      PARAMETER (MXJ=1000)
00954  M00S00952.secart  +++|*                            SIZE OF JSN TRACE TABLE.
00955  M00S00953.secart  +++|
00956  M00S00954.secart  +++|      PARAMETER (MXP=50)
00957  M00S00955.secart  +++|*                            SIZE OF DIRECTIVE ARGUMENT TABLES.
00958  M00S00956.secart  +++|
00959  M00S00957.secart  +++|      LOGICAL       ACEOF
00960  M00S00958.secart  +++|*                            /CTL/ ACCOUNT LOG EOF FLAG.
00961  M00S00959.secart  +++|
00962  M00S00960.secart  +++|      INTEGER       ACIN
00963  M00S00961.secart  +++|*                            /CTL/ ACCOUNT LOG MESSAGE COUNTER.
00964  M00S00962.secart  +++|
00965  M00S00963.secart  +++|      LOGICAL       DFEOF
00966  M00S00964.secart  +++|*                            /CTL/ DAYFILE LOG EOF FLAG.
00967  M00S00965.secart  +++|
00968  M00S00966.secart  +++|      INTEGER       DFIN
00969  M00S00967.secart  +++|*                            /CTL/ DAYFILE LOG MESSAGE COUNTER.
00970  M00S00968.secart  +++|
00971  M00S00969.secart  +++|      CHARACTER*80  DIR
00972  M00S00970.secart  +++|*                            *SECART* DIRECTIVE TEXT STRING.
00973  M00S00971.secart  +++|
00974  M00S00972.secart  +++|      LOGICAL       ERR
00975  M00S00973.secart  +++|*                            DIRECTIVE ERROR(S) FLAG.
00976  M00S00974.secart  +++|
00977  M00S00975.secart  +++|      CHARACTER*10  ETM
00978  M00S00976.secart  +++|*                            ARG - MESSAGE TIMESTAMP.
00979  M00S00977.secart  +++|
00980  M00S00978.secart  +++|      CHARACTER*7   FAM(MXP)
00981  M00S00979.secart  +++|*                            USER= DIRECTIVE FAMILYNAME ARGUMENTS.
00982  M00S00980.secart  +++|
00983  M00S00981.secart  +++|      CHARACTER*7   FAMILY
00984  M00S00982.secart  +++|*                            TEMP - FAMILYNAME VARIABLE.
00985  M00S00983.secart  +++|
00986  M00S00984.secart  +++|      CHARACTER*7   FN
00987  M00S00985.secart  +++|*                            ARG - FAMILYNAME TO CHECK.
00988  M00S00986.secart  +++|
00989  M00S00987.secart  +++|      LOGICAL       HIT
00990  M00S00988.secart  +++|*                            ARG - FLAG RETURNED TO SHOW SELECTION.
00991  M00S00989.secart  +++|
00992  M00S00990.secart  +++|      INTEGER       ITX(MXP)
00993  M00S00991.secart  +++|*                            DMSG= DIRECTIVE CHARACTER START POSITIONS.
00994  M00S00992.secart  +++|
00995  M00S00993.secart  +++|      INTEGER       IW
00996  M00S00994.secart  +++|*                            LOCAL - CURRENT TIME WINDOW INDEX.
00997  M00S00995.secart  +++|
00998  M00S00996.secart  +++|      INTEGER       JBLIMIT
00999  M00S00997.secart  +++|*                            /CTL/ UNIT JOB PRINTOUT MESSAGE LIMIT.
01000  M00S00998.secart  +++|
01001  M00S00999.secart  +++|      CHARACTER*7   JN
01002  M00S01000.secart  +++|*                            ARG - JOBNAME TO CHECK.
01003  M00S01001.secart  +++|
01004  M00S01002.secart  +++|      CHARACTER*7   JOBNAME
01005  M00S01003.secart  +++|*                            TEMP - JOBNAME VARIABLE.
01006  M00S01004.secart  +++|
01007  M00S01005.secart  +++|      CHARACTER*6   JS
01008  M00S01006.secart  +++|*                            ARG - JSN TO CHECK.
01009  M00S01007.secart  +++|
01010  M00S01008.secart  +++|      CHARACTER*6   JSN(MXP)
01011  M00S01009.secart  +++|*                            JSN= DIRECTIVE ARGUMENTS.
01012  M00S01010.secart  +++|
01013  M00S01011.secart  +++|      INTEGER       LTX(MXP)
01014  M00S01012.secart  +++|*                            DMSG= DIRECTIVE LAST CHARACTER POSITIONS.
01015  M00S01013.secart  +++|
01016  M00S01014.secart  +++|      CHARACTER*4   MID
01017  M00S01015.secart  +++|*                            TEMP - FOR AMSG= DIRECTIVE MSG ID.
01018  M00S01016.secart  +++|
01019  M00S01017.secart  +++|      CHARACTER*5   MK
01020  M00S01018.secart  +++|*                            ARG - TRACE TABLE MARKS TO BE UPDATED.
01021  M00S01019.secart  +++|
01022  M00S01020.secart  +++|      INTEGER       ML(2,MXJ)
01023  M00S01021.secart  +++|*                            /CTL/ DFL/AFL MSG COUNTS FOR TRACE TABLE.
01024  M00S01022.secart  +++|
01025  M00S01023.secart  +++|      CHARACTER*40  MTX(MXP)
01026  M00S01024.secart  +++|*                            DMSG= DIRECTIVE MESSAGE STRINGS.
01027  M00S01025.secart  +++|
01028  M00S01026.secart  +++|      INTEGER       NJ
01029  M00S01027.secart  +++|*                            /CTL/ CURRENT NUMBER JOBS IN TRACE TABLE.
01030  M00S01028.secart  +++|
01031  M00S01029.secart  +++|      INTEGER       NM
01032  M00S01030.secart  +++|*                            NUMBER OF DMSG= ARGUMENTS STORED.
01033  M00S01031.secart  +++|
01034  M00S01032.secart  +++|      INTEGER       NN
01035  M00S01033.secart  +++|*                            NUMBER OF UJN= ARGUMENTS STORED.
01036  M00S01034.secart  +++|
01037  M00S01035.secart  +++|      INTEGER       NP
01038  M00S01036.secart  +++|*                            NUMBER OF UJN= ARGUMENTS STORED.
01039  M00S01037.secart  +++|
01040  M00S01038.secart  +++|      INTEGER       NS
01041  M00S01039.secart  +++|*                            NUMBER OF JSN= ARGUMENTS STORED.
01042  M00S01040.secart  +++|
01043  M00S01041.secart  +++|      INTEGER       NT
01044  M00S01042.secart  +++|*                            NUMBER OF TRM= ARGUMENTS STORED.
01045  M00S01043.secart  +++|
01046  M00S01044.secart  +++|      INTEGER       NU
01047  M00S01045.secart  +++|*                            NUMBER OF USER= ARGUMENTS STORED.
01048  M00S01046.secart  +++|
01049  M00S01047.secart  +++|      CHARACTER*3   SKY(12)
01050  M00S01048.secart  +++|*                            /SRT/ TRACE TABLE SORT KEYS.
01051  M00S01049.secart  +++|
01052  M00S01050.secart  +++|      CHARACTER*7   TERMINL
01053  M00S01051.secart  +++|*                            TEMP - TRM= VARIABLE.
01054  M00S01052.secart  +++|
01055  M00S01053.secart  +++|      CHARACTER*10  TME(MXP)
01056  M00S01054.secart  +++|*                            TIME= DIRECTIVE TIME END ARGUMENTS.
01057  M00S01055.secart  +++|
01058  M00S01056.secart  +++|      CHARACTER*10  TMS(MXP)
01059  M00S01057.secart  +++|*                            TIME= DIRECTIVE TIME START ARGUMENTS.
01060  M00S01058.secart  +++|
01061  M00S01059.secart  +++|      CHARACTER*7   TN
01062  M00S01060.secart  +++|*                            ARG - TERMINAL ID TO CHECK.
01063  M00S01061.secart  +++|
01064  M00S01062.secart  +++|      CHARACTER*7   TRM(MXP)
01065  M00S01063.secart  +++|*                            TRM= DIRECTIVE ARGUMENTS.
01066  M00S01064.secart  +++|
01067  M00S01065.secart  +++|      CHARACTER*80  TXT
01068  M00S01066.secart  +++|*                            ARG - MESSAGE TEXT TO CHECK.
01069  M00S01067.secart  +++|
01070  M00S01068.secart  +++|      CHARACTER*7   UJN(MXP)
01071  M00S01069.secart  +++|*                            UJN= DIRECTIVE ARGUMENTS.
01072  M00S01070.secart  +++|
01073  M00S01071.secart  +++|      CHARACTER*7   UN
01074  M00S01072.secart  +++|*                            ARG - USERNAME TO CHECK.
01075  M00S01073.secart  +++|
01076  M00S01074.secart  +++|      CHARACTER*7   USER
01077  M00S01075.secart  +++|*                            TEMP - USERNAME VARIABLE.
01078  M00S01076.secart  +++|
01079  M00S01077.secart  +++|      CHARACTER*7   USR(MXP)
01080  M00S01078.secart  +++|*                            USER= DIRECTIVE ARGUMENTS.
01081  M00S01079.secart  +++|
01082  M00S01080.secart  +++|      LOGICAL       WINDOW
01083  M00S01081.secart  +++|*                            FLAG TO REMEMBER TIME WINDOW IS OPEN.
01084  M00S01082.secart  +++|
01085  M00S01083.secart  +++|
01086  M00S01084.secart  +++|* GLOBAL NUMERIC/LOGICAL VARIABLES AND PARAMETERS.
01087  M00S01085.secart  +++|
01088  M00S01086.secart  +++|      COMMON /CTL/  NJ
01089  M00S01087.secart  +++|      COMMON /CTL/  ACIN
01090  M00S01088.secart  +++|      COMMON /CTL/  DFIN
01091  M00S01089.secart  +++|      COMMON /CTL/  ACEOF
01092  M00S01090.secart  +++|      COMMON /CTL/  DFEOF
01093  M00S01091.secart  +++|      COMMON /CTL/  ML
01094  M00S01092.secart  +++|      COMMON /CTL/  JBLIMIT
01095  M00S01093.secart  +++|
01096  M00S01094.secart  +++|* JSN TRACE TABLE SORT PARAMETERS.
01097  M00S01095.secart  +++|
01098  M00S01096.secart  +++|      COMMON /SRT/  SKY
01099  M00S01097.secart  +++|
01100  M00S01098.secart  +++|      DATA FAM      /MXP*' '/
01101  M00S01099.secart  +++|      DATA ITX      /MXP*0/
01102  M00S01100.secart  +++|      DATA JSN      /MXP*' '/
01103  M00S01101.secart  +++|      DATA LTX      /MXP*0/
01104  M00S01102.secart  +++|      DATA MTX      /MXP*' '/
01105  M00S01103.secart  +++|      DATA NM       /0/
01106  M00S01104.secart  +++|      DATA NN       /0/
01107  M00S01105.secart  +++|      DATA NP       /0/
01108  M00S01106.secart  +++|      DATA NS       /0/
01109  M00S01107.secart  +++|      DATA NT       /0/
01110  M00S01108.secart  +++|      DATA NU       /0/
01111  M00S01109.secart  +++|      DATA TME      /MXP*' '/
01112  M00S01110.secart  +++|      DATA TMS      /MXP*' '/
01113  M00S01111.secart  +++|      DATA TRM      /MXP*' '/
01114  M00S01112.secart  +++|      DATA UJN      /MXP*' '/
01115  M00S01113.secart  +++|      DATA USR      /MXP*' '/
01116  M00S01114.secart  +++|
01117  M00S01115.secart  +++|
01118  M00S01116.secart  +++|**        ENTRY -  CALL DIRECT  [NO ARGUMENTS].
01119  M00S01117.secart  +++|*                  UNIT 7 FILE CONTAINS DIRECTIVES INPUT.
01120  M00S01118.secart  +++|*
01121  M00S01119.secart  +++|*         EXIT -   UNIT 8 FILE CONTAINS PRINTOUT OF DIRECTIVES.
01122  M00S01120.secart  +++|*                  ARRAYS WITHIN MODULE CONTAIN SELECTION ARGUMENTS.
01123  M00S01121.secart  +++|*
01124  M00S01122.secart  +++|*         ERROR -  MESSAGES IN PRINTOUT AND DAYFILE:
01125  M00S01123.secart  +++|*                  *** UNRECOGNIZED DIRECTIVE ***
01126  M00S01124.secart  +++|*                  *** TOO MANY ARGUMENTS, EXCESS IGNORED.
01127  M00S01125.secart  +++|*                  *** DIRECTIVE ERROR(S).  [DAYFILE]
01128  M00S01126.secart  +++|*
01129  M00S01127.secart  +++|*         USES -   /CTL/ TO SET JBLIMIT.
01130  M00S01128.secart  +++|*                  /SRT/ TO STORE JSN TRACE TABLE SORT KEYS IN SKY(I).
01131  M00S01129.secart  +++|*
01132  M00S01130.secart  +++|*         CALLS -  *PARSE* TO EXTRACT WORDS FROM DIRECTIVES.
01133  M00S01131.secart  +++|*                  *TMARG* TO EXTRACT TIME ARGUMENTS FROM DIRECTIVES.
01134  M00S01132.secart  +++|*                  *AMSMARK* TO MARK ACCOUNT MESSAGE ID-S FOR SELECTION.
01135  M00S01133.secart  +++|*
01136  M00S01134.secart  +++|*         NOTES -  ARRAYS FOR STORAGE OF SELECTION ARGUMENTS ARE ALL
01137  M00S01135.secart  +++|*                  SAME SIZE, DEFINED VIA PARAMETER FOR CODE SIMPLICITY.
01138  M00S01136.secart  +++|*
01139  M00S01137.secart  +++|*
01140  M00S01138.secart  +++|*         DIRECTIVES -
01141  M00S01139.secart  +++|*
01142  M00S01140.secart  +++|*         AMSG=MSID,...        SCAN ACCOUNT MSG IDENTIFIERS FOR PRINT.
01143  M00S01141.secart  +++|*
01144  M00S01142.secart  +++|*         DMSG=[NN:]TEXT_STR   SCAN DAYFILE TEXT STRING FOR PRINTOUT.
01145  M00S01143.secart  +++|*                              NN IS START CHR [1-80] W/IN TEXT FIELD.
01146  M00S01144.secart  +++|*
01147  M00S01145.secart  +++|*         TIME=HHMMSS[-HHMMSS] SCAN TIME PERIOD FOR PRINTOUT.  EITHER
01148  M00S01146.secart  +++|*          (OR) HH.MM.SS.      FORMAT ACCEPTED, SECONDS OPTIONAL, END
01149  M00S01147.secart  +++|*                              TIME OPTIONAL BUT REQUIRES '-' SEPARATOR.
01150  M00S01148.secart  +++|*
01151  M00S01149.secart  +++|*         TRACE=KEY,...        SORT KEYS FOR TRACE TABLE PRINTOUT.
01152  M00S01150.secart  +++|*                              VALID KEYS: UJN,JSN,JC,SDT,EDT,FM,UN,TRM.
01153  M00S01151.secart  +++|*
01154  M00S01152.secart  +++|*         USER=FAMILY,USER     SELECT JOBS FOR PRINTOUT BY USER NAME/
01155  M00S01153.secart  +++|*                              INDEX (VIA *SUI* COMMANDS).
01156  M00S01154.secart  +++|*                              USE BLANK OR OMIT FOR DEFAULT FAMILY.
01157  M00S01155.secart  +++|*                              USE * FOR WILDCARD MATCH.  (NOTE THAT
01158  M00S01156.secart  +++|*                              USER=*,* SELECTS EVERY JOB!!)
01159  M00S01157.secart  +++|*
01160  M00S01158.secart  +++|*         UJN=JOBNAME,...      SELECT JOBS FOR PRINTOUT BY JOBNAME.
01161  M00S01159.secart  +++|*
01162  M00S01160.secart  +++|*         JSN=[D.]AAAA,...     SELECT UNIT JOBS FOR PRINTOUT BY JSN.
01163  M00S01161.secart  +++|*                              OPTIONAL PREFIX IS D/S UNIQUE CODE USED
01164  M00S01162.secart  +++|*                              TO RESOLVE JSN AMBIGUITIES ACROSS LEVEL
01165  M00S01163.secart  +++|*                              ZERO DEADSTARTS.
01166  M00S01164.secart  +++|*
01167  M00S01165.secart  +++|*         TRM=TERMID,...       SELECT JOBS FOR PRINTOUT BY TERMINAL ID.
01168  M00S01166.secart  +++|*
01169  M00S01167.secart  +++|*         LIMIT=NNNN           LIMIT JOB PRINTOUTS TO NNNN LINES EACH.
01170  M00S01168.secart  +++|
01171  M00S01169.secart  +++|* EACH DIRECTIVE LINE.
01172  M00S01170.secart  +++|
01173  M00S01171.secart  +++|  100 READ (7,10,END=190) DIR
01174  M00S01172.secart  +++|  10  FORMAT(A80)
01175  M00S01173.secart  +++|      WRITE (8,*) '  //// ',DIR
01176  M00S01174.secart  +++|
01177  M00S01175.secart  +++|* DIRECTIVE:  AMSG=MSID,MSID...
01178  M00S01176.secart  +++|* ACCOUNT LOG MSG ID-S FOR SERIAL PRINTOUT.
01179  M00S01177.secart  +++|
01180  M00S01178.secart  +++|      IF (DIR(1:5).EQ.'AMSG=') THEN
01181  M00S01179.secart  +++|        I=6
01182  M00S01180.secart  +++|
01183  M00S01181.secart  +++|  110   CALL PARSE(DIR,I,MID)
01184  M00S01182.secart  +++|        IF (MID.NE.' ') THEN
01185  M00S01183.secart  +++|          CALL AMSMARK(MID,'*')
01186  M00S01184.secart  +++|          GOTO 110
01187  M00S01185.secart  +++|        ENDIF
01188  M00S01186.secart  +++|
01189  M00S01187.secart  +++|* DIRECTIVE:  DMSG=NN:TEXT STRING...[40].
01190  M00S01188.secart  +++|* DAYFILE LOG TEXT STRING FOR SERIAL PRINTOUT.
01191  M00S01189.secart  +++|
01192  M00S01190.secart  +++|      ELSE IF (DIR(1:5).EQ.'DMSG=') THEN
01193  M00S01191.secart  +++|        NM=NM+1
01194  M00S01192.secart  +++|        I=6
01195  M00S01193.secart  +++|        N=INDEX('0123456789',DIR(I:I))
01196  M00S01194.secart  +++|        IF (N.GT.0) THEN
01197  M00S01195.secart  +++|          ITX(NM)=N-1
01198  M00S01196.secart  +++|          I=I+1
01199  M00S01197.secart  +++|          N=INDEX('0123456789',DIR(I:I))
01200  M00S01198.secart  +++|          IF (N.GT.0) THEN
01201  M00S01199.secart  +++|            ITX(NM)=10*ITX(NM)+(N-1)
01202  M00S01200.secart  +++|            I=I+1
01203  M00S01201.secart  +++|          ENDIF
01204  M00S01202.secart  +++|
01205  M00S01203.secart  +++|* COLON REQUIRED WITH CHAR POSITION.
01206  M00S01204.secart  +++|
01207  M00S01205.secart  +++|          IF (DIR(I:I).EQ.':') THEN
01208  M00S01206.secart  +++|            I=I+1
01209  M00S01207.secart  +++|
01210  M00S01208.secart  +++|* OTHERWISE USE AS TEXT STRING.
01211  M00S01209.secart  +++|
01212  M00S01210.secart  +++|          ELSE
01213  M00S01211.secart  +++|            I=6
01214  M00S01212.secart  +++|            ITX(NM)=0
01215  M00S01213.secart  +++|          ENDIF
01216  M00S01214.secart  +++|        ENDIF
01217  M00S01215.secart  +++|        MTX(NM)=DIR(I:I+39)
01218  M00S01216.secart  +++|        LTX(NM)=1
01219  M00S01217.secart  +++|        DO 120 I=1,40
01220  M00S01218.secart  +++|          IF (MTX(NM)(I:I).NE.' ') LTX(NM)=I
01221  M00S01219.secart  +++|  120   CONTINUE
01222  M00S01220.secart  +++|
01223  M00S01221.secart  +++|* DIRECTIVE:  TIME=START[,END]
01224  M00S01222.secart  +++|* TIME PERIOD FOR SERIAL PRINTOUT.
01225  M00S01223.secart  +++|
01226  M00S01224.secart  +++|      ELSE IF (DIR(1:5).EQ.'TIME=') THEN
01227  M00S01225.secart  +++|        I=6
01228  M00S01226.secart  +++|        IF (NP.GE.MXP) GOTO 180
01229  M00S01227.secart  +++|        CALL TMARG(DIR,I,TMS(NP+1))
01230  M00S01228.secart  +++|        TME(NP)=TMS(NP)
01231  M00S01229.secart  +++|        IF (DIR(I-1:I-1).EQ.'-') CALL TMARG(DIR,I,TME(NP+1))
01232  M00S01230.secart  +++|        IF (TMS(NP+1).NE.' '.AND.TME(NP+1).NE.' ') NP=NP+1
01233  M00S01231.secart  +++|        WINDOW=.FALSE.
01234  M00S01232.secart  +++|
01235  M00S01233.secart  +++|* DIRECTIVE:  TRACE=KEY,KEY,...
01236  M00S01234.secart  +++|* SORT KEYS FOR TRACE TABLE PRINTOUT.
01237  M00S01235.secart  +++|* VALID KEYS: UJN,JSN,JC,SDT,EDT,FM,UN,TRM.
01238  M00S01236.secart  +++|
01239  M00S01237.secart  +++|      ELSE IF (DIR(1:6).EQ.'TRACE=') THEN
01240  M00S01238.secart  +++|        I=7
01241  M00S01239.secart  +++|        DO 130 N=1,12
01242  M00S01240.secart  +++|        CALL PARSE(DIR,I,SKY(N))
01243  M00S01241.secart  +++|  130   CONTINUE
01244  M00S01242.secart  +++|
01245  M00S01243.secart  +++|* DIRECTIVE:  USER=FAMILY,USER.
01246  M00S01244.secart  +++|* FAMILY & USERNAME PAIR W/WILDCARDS.
01247  M00S01245.secart  +++|
01248  M00S01246.secart  +++|      ELSE IF (DIR(1:5).EQ.'USER=') THEN
01249  M00S01247.secart  +++|        I=6
01250  M00S01248.secart  +++|        CALL PARSE(DIR,I,FAMILY)
01251  M00S01249.secart  +++|        CALL PARSE(DIR,I,USER)
01252  M00S01250.secart  +++|        IF (NU.GE.MXP) GOTO 180
01253  M00S01251.secart  +++|        NU=NU+1
01254  M00S01252.secart  +++|        FAM(NU)=FAMILY
01255  M00S01253.secart  +++|        USR(NU)=USER
01256  M00S01254.secart  +++|
01257  M00S01255.secart  +++|* DIRECTIVE:  UJN=JOBNAME,...
01258  M00S01256.secart  +++|* USER JOB NAME FOR JOB SELECTION.
01259  M00S01257.secart  +++|
01260  M00S01258.secart  +++|      ELSE IF (DIR(1:4).EQ.'UJN=') THEN
01261  M00S01259.secart  +++|        I=5
01262  M00S01260.secart  +++|  140   CALL PARSE(DIR,I,JOBNAME)
01263  M00S01261.secart  +++|        IF (JOBNAME.NE.' ') THEN
01264  M00S01262.secart  +++|          IF (NN.GE.MXP) GOTO 180
01265  M00S01263.secart  +++|          NN=NN+1
01266  M00S01264.secart  +++|          UJN(NN)=JOBNAME
01267  M00S01265.secart  +++|          GOTO 140
01268  M00S01266.secart  +++|        ENDIF
01269  M00S01267.secart  +++|
01270  M00S01268.secart  +++|* DIRECTIVE:  JSN=[D.]AAAA,...
01271  M00S01269.secart  +++|* JOB SEQUENCE NAME (AAAA) W/ OPTIONAL D/S UNIQUE CODE (D.).
01272  M00S01270.secart  +++|
01273  M00S01271.secart  +++|      ELSE IF (DIR(1:4).EQ.'JSN=') THEN
01274  M00S01272.secart  +++|        I=5
01275  M00S01273.secart  +++|  150   IF(NS.GE.MXP) GOTO 180
01276  M00S01274.secart  +++|        JSN(NS+1)=' '
01277  M00S01275.secart  +++|        CALL PARSE(DIR,I,JSN(NS+1)(3:6))
01278  M00S01276.secart  +++|        IF (JSN(NS+1).NE.' ') THEN
01279  M00S01277.secart  +++|          NS=NS+1
01280  M00S01278.secart  +++|          IF (JSN(NS)(2:2).EQ.' ' .AND. DIR(I-1:I-1).EQ.'.') THEN
01281  M00S01279.secart  +++|            JSN(NS)(1:1)=JSN(NS)(3:3)
01282  M00S01280.secart  +++|            JSN(NS)(2:2)='.'
01283  M00S01281.secart  +++|            CALL PARSE(DIR,I,JSN(NS)(3:6))
01284  M00S01282.secart  +++|          ELSE
01285  M00S01283.secart  +++|            JSN(NS)(1:2)='*.'
01286  M00S01284.secart  +++|          ENDIF
01287  M00S01285.secart  +++|          GOTO 150
01288  M00S01286.secart  +++|        ENDIF
01289  M00S01287.secart  +++|
01290  M00S01288.secart  +++|* DIRECTIVE:  TRM=TERMID,...
01291  M00S01289.secart  +++|* TERMINAL NAMES SELECTION DIRECTIVE.
01292  M00S01290.secart  +++|
01293  M00S01291.secart  +++|      ELSE IF (DIR(1:4).EQ.'TRM=') THEN
01294  M00S01292.secart  +++|        I=5
01295  M00S01293.secart  +++|
01296  M00S01294.secart  +++|  160   CALL PARSE(DIR,I,TERMINL)
01297  M00S01295.secart  +++|        IF (TERMINL.NE.' ') THEN
01298  M00S01296.secart  +++|          IF (NT.GE.MXP) GOTO 180
01299  M00S01297.secart  +++|          NT=NT+1
01300  M00S01298.secart  +++|          TRM(NT)=TERMINL
01301  M00S01299.secart  +++|          GOTO 160
01302  M00S01300.secart  +++|        ENDIF
01303  M00S01301.secart  +++|
01304  M00S01302.secart  +++|* DIRECTIVE:  LIMIT=NNNN
01305  M00S01303.secart  +++|* SAMPLE LIMIT FOR PRINTOUTS.
01306  M00S01304.secart  +++|
01307  M00S01305.secart  +++|      ELSE IF (DIR(1:6).EQ.'LIMIT=') THEN
01308  M00S01306.secart  +++|        I=7
01309  M00S01307.secart  +++|        JBLIMIT=0
01310  M00S01308.secart  +++|
01311  M00S01309.secart  +++|  170   N=ICHAR(DIR(I:I))-16
01312  M00S01310.secart  +++|        IF(N.GE.0.AND.N.LE.9.AND.I.LE.12) THEN
01313  M00S01311.secart  +++|          JBLIMIT=JBLIMIT*10+N
01314  M00S01312.secart  +++|          I=I+1
01315  M00S01313.secart  +++|          GOTO 170
01316  M00S01314.secart  +++|        ENDIF
01317  M00S01315.secart  +++|
01318  M00S01316.secart  +++|* UNRECOGNIZED DIRECTIVE VERB.
01319  M00S01317.secart  +++|
01320  M00S01318.secart  +++|      ELSE
01321  M00S01319.secart  +++|        WRITE (8,*) '  *** UNRECOGNIZED DIRECTIVE ***'
01322  M00S01320.secart  +++|        ERR=.TRUE.
01323  M00S01321.secart  +++|      ENDIF
01324  M00S01322.secart  +++|      GOTO 100
01325  M00S01323.secart  +++|
01326  M00S01324.secart  +++|* ARGUMENT TABLE FULL, IGNORE ADDITIONAL ARGUMENTS.
01327  M00S01325.secart  +++|
01328  M00S01326.secart  +++|  180 WRITE (8,*) '  *** TOO MANY ARGUMENTS, EXCESS IGNORED.'
01329  M00S01327.secart  +++|      ERR=.TRUE.
01330  M00S01328.secart  +++|      GOTO 100
01331  M00S01329.secart  +++|
01332  M00S01330.secart  +++|* FINISHED WITH DIRECTIVES, REPORT IF ERRORS.
01333  M00S01331.secart  +++|
01334  M00S01332.secart  +++|  190 IF (ERR) CALL REMARK('   *** DIRECTIVE ERROR(S).')
01335  M00S01333.secart  +++|      RETURN
01336  M00S01334.secart  +++|
01337  M00S01335.secart  +++|
01338  M00S01336.secart  +++|* ---------------------------------------------------------------------
01339  M00S01337.secart  +++|* SERIAL PRINTOUT SELECTIONS.
01340  M00S01338.secart  +++|* ---------------------------------------------------------------------
01341  M00S01339.secart  +++|
01342  M00S01340.secart  +++|**        ENTRY -  CALL TMCHECK(ETM,HIT)
01343  M00S01341.secart  +++|*                  *ETM* CONTAINS TIMESTAMP FROM LOG MESSAGE.
01344  M00S01342.secart  +++|*
01345  M00S01343.secart  +++|*         EXIT -   *HIT* SET TO .TRUE. IF *ETM* FALLS WITHIN ANY TIME
01346  M00S01344.secart  +++|*                  WINDOW, OTHERWISE UNCHANGED (AVOID CONFLICT WITH
01347  M00S01345.secart  +++|*                  OTHER SELECTION IN CALLING ROUTINE).
01348  M00S01346.secart  +++|*
01349  M00S01347.secart  +++|*         PRINTOUT (UNIT 8) MESSAGES:
01350  M00S01348.secart  +++|*                  ====== TIME WINDOW START ======
01351  M00S01349.secart  +++|*                  ====== TIME WINDOW END ======
01352  M00S01350.secart  +++|*
01353  M00S01351.secart  +++|*         NOTES -  THIS ROUTINE REMEMBERS INDEX OF OPEN TIME WINDOW IN
01354  M00S01352.secart  +++|*                  *IW* TO SHORTCUT SEARCH AND TEST.
01355  M00S01353.secart  +++|
01356  M00S01354.secart  +++|
01357  M00S01355.secart  +++|      ENTRY TMCHECK(ETM,HIT)
01358  M00S01356.secart  +++|
01359  M00S01357.secart  +++|      IF (NP.LE.0) RETURN
01360  M00S01358.secart  +++|
01361  M00S01359.secart  +++|* CHECK FOR END OF CURRENT WINDOW, IF ANY.
01362  M00S01360.secart  +++|
01363  M00S01361.secart  +++|      IF (WINDOW) THEN
01364  M00S01362.secart  +++|        IF (ETM.LE.TME(IW)) THEN
01365  M00S01363.secart  +++|          HIT=.TRUE.
01366  M00S01364.secart  +++|          RETURN
01367  M00S01365.secart  +++|        ELSE
01368  M00S01366.secart  +++|          WINDOW=.FALSE.
01369  M00S01367.secart  +++|          WRITE (8,*) '  ====== TIME WINDOW END ======'
01370  M00S01368.secart  +++|        ENDIF
01371  M00S01369.secart  +++|      ENDIF
01372  M00S01370.secart  +++|
01373  M00S01371.secart  +++|* CHECK FOR START OF ANY TIME WINDOW.
01374  M00S01372.secart  +++|
01375  M00S01373.secart  +++|      DO 200 I=1,NP
01376  M00S01374.secart  +++|        IF (ETM.LT.TMS(I) .OR. ETM.GT.TME(I)) GOTO 200
01377  M00S01375.secart  +++|        IW=I
01378  M00S01376.secart  +++|        WINDOW=.TRUE.
01379  M00S01377.secart  +++|        WRITE (8,*) '  ====== TIME WINDOW START ======'
01380  M00S01378.secart  +++|  200 CONTINUE
01381  M00S01379.secart  +++|      RETURN
01382  M00S01380.secart  +++|
01383  M00S01381.secart  +++|
01384  M00S01382.secart  +++|**        ENTRY -  CALL MSCHECK(TXT,HIT)
01385  M00S01383.secart  +++|*                  *TXT* IS MESSAGE FIELD FROM DAYFILE MESSAGE.
01386  M00S01384.secart  +++|*
01387  M00S01385.secart  +++|*         EXIT -   *HIT* SET TO .TRUE. IF *TXT* CONTAINS SELECTED TEXT
01388  M00S01386.secart  +++|*                  STRING, .FALSE. OTHERWISE.
01389  M00S01387.secart  +++|
01390  M00S01388.secart  +++|      ENTRY MSCHECK(TXT,HIT)
01391  M00S01389.secart  +++|
01392  M00S01390.secart  +++|      IF (NM.EQ.0) RETURN
01393  M00S01391.secart  +++|      DO 210 N=1,NM
01394  M00S01392.secart  +++|        IF (ITX(N).EQ.0) THEN
01395  M00S01393.secart  +++|          IF (INDEX(TXT,MTX(N)(1:LTX(N))).NE.0) HIT=.TRUE.
01396  M00S01394.secart  +++|        ELSE
01397  M00S01395.secart  +++|          IF (TXT(ITX(N):ITX(N)+LTX(N)-1).EQ.MTX(N)(1:LTX(N)))
01398  M00S01396.secart  +++|     .      HIT=.TRUE.
01399  M00S01397.secart  +++|        ENDIF
01400  M00S01398.secart  +++|        IF (HIT) RETURN
01401  M00S01399.secart  +++|  210 CONTINUE
01402  M00S01400.secart  +++|      RETURN
01403  M00S01401.secart  +++|
01404  M00S01402.secart  +++|
01405  M00S01403.secart  +++|* ---------------------------------------------------------------------
01406  M00S01404.secart  +++|* JOB SELECTION ENTRY POINTS.
01407  M00S01405.secart  +++|* CALLED DURING 1ST PASS TO TAG PICKS IN TRACE TABLE.
01408  M00S01406.secart  +++|* ---------------------------------------------------------------------
01409  M00S01407.secart  +++|
01410  M00S01408.secart  +++|
01411  M00S01409.secart  +++|**        ENTRY -  CALL PICKJSN(JS,MK)
01412  M00S01410.secart  +++|*                  *JS*  IS JSN FROM LOG MESSAGE.
01413  M00S01411.secart  +++|*                  *MK*  IS MARKS FIELD FOR JOB IN JSN TRACE TABLE.
01414  M00S01412.secart  +++|*
01415  M00S01413.secart  +++|*         EXIT -   *MK(1:1)* SET TO 'J' IF JSN WAS SELECTED.
01416  M00S01414.secart  +++|
01417  M00S01415.secart  +++|      ENTRY PICKJSN(JS,MK)
01418  M00S01416.secart  +++|
01419  M00S01417.secart  +++|* CHECK NEW JSN AGAINST EACH SELECTED JSN, IF ANY.
01420  M00S01418.secart  +++|
01421  M00S01419.secart  +++|      IF (NS.EQ.0) RETURN
01422  M00S01420.secart  +++|      DO 220 I=1,NS
01423  M00S01421.secart  +++|        IF ( (JS(3:6).EQ.JSN(I)(3:6)) .AND.
01424  M00S01422.secart  +++|     .    (JS(1:1).EQ.JSN(I)(1:1) .OR. JSN(I)(1:1).EQ.'*') )MK(1:1)='J'
01425  M00S01423.secart  +++|  220 CONTINUE
01426  M00S01424.secart  +++|      RETURN
01427  M00S01425.secart  +++|
01428  M00S01426.secart  +++|
01429  M00S01427.secart  +++|**        ENTRY -  CALL PICKUJN(JN,MK)
01430  M00S01428.secart  +++|*                  *JN*  IS UJN FROM LOG MESSAGE.
01431  M00S01429.secart  +++|*                  *MK*  IS MARKS FIELD FOR JOB IN JSN TRACE TABLE.
01432  M00S01430.secart  +++|*
01433  M00S01431.secart  +++|*         EXIT -   *MK(2:2)* SET TO 'N' IF UJN WAS SELECTED.
01434  M00S01432.secart  +++|
01435  M00S01433.secart  +++|      ENTRY PICKUJN(JN,MK)
01436  M00S01434.secart  +++|
01437  M00S01435.secart  +++|* CHECK EACH NEW UJN AGAINST EACH SELECTED UJN-S, IF ANY.
01438  M00S01436.secart  +++|
01439  M00S01437.secart  +++|      IF (NN.EQ.0) RETURN
01440  M00S01438.secart  +++|      DO 230 I=1,NN
01441  M00S01439.secart  +++|        IF (JN.EQ.UJN(I)) MK(2:2)='N'
01442  M00S01440.secart  +++|  230 CONTINUE
01443  M00S01441.secart  +++|      RETURN
01444  M00S01442.secart  +++|
01445  M00S01443.secart  +++|
01446  M00S01444.secart  +++|**        ENTRY -  CALL PICKUSR(FN,UN,MK)
01447  M00S01445.secart  +++|*                  *FN*  IS FAMILYNAME FROM LOG MESSAGE.
01448  M00S01446.secart  +++|*                  *UN*  IS USERNAME FROM LOG MESSAGE.
01449  M00S01447.secart  +++|*                  *MK*  IS MARKS FIELD FOR JOB IN JSN TRACE TABLE.
01450  M00S01448.secart  +++|*
01451  M00S01449.secart  +++|*         EXIT -   *MK(3:3)* SET TO 'U' IF FAMILY/USER WAS SELECTED.
01452  M00S01450.secart  +++|
01453  M00S01451.secart  +++|      ENTRY PICKUSR(FN,UN,MK)
01454  M00S01452.secart  +++|
01455  M00S01453.secart  +++|* CHECK NEW USERID AGAINST EACH SELECTED FAMILY AND USER PAIR.
01456  M00S01454.secart  +++|* WILDCARD (*) MATCHES ANYTHING.  BLANK FAMILY MATCHES DEFAULT FAMILY.
01457  M00S01455.secart  +++|
01458  M00S01456.secart  +++|      IF (NU.EQ.0) RETURN
01459  M00S01457.secart  +++|      DO 240 I=1,NU
01460  M00S01458.secart  +++|        IF ( (FAM(I).EQ.'*'.OR.FN.EQ.FAM(I)) .AND.
01461  M00S01459.secart  +++|     .    (USR(I).EQ.'*'.OR.USR(I).EQ.UN) ) MK(3:3)='U'
01462  M00S01460.secart  +++|  240 CONTINUE
01463  M00S01461.secart  +++|      RETURN
01464  M00S01462.secart  +++|
01465  M00S01463.secart  +++|
01466  M00S01464.secart  +++|**        ENTRY -  CALL PICKTRM(TN,MK)
01467  M00S01465.secart  +++|*                  *TN*  IS TERMINAL ID FROM LOG MESSAGE.
01468  M00S01466.secart  +++|*                  *MK*  IS MARKS FIELD FOR JOB IN JSN TRACE TABLE.
01469  M00S01467.secart  +++|*
01470  M00S01468.secart  +++|*         EXIT -   *MK(4:4)* SET TO 'T' IF TERMINAL ID WAS SELECTED.
01471  M00S01469.secart  +++|
01472  M00S01470.secart  +++|      ENTRY PICKTRM(TN,MK)
01473  M00S01471.secart  +++|
01474  M00S01472.secart  +++|* CHECK NEW TERMINAL ID AGAINST EACH SELECTED TERMINAL ID, IF ANY.
01475  M00S01473.secart  +++|
01476  M00S01474.secart  +++|      IF (NT.EQ.0) RETURN
01477  M00S01475.secart  +++|      DO 250 I=1,NT
01478  M00S01476.secart  +++|        IF (TN.EQ.TRM(I)) MK(4:4)='T'
01479  M00S01477.secart  +++|  250 CONTINUE
01480  M00S01478.secart  +++|      RETURN
01481  M00S01479.secart  +++|      END
01482  M00S01480.secart  +++|
01483  M00S01481.secart  +++|* ---------------------------------------------------------------------
01484  M00S01482.secart  +++|      SUBROUTINE TMARG(DIR,IS,TIMEX)
01485  M00S01483.secart  +++|**        TMARG -  EXPANDS TIME= DIRECTIVE ARGUMENTS TO FIXED FORMAT.
01486  M00S01484.secart  +++|*
01487  M00S01485.secart  +++|*         *TMARG* ACCEPTS TIME ARGUMENTS IN A VARIETY OF FORMATS AND
01488  M00S01486.secart  +++|*         EXPANDS INTO A CANONICAL FIXED FORMAT FOR USE IN TIME WINDOW
01489  M00S01487.secart  +++|*         SELECTION OF MESSAGES FOR SERIAL PRINTOUT.
01490  M00S01488.secart  +++|*
01491  M00S01489.secart  +++|*         ENTRY -  CALL TMARG(DIR,IS,TIMEX)
01492  M00S01490.secart  +++|*                  *DIR*   IS DIRECTIVE CONTAINING TIME= ARGS.
01493  M00S01491.secart  +++|*                  *IS*    IS STRING POSITION OF TIME ARGUMENT.
01494  M00S01492.secart  +++|*
01495  M00S01493.secart  +++|*         EXIT -   *TIMEX* WILL CONTAIN FIXED FORMAT TIME ARGUMENT.
01496  M00S01494.secart  +++|*
01497  M00S01495.secart  +++|*         ERROR -  PRINTOUT (UNIT 8):
01498  M00S01496.secart  +++|*                  *** TIME ARGUMENT ERROR.
01499  M00S01497.secart  +++|*
01500  M00S01498.secart  +++|*         NOTES -  FTN5 INDEX FUNCTION IS USED TO TEST FOR DIGITS AND
01501  M00S01499.secart  +++|*                  NUMERIC RANGE AT SAME TIME.  ACCEPTED FORMS ARE:
01502  M00S01500.secart  +++|*                    HOURS -    HH-    HH.        REQUIRED.
01503  M00S01501.secart  +++|*                    MINUTES -    MM-     MM.     OPTIONAL.
01504  M00S01502.secart  +++|*                    SECONDS -      SS-      SS.  OPTIONAL W/MINUTES.
01505  M00S01503.secart  +++|*                    ----------------------------
01506  M00S01504.secart  +++|*                    EXPANDED TO =>  ' HH.MM.SS.' CANONICAL FORM.
01507  M00S01505.secart  +++|
01508  M00S01506.secart  +++|      IMPLICIT INTEGER(A-Z)
01509  M00S01507.secart  +++|
01510  M00S01508.secart  +++|      CHARACTER*80  DIR
01511  M00S01509.secart  +++|*                            ARG - DIRECTIVE TEXT STRING.
01512  M00S01510.secart  +++|
01513  M00S01511.secart  +++|      INTEGER       IS
01514  M00S01512.secart  +++|*                            ARG - START POSITION FOR TIME ARGUMENT.
01515  M00S01513.secart  +++|
01516  M00S01514.secart  +++|      CHARACTER*10  TIMEX
01517  M00S01515.secart  +++|*                            ARG - FIXED FORMAT TIME RETURNED.
01518  M00S01516.secart  +++|
01519  M00S01517.secart  +++|* SET DEFAULT RESULT.
01520  M00S01518.secart  +++|
01521  M00S01519.secart  +++|      TIMEX=' 00.00.00.'
01522  M00S01520.secart  +++|
01523  M00S01521.secart  +++|* HOURS PORTION OF TIMESTAMP.
01524  M00S01522.secart  +++|
01525  M00S01523.secart  +++|      IF (INDEX('012',DIR(IS:IS)).NE.0) THEN
01526  M00S01524.secart  +++|        TIMEX(2:2)=DIR(IS:IS)
01527  M00S01525.secart  +++|        IS=IS+1
01528  M00S01526.secart  +++|      ELSE
01529  M00S01527.secart  +++|        GOTO 110
01530  M00S01528.secart  +++|      ENDIF
01531  M00S01529.secart  +++|
01532  M00S01530.secart  +++|      IF (INDEX('0123456789',DIR(IS:IS)).NE.0) THEN
01533  M00S01531.secart  +++|        TIMEX(3:3)=DIR(IS:IS)
01534  M00S01532.secart  +++|        IS=IS+1
01535  M00S01533.secart  +++|      ELSE
01536  M00S01534.secart  +++|        GOTO 110
01537  M00S01535.secart  +++|      ENDIF
01538  M00S01536.secart  +++|      IF (DIR(IS:IS).EQ.'.') IS=IS+1
01539  M00S01537.secart  +++|      IF (DIR(IS:IS).EQ.'-') GOTO 100
01540  M00S01538.secart  +++|
01541  M00S01539.secart  +++|* MINUTES PORTION OF TIMESTAMP.
01542  M00S01540.secart  +++|
01543  M00S01541.secart  +++|      IF (INDEX('012345',DIR(IS:IS)).NE.0) THEN
01544  M00S01542.secart  +++|        TIMEX(5:5)=DIR(IS:IS)
01545  M00S01543.secart  +++|        IS=IS+1
01546  M00S01544.secart  +++|      ELSE
01547  M00S01545.secart  +++|        GOTO 110
01548  M00S01546.secart  +++|      ENDIF
01549  M00S01547.secart  +++|
01550  M00S01548.secart  +++|      IF (INDEX('0123456789',DIR(IS:IS)).NE.0) THEN
01551  M00S01549.secart  +++|        TIMEX(6:6)=DIR(IS:IS)
01552  M00S01550.secart  +++|        IS=IS+1
01553  M00S01551.secart  +++|      ELSE
01554  M00S01552.secart  +++|        GOTO 110
01555  M00S01553.secart  +++|      ENDIF
01556  M00S01554.secart  +++|      IF (DIR(IS:IS).EQ.'.') IS=IS+1
01557  M00S01555.secart  +++|      IF (DIR(IS:IS).EQ.'-') GOTO 100
01558  M00S01556.secart  +++|
01559  M00S01557.secart  +++|* SECONDS PORTION OF TIMESTAMP.
01560  M00S01558.secart  +++|
01561  M00S01559.secart  +++|      IF (INDEX('012345',DIR(IS:IS)).NE.0) THEN
01562  M00S01560.secart  +++|        TIMEX(8:8)=DIR(IS:IS)
01563  M00S01561.secart  +++|        IS=IS+1
01564  M00S01562.secart  +++|      ELSE
01565  M00S01563.secart  +++|        GOTO 110
01566  M00S01564.secart  +++|      ENDIF
01567  M00S01565.secart  +++|
01568  M00S01566.secart  +++|      IF (INDEX('0123456789',DIR(IS:IS)).NE.0) THEN
01569  M00S01567.secart  +++|        TIMEX(9:9)=DIR(IS:IS)
01570  M00S01568.secart  +++|        IS=IS+1
01571  M00S01569.secart  +++|      ELSE
01572  M00S01570.secart  +++|        GOTO 110
01573  M00S01571.secart  +++|      ENDIF
01574  M00S01572.secart  +++|      IF (DIR(IS:IS).EQ.'.') IS=IS+1
01575  M00S01573.secart  +++|      IF (DIR(IS:IS).NE.'-') RETURN
01576  M00S01574.secart  +++|
01577  M00S01575.secart  +++|  100 IS=IS+1
01578  M00S01576.secart  +++|      RETURN
01579  M00S01577.secart  +++|
01580  M00S01578.secart  +++|* TIMESTAMP ARGUMENT ERROR.
01581  M00S01579.secart  +++|
01582  M00S01580.secart  +++|  110 WRITE (8,*) '  *** TIME ARGUMENT ERROR.'
01583  M00S01581.secart  +++|      TIMEX=' '
01584  M00S01582.secart  +++|      RETURN
01585  M00S01583.secart  +++|      END
01586  M00S01584.secart  +++|
01587  M00S01585.secart  +++|* ---------------------------------------------------------------------
01588  M00S01586.secart  +++|      SUBROUTINE DFSCAN(LFN,*)
01589  M00S01587.secart  +++|**        DFSCAN - DAYFILE LOG MESSAGE PROCESSING.
01590  M00S01588.secart  +++|*
01591  M00S01589.secart  +++|*         *DFSCAN* PROVIDES THE PRIMARY ROUTINES FOR PROCESSING DAYFILE
01592  M00S01590.secart  +++|*         LOG MESSAGES.  IT PROVIDES AN ENTRY POINT TO PRE-SCAN THE LOG
01593  M00S01591.secart  +++|*         FILE TO VALIDATE FORMAT AND EXTRACT CRITICAL SYSTEM ID AND
01594  M00S01592.secart  +++|*         DATE/TIME DATA, AND ANOTHER FOR ROUTINE PROCESSING OF EACH
01595  M00S01593.secart  +++|*         LOG MESSAGE IN THE SEQUENCE CONTROLLED BY *SECART*. ANNOTATED
01596  M00S01594.secart  +++|*         MESSAGES ARE WRITTEN TO COMPOSITE LOG FILE ON UNIT 3.
01597  M00S01595.secart  +++|
01598  M00S01596.secart  +++|
01599  M00S01597.secart  +++|      IMPLICIT INTEGER(A-Z)
01600  M00S01598.secart  +++|
01601  M00S01599.secart  +++|      PARAMETER     (MXJ=1000)
01602  M00S01600.secart  +++|*                            SIZE OF JSN TRACE TABLE.
01603  M00S01601.secart  +++|
01604  M00S01602.secart  +++|      EQUIVALENCE   (DFEDTG,DFEDATE)
01605  M00S01603.secart  +++|*                            /DFL/ DFEDTG*20 = DFEDATE*10//DFETIME*10.
01606  M00S01604.secart  +++|
01607  M00S01605.secart  +++|
01608  M00S01606.secart  +++|      LOGICAL       ACEOF
01609  M00S01607.secart  +++|*                            /CTL/ ACCOUNT LOG EOF FLAG.
01610  M00S01608.secart  +++|
01611  M00S01609.secart  +++|      INTEGER       ACIN
01612  M00S01610.secart  +++|*                            /CTL/ ACCOUNT LOG MESSAGE COUNTER.
01613  M00S01611.secart  +++|
01614  M00S01612.secart  +++|      LOGICAL       DFEOF
01615  M00S01613.secart  +++|*                            /CTL/ DAYFILE LOG EOF FLAG.
01616  M00S01614.secart  +++|
01617  M00S01615.secart  +++|      CHARACTER*10  DFEDATE
01618  M00S01616.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG END DATE.
01619  M00S01617.secart  +++|
01620  M00S01618.secart  +++|      CHARACTER*20  DFEDTG
01621  M00S01619.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG END DATE/TIME.
01622  M00S01620.secart  +++|
01623  M00S01621.secart  +++|      CHARACTER*10  DFETIME
01624  M00S01622.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG END TIME.
01625  M00S01623.secart  +++|
01626  M00S01624.secart  +++|      INTEGER       DFIN
01627  M00S01625.secart  +++|*                            /CTL/ DAYFILE LOG MESSAGE COUNTER.
01628  M00S01626.secart  +++|
01629  M00S01627.secart  +++|      CHARACTER*10  DFSDATE
01630  M00S01628.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG START DATE.
01631  M00S01629.secart  +++|
01632  M00S01630.secart  +++|      CHARACTER*10  DFSTIME
01633  M00S01631.secart  +++|*                            /DFL/ (EQV) DAYFILE LOG START TIME.
01634  M00S01632.secart  +++|
01635  M00S01633.secart  +++|      CHARACTER*40  DFTITLE
01636  M00S01634.secart  +++|*                            /DFL/ DAYFILE SYSTEM TITLE.
01637  M00S01635.secart  +++|
01638  M00S01636.secart  +++|      CHARACTER*100 DFTXT
01639  M00S01637.secart  +++|*                            /DFL/ CURRENT DAYFILE MESSAGE TEXT.
01640  M00S01638.secart  +++|
01641  M00S01639.secart  +++|      CHARACTER*20  DFVERSN
01642  M00S01640.secart  +++|*                            /DFL/ SYSTEM VERSION (PART OF SYID).
01643  M00S01641.secart  +++|
01644  M00S01642.secart  +++|      CHARACTER*1   DSU
01645  M00S01643.secart  +++|*                            /TRC/ DEADSTART UNIQUE PREFIX CODE.
01646  M00S01644.secart  +++|
01647  M00S01645.secart  +++|      CHARACTER*7   FAM
01648  M00S01646.secart  +++|*                            TEMP - FAMILYNAME VARIABLE.
01649  M00S01647.secart  +++|
01650  M00S01648.secart  +++|      CHARACTER*7   FN(MXJ)
01651  M00S01649.secart  +++|*                            /TRC/ FAMILY NAME COLUMN IN TRACE TABLE.
01652  M00S01650.secart  +++|
01653  M00S01651.secart  +++|      INTEGER       JBLIMIT
01654  M00S01652.secart  +++|*                            /CTL/ UNIT JOB PRINTOUT MESSAGE LIMIT.
01655  M00S01653.secart  +++|
01656  M00S01654.secart  +++|      CHARACTER*1   JC(MXJ)
01657  M00S01655.secart  +++|*                            /TRC/ JOB CLASS COLUMN IN TRACE TABLE.
01658  M00S01656.secart  +++|
01659  M00S01657.secart  +++|      CHARACTER*1   JCL
01660  M00S01658.secart  +++|*                            TEMP - JOB CLASS VARIABLE.
01661  M00S01659.secart  +++|
01662  M00S01660.secart  +++|      CHARACTER*7   JN(MXJ)
01663  M00S01661.secart  +++|*                            /TRC/ UJN COLUMN IN TRACE TABLE.
01664  M00S01662.secart  +++|
01665  M00S01663.secart  +++|      CHARACTER*6   JS(MXJ)
01666  M00S01664.secart  +++|*                            /TRC/ D.JSN COLUMN IN TRACE TABLE.
01667  M00S01665.secart  +++|
01668  M00S01666.secart  +++|      CHARACTER*6   JSN
01669  M00S01667.secart  +++|*                            TEMP - JSN VARIABLE.
01670  M00S01668.secart  +++|
01671  M00S01669.secart  +++|      CHARACTER*7   LFN
01672  M00S01670.secart  +++|*                            ARG - LFN OF DAYFILE LOG FILE.
01673  M00S01671.secart  +++|
01674  M00S01672.secart  +++|      CHARACTER*5   MK(MXJ)
01675  M00S01673.secart  +++|*                            /TRC/ JOB SELECTION MARKS IN TRACE TABLE.
01676  M00S01674.secart  +++|
01677  M00S01675.secart  +++|      INTEGER       ML(2,MXJ)
01678  M00S01676.secart  +++|*                            /CTL/ DFL/AFL MSG COUNTS FOR TRACE TABLE.
01679  M00S01677.secart  +++|
01680  M00S01678.secart  +++|      INTEGER       NJ
01681  M00S01679.secart  +++|*                            /CTL/ CURRENT NUMBER JOBS IN TRACE TABLE.
01682  M00S01680.secart  +++|
01683  M00S01681.secart  +++|      CHARACTER*7   NUL
01684  M00S01682.secart  +++|*                            TEMP - FOR IGNORED WORD FROM *PARSE*.
01685  M00S01683.secart  +++|
01686  M00S01684.secart  +++|      LOGICAL       PRT
01687  M00S01685.secart  +++|*                            FLAG SET TO PRINTOUT DAYFILE MESSAGE.
01688  M00S01686.secart  +++|
01689  M00S01687.secart  +++|      INTEGER       SM
01690  M00S01688.secart  +++|*                            LOCAL COUNTER  FOR DFL SYSTEM MESSAGES.
01691  M00S01689.secart  +++|
01692  M00S01690.secart  +++|      CHARACTER*20  TE(MXJ)
01693  M00S01691.secart  +++|*                            /TRC/ JOB DATE/TIME END IN TRACE TABLE.
01694  M00S01692.secart  +++|
01695  M00S01693.secart  +++|      CHARACTER*7   TN(MXJ)
01696  M00S01694.secart  +++|*                            /TRC/ JOB TERMINAL NAME IN TRACE TABLE.
01697  M00S01695.secart  +++|
01698  M00S01696.secart  +++|      CHARACTER*20  TS(MXJ)
01699  M00S01697.secart  +++|*                            /TRC/ JOB DATE/TIME START IN TRACE TABLE.
01700  M00S01698.secart  +++|
01701  M00S01699.secart  +++|      CHARACTER*7   UN(MXJ)
01702  M00S01700.secart  +++|*                            /TRC/ JOB USERNAME IN TRACE TABLE.
01703  M00S01701.secart  +++|
01704  M00S01702.secart  +++|      CHARACTER*7   USR
01705  M00S01703.secart  +++|*                            TEMP - USERNAME VARIABLE.
01706  M00S01704.secart  +++|
01707  M00S01705.secart  +++|      CHARACTER*7   VERB
01708  M00S01706.secart  +++|*                            TEMP - COMMAND CRACKING VARIABLE.
01709  M00S01707.secart  +++|
01710  M00S01708.secart  +++|
01711  M00S01709.secart  +++|* GLOBAL NUMERIC/LOGICAL VARIABLES AND PARAMETERS.
01712  M00S01710.secart  +++|
01713  M00S01711.secart  +++|      COMMON /CTL/  NJ
01714  M00S01712.secart  +++|      COMMON /CTL/  ACIN
01715  M00S01713.secart  +++|      COMMON /CTL/  DFIN
01716  M00S01714.secart  +++|      COMMON /CTL/  ACEOF
01717  M00S01715.secart  +++|      COMMON /CTL/  DFEOF
01718  M00S01716.secart  +++|      COMMON /CTL/  ML
01719  M00S01717.secart  +++|      COMMON /CTL/  JBLIMIT
01720  M00S01718.secart  +++|
01721  M00S01719.secart  +++|* DAYFILE LOG SPECIFIC VARIABLES.
01722  M00S01720.secart  +++|
01723  M00S01721.secart  +++|      COMMON /DFL/  DFSDATE
01724  M00S01722.secart  +++|      COMMON /DFL/  DFSTIME
01725  M00S01723.secart  +++|      COMMON /DFL/  DFEDATE
01726  M00S01724.secart  +++|      COMMON /DFL/  DFETIME
01727  M00S01725.secart  +++|      COMMON /DFL/  DFTITLE
01728  M00S01726.secart  +++|      COMMON /DFL/  DFVERSN
01729  M00S01727.secart  +++|      COMMON /DFL/  DFTXT
01730  M00S01728.secart  +++|
01731  M00S01729.secart  +++|* JSN TRACE TABLE STORAGE.
01732  M00S01730.secart  +++|
01733  M00S01731.secart  +++|      COMMON /TRC/  DSU
01734  M00S01732.secart  +++|      COMMON /TRC/  MK
01735  M00S01733.secart  +++|      COMMON /TRC/  JN
01736  M00S01734.secart  +++|      COMMON /TRC/  JS
01737  M00S01735.secart  +++|      COMMON /TRC/  JC
01738  M00S01736.secart  +++|      COMMON /TRC/  TS
01739  M00S01737.secart  +++|      COMMON /TRC/  TE
01740  M00S01738.secart  +++|      COMMON /TRC/  FN
01741  M00S01739.secart  +++|      COMMON /TRC/  UN
01742  M00S01740.secart  +++|      COMMON /TRC/  TN
01743  M00S01741.secart  +++|
01744  M00S01742.secart  +++|      DATA SM/0/
01745  M00S01743.secart  +++|
01746  M00S01744.secart  +++|
01747  M00S01745.secart  +++|**        ENTRY -  CALL DFSCAN(LFN,*NNN)
01748  M00S01746.secart  +++|*                  *LFN* IS LFN OF DAYFILE LOG FILE.
01749  M00S01747.secart  +++|*                  *NNN  IS ALTERNATE EXIT STATEMENT NUMBER.
01750  M00S01748.secart  +++|*
01751  M00S01749.secart  +++|*         EXIT -   FILE REWOUND AND FIRST RECORD READ FOR PROCESSING.
01752  M00S01750.secart  +++|*
01753  M00S01751.secart  +++|*         ERROR -  ALTERNATE EXIT TAKEN IF FILE FAILS FORMAT TEST OR
01754  M00S01752.secart  +++|*                  EOF FOUND BEFORE FIRST 3 SYSJOB MESSAGES FOUND.
01755  M00S01753.secart  +++|*
01756  M00S01754.secart  +++|*         USES -   COMMON /CTL/ FOR GLOBAL VARIABLES DFEOF, DFIN.
01757  M00S01755.secart  +++|*                  COMMON /DFL/ FOR DAYFILE-SPECIFIC VARIABLES.
01758  M00S01756.secart  +++|*
01759  M00S01757.secart  +++|*         CALLS -  *LOGTEST* TO TEST LOG FORMAT, EXTRACT DATE/TIME.
01760  M00S01758.secart  +++|*
01761  M00S01759.secart  +++|*         NOTES -  DAYFILE LOG PRE-SCAN ROUTINE REQUIRES:
01762  M00S01760.secart  +++|*                  1) THAT FILE BE FORMATTED AS A RAW DAYFILE LOG.
01763  M00S01761.secart  +++|*                  2) FINDING A START DATE VIA -
01764  M00S01762.secart  +++|*                     A) 1ST RECORD DATE STAMP -OR-
01765  M00S01763.secart  +++|*                     B) DATE IN 1ST SYSJOB MESSAGE -OR-
01766  M00S01764.secart  +++|*                     C) A DEAD START MSG -OR-
01767  M00S01765.secart  +++|*                     D) AN HOURLY DATE STAMP MSG.
01768  M00S01766.secart  +++|*                  3) ESTABLISHING SYSTEM ID VIA -
01769  M00S01767.secart  +++|*                     A) TITLE IN 2ND SYSJOB MSG -AND-
01770  M00S01768.secart  +++|*                     B) VERSION IN 3RD SYSJOB MSG.
01771  M00S01769.secart  +++|*                  IF SUCCESSFUL, FILE WILL BE REWOUND AND FIRST RECORD
01772  M00S01770.secart  +++|*                  WILL BE READ IN ADVANCE TO START PROCESSING.
01773  M00S01771.secart  +++|
01774  M00S01772.secart  +++|      SM=0
01775  M00S01773.secart  +++|      DFEOF=.FALSE.
01776  M00S01774.secart  +++|
01777  M00S01775.secart  +++|* CHECK LOG FORMAT AND EXTRACT START [DATE]/TIME STAMPS.
01778  M00S01776.secart  +++|
01779  M00S01777.secart  +++|      CALL LOGTEST(1,DFTXT,DFEDATE,DFETIME,*130)
01780  M00S01778.secart  +++|      IF (DFETIME.EQ.' ') THEN
01781  M00S01779.secart  +++|        CALL REMARK('   *** '//LFN//' NOT RAW DAYFILE LOG.')
01782  M00S01780.secart  +++|        DFEOF=.TRUE.
01783  M00S01781.secart  +++|        RETURN 1
01784  M00S01782.secart  +++|      ENDIF
01785  M00S01783.secart  +++|
01786  M00S01784.secart  +++|* ACCEPT TIME, COUNT DATE STAMP RECORD AND REMEMBER TO SKIP OVER.
01787  M00S01785.secart  +++|
01788  M00S01786.secart  +++|      DFSTIME=DFETIME
01789  M00S01787.secart  +++|      IF (DFEDATE.NE.' ') DFIN=1
01790  M00S01788.secart  +++|      GOTO 110
01791  M00S01789.secart  +++|
01792  M00S01790.secart  +++|* READ NEXT DAYFILE LOG RECORD.
01793  M00S01791.secart  +++|
01794  M00S01792.secart  +++|  100 READ (1,10,END=130) DFTXT
01795  M00S01793.secart  +++|  10  FORMAT(A100)
01796  M00S01794.secart  +++|
01797  M00S01795.secart  +++|* SCAN FOR SYSJOB MESSAGES ONLY.
01798  M00S01796.secart  +++|
01799  M00S01797.secart  +++|  110 DFETIME=DFTXT(1:10)
01800  M00S01798.secart  +++|      IF (DFTXT(13:17).NE.'SYS S') GOTO 100
01801  M00S01799.secart  +++|
01802  M00S01800.secart  +++|* FIRST THREE SYSJOB MESSAGES HAVE SYSTEM DATE, TITLE, & VERSION.
01803  M00S01801.secart  +++|
01804  M00S01802.secart  +++|      SM=SM+1
01805  M00S01803.secart  +++|      IF (SM.EQ.1) THEN
01806  M00S01804.secart  +++|        L=INDEX(DFTXT,'/')
01807  M00S01805.secart  +++|        IF (L.GT.3 .AND. DFTXT(L+3:L+3).EQ.'/') THEN
01808  M00S01806.secart  +++|          DFEDATE=DFTXT(L-3:L+6)
01809  M00S01807.secart  +++|        ENDIF
01810  M00S01808.secart  +++|
01811  M00S01809.secart  +++|      ELSE IF (SM.EQ.2) THEN
01812  M00S01810.secart  +++|        DFTITLE=DFTXT(21:60)
01813  M00S01811.secart  +++|
01814  M00S01812.secart  +++|      ELSE IF (SM.EQ.3) THEN
01815  M00S01813.secart  +++|        DFVERSN=DFTXT(21:40)
01816  M00S01814.secart  +++|
01817  M00S01815.secart  +++|* OTHER SYSJOB MSG-S INCLUDE DEAD START DATE MESSAGE WITH DATE.
01818  M00S01816.secart  +++|
01819  M00S01817.secart  +++|      ELSE IF (DFTXT(32:41).EQ.'DEAD START') THEN
01820  M00S01818.secart  +++|        DFEDATE=DFTXT(21:30)
01821  M00S01819.secart  +++|
01822  M00S01820.secart  +++|* HOURLY LOG DATE MESSAGE.
01823  M00S01821.secart  +++|
01824  M00S01822.secart  +++|      ELSE IF (DFTXT(5:9).EQ.'00.00' .AND.
01825  M00S01823.secart  +++|     .         DFTXT(21:31).EQ.'SYSTEM DATE') THEN
01826  M00S01824.secart  +++|        DFEDATE=DFTXT(35:44)
01827  M00S01825.secart  +++|      ENDIF
01828  M00S01826.secart  +++|
01829  M00S01827.secart  +++|* ACCEPT START DATE, IF FOUND.
01830  M00S01828.secart  +++|
01831  M00S01829.secart  +++|      IF (DFSDATE.EQ.' ' .AND. DFEDATE.NE.' ') DFSDATE=DFEDATE
01832  M00S01830.secart  +++|
01833  M00S01831.secart  +++|* NEED DATE, SYSTEM TITLE AND VERSION TO PROCESS LOG.
01834  M00S01832.secart  +++|
01835  M00S01833.secart  +++|      IF (DFSDATE.EQ.' '.OR.DFTITLE.EQ.' '.OR.DFVERSN.EQ.' ') GOTO 100
01836  M00S01834.secart  +++|
01837  M00S01835.secart  +++|* REWIND FOR ROUTINE PROCESSING AND SKIP OVER DATE STAMP.
01838  M00S01836.secart  +++|
01839  M00S01837.secart  +++|      REWIND 1
01840  M00S01838.secart  +++|      IF (DFIN.EQ.1) READ (1,10,END=130) DFTXT
01841  M00S01839.secart  +++|      PRT=.FALSE.
01842  M00S01840.secart  +++|
01843  M00S01841.secart  +++|* DROP THROUGH TO READ FIRST USABLE MESSAGE.
01844  M00S01842.secart  +++|
01845  M00S01843.secart  +++|* ---------------------------------------------------------------------
01846  M00S01844.secart  +++|* ROUTINE DAYFILE MESSAGE PROCESSING.
01847  M00S01845.secart  +++|* ---------------------------------------------------------------------
01848  M00S01846.secart  +++|
01849  M00S01847.secart  +++|* GET MSG, COUNT & MARK AS TO SOURCE ('-' IN COL 19 = DAYFILE).
01850  M00S01848.secart  +++|
01851  M00S01849.secart  +++|  120 READ (1,10,END=130) DFTXT
01852  M00S01850.secart  +++|      DFIN=DFIN+1
01853  M00S01851.secart  +++|      DFTXT(19:19)='-'
01854  M00S01852.secart  +++|      DFETIME=DFTXT(1:10)
01855  M00S01853.secart  +++|      RETURN
01856  M00S01854.secart  +++|
01857  M00S01855.secart  +++|* EOF ALTERNATE EXIT.
01858  M00S01856.secart  +++|
01859  M00S01857.secart  +++|  130 DFEOF=.TRUE.
01860  M00S01858.secart  +++|      WRITE (8,*) '  === EOF DAYFILE LOG ',LFN,', ',DFIN,' MESSAGES'
01861  M00S01859.secart  +++|      RETURN 1
01862  M00S01860.secart  +++|
01863  M00S01861.secart  +++|**        ENTRY -  CALL DFMSG(*NNN)
01864  M00S01862.secart  +++|*                  *NNN IS ALTERNATE EXIT TAKEN WHEN DFEOF = .TRUE. AT
01865  M00S01863.secart  +++|*                       TIME OF CALL.
01866  M00S01864.secart  +++|*
01867  M00S01865.secart  +++|*         EXIT -   ANNOTATED DAYFILE MESSAGE IS WRITTEN TO COMPOSITE
01868  M00S01866.secart  +++|*                  LOG FILE ON UNIT 3 AND NEXT RECORD IS READ, OR
01869  M00S01867.secart  +++|*                  *DFEOF* IS SET .TRUE.
01870  M00S01868.secart  +++|*
01871  M00S01869.secart  +++|*         ERROR -  NONE.
01872  M00S01870.secart  +++|*
01873  M00S01871.secart  +++|*         PRINTOUT -
01874  M00S01872.secart  +++|*                  ANNOTATED COPIES OF CERTAIN DAYFILE LOG MESSAGES:
01875  M00S01873.secart  +++|*                  - LEVEL ZERO DEADSTART MESSAGES,
01876  M00S01874.secart  +++|*                  - ALL WITH TIMESTAMP WITHIN TIME WINDOW,
01877  M00S01875.secart  +++|*                  - ALL *SUI* MESSAGES,
01878  M00S01876.secart  +++|*                  - ALL CONSOLE OPERATOR COMMAND MESSAGES,
01879  M00S01877.secart  +++|*                  - ANY CONTAINING SELECTED TEXT STRING.
01880  M00S01878.secart  +++|*
01881  M00S01879.secart  +++|*         CALLS -  *JSNLVL0* TO UPDATE D/S UNIQUE JSN PREFIX CODE.
01882  M00S01880.secart  +++|*                  *TMCHECK* TO CHECK FOR TIME WINDOWS.
01883  M00S01881.secart  +++|*                  *JSNTRAK* TO COLLECT ATTRIBUTES IN JSN TRACE TABLE.
01884  M00S01882.secart  +++|*                  *PARSE* TO EXTRACT DATA ITEMS FROM LOG MESSAGES.
01885  M00S01883.secart  +++|*                  *PICKUSR* TO CHECK NEW USERIDS FOR SELECTION.
01886  M00S01884.secart  +++|*                  *MSCHECK* TO CHECK FOR SELECTED TEXT STRINGS.
01887  M00S01885.secart  +++|*
01888  M00S01886.secart  +++|*         USES -   COMMON /CTL/ FOR GLOBAL VARIABLES.
01889  M00S01887.secart  +++|*                  COMMON /DFL/ FOR DAYFILE-SPECIFIC VARIABLES.
01890  M00S01888.secart  +++|*                  COMMON /TRC/ FOR JSN TRACE TABLE DATA.
01891  M00S01889.secart  +++|*
01892  M00S01890.secart  +++|*         NOTES -  THIS ROUTINE PROCESSES MESSAGE READ DURING PREVIOUS
01893  M00S01891.secart  +++|*                  CALL AND THEN READS NEXT RECORD BEFORE RETURNING.
01894  M00S01892.secart  +++|*                  THIS ALLOWS *SECART* TO SEE TIMESTAMP OF NEXT RECORD
01895  M00S01893.secart  +++|*                  AND DECIDE WHEN TO PROCESS VIS A VIS ACCOUNT LOG.
01896  M00S01894.secart  +++|
01897  M00S01895.secart  +++|      ENTRY DFMSG(*)
01898  M00S01896.secart  +++|
01899  M00S01897.secart  +++|* WATCH FOR SYSJOB MSGS W/ DATE.
01900  M00S01898.secart  +++|
01901  M00S01899.secart  +++|      IF (DFTXT(13:17).EQ.'SYS S') THEN
01902  M00S01900.secart  +++|
01903  M00S01901.secart  +++|* SYSJOB HOURLY DATE MESSAGES.
01904  M00S01902.secart  +++|
01905  M00S01903.secart  +++|        IF (DFTXT(5:9).EQ.'00.00' .AND.
01906  M00S01904.secart  +++|     .      DFTXT(21:31).EQ.'SYSTEM DATE') THEN
01907  M00S01905.secart  +++|          DFEDATE=DFTXT(35:44)
01908  M00S01906.secart  +++|
01909  M00S01907.secart  +++|* SYSJOB DEAD START MESSAGE W/ DATE.
01910  M00S01908.secart  +++|
01911  M00S01909.secart  +++|        ELSE IF (DFTXT(32:41).EQ.'DEAD START') THEN
01912  M00S01910.secart  +++|          DFEDATE=DFTXT(21:30)
01913  M00S01911.secart  +++|
01914  M00S01912.secart  +++|* LEVEL 0 REQUIRES UPDATE D/S UNIQUE CODE.
01915  M00S01913.secart  +++|
01916  M00S01914.secart  +++|          IF (DFTXT(43:51).EQ.'LEVEL  0.') CALL JSNLVL0
01917  M00S01915.secart  +++|        ENDIF
01918  M00S01916.secart  +++|
01919  M00S01917.secart  +++|* DETECT SPECIAL JSN FOR LEVEL 0 DEADSTART TOO.
01920  M00S01918.secart  +++|
01921  M00S01919.secart  +++|      ELSE IF (DFTXT(13:17).EQ.'AAAAA') THEN
01922  M00S01920.secart  +++|        PRT=.TRUE.
01923  M00S01921.secart  +++|        CALL JSNLVL0
01924  M00S01922.secart  +++|      ENDIF
01925  M00S01923.secart  +++|
01926  M00S01924.secart  +++|* INSERT D/S UNIQUE CODE LETTER AS JSN PREFIX.
01927  M00S01925.secart  +++|
01928  M00S01926.secart  +++|      DFTXT(11:12)=DSU//'.'
01929  M00S01927.secart  +++|
01930  M00S01928.secart  +++|* CHECK FOR TIME WINDOW PRINTOUT.
01931  M00S01929.secart  +++|
01932  M00S01930.secart  +++|      CALL TMCHECK(DFETIME,PRT)
01933  M00S01931.secart  +++|
01934  M00S01932.secart  +++|* MATCH/COLLECT JSN AND DATE/TIME GROUP (DTG).
01935  M00S01933.secart  +++|
01936  M00S01934.secart  +++|      JSN=DFTXT(11:16)
01937  M00S01935.secart  +++|      JCL=DFTXT(17:17)
01938  M00S01936.secart  +++|      CALL JSNTRAK(JSN,JCL,DFEDTG,N,1)
01939  M00S01937.secart  +++|
01940  M00S01938.secart  +++|* CRACK 1ST WORD TO PICK OUT UJN OR USER, SUI, OPERATOR COMMANDS.
01941  M00S01939.secart  +++|* SHORTSTOP COMMENT LINES.
01942  M00S01940.secart  +++|
01943  M00S01941.secart  +++|      I=21
01944  M00S01942.secart  +++|      CALL PARSE(DFTXT,I,VERB)
01945  M00S01943.secart  +++|      IF (VERB.EQ.'*') GOTO 140
01946  M00S01944.secart  +++|
01947  M00S01945.secart  +++|* ACCOMMODATE USE OF $ AND / COMMAND PREFIXES ONLY.
01948  M00S01946.secart  +++|
01949  M00S01947.secart  +++|      IF (VERB.EQ.' ') THEN
01950  M00S01948.secart  +++|        IF (INDEX('$/',DFTXT(I-1:I-1)).NE.0) THEN
01951  M00S01949.secart  +++|          CALL PARSE(DFTXT,I,VERB)
01952  M00S01950.secart  +++|        ELSE
01953  M00S01951.secart  +++|          GOTO 140
01954  M00S01952.secart  +++|        ENDIF
01955  M00S01953.secart  +++|      ENDIF
01956  M00S01954.secart  +++|
01957  M00S01955.secart  +++|* TRY TO EXTRACT UJN FROM FIRST DAYFILE MESSAGE FOR EACH JOB.
01958  M00S01956.secart  +++|
01959  M00S01957.secart  +++|      IF ((ML(1,N).EQ.1) .AND. JN(N).EQ.' ') THEN
01960  M00S01958.secart  +++|        JN(N)=VERB
01961  M00S01959.secart  +++|        CALL PICKUJN(JN(N),MK(N))
01962  M00S01960.secart  +++|      ENDIF
01963  M00S01961.secart  +++|
01964  M00S01962.secart  +++|* WATCH FOR USER COMMAND TO EXTRACT FM,UN & CHECK FOR SELECTION.
01965  M00S01963.secart  +++|
01966  M00S01964.secart  +++|      IF (VERB.EQ.'USER') THEN
01967  M00S01965.secart  +++|        CALL PARSE(DFTXT,I,USR)
01968  M00S01966.secart  +++|        CALL PARSE(DFTXT,I,NUL)
01969  M00S01967.secart  +++|        CALL PARSE(DFTXT,I,FAM)
01970  M00S01968.secart  +++|        IF (UN(N).EQ.' ' .AND .FN(N).EQ.' ') THEN
01971  M00S01969.secart  +++|          UN(N) = USR
01972  M00S01970.secart  +++|          FN(N) = FAM
01973  M00S01971.secart  +++|        ENDIF
01974  M00S01972.secart  +++|        CALL PICKUSR(FAM,USR,MK(N))
01975  M00S01973.secart  +++|
01976  M00S01974.secart  +++|* SPECIAL CASE 'SUI' COMMAND AS USERNAME.
01977  M00S01975.secart  +++|
01978  M00S01976.secart  +++|      ELSE IF (VERB.EQ.'SUI') THEN
01979  M00S01977.secart  +++|        CALL PARSE(DFTXT,I,USR)
01980  M00S01978.secart  +++|        IF (UN(N).EQ.' ') UN(N) = USR
01981  M00S01979.secart  +++|        CALL PICKUSR(FN(N),USR,MK(N))
01982  M00S01980.secart  +++|
01983  M00S01981.secart  +++|* SPECIAL CASE PRINTOUT OF OPERATOR COMMANDS.
01984  M00S01982.secart  +++|
01985  M00S01983.secart  +++|      ELSE IF (VERB.EQ.'DS'.AND.DFTXT(I-1:I).EQ.', ') THEN
01986  M00S01984.secart  +++|        PRT=.TRUE.
01987  M00S01985.secart  +++|      ENDIF
01988  M00S01986.secart  +++|
01989  M00S01987.secart  +++|* FINAL CHECK FOR DIRECTIVE SELECTED TEXT STRING(S).
01990  M00S01988.secart  +++|
01991  M00S01989.secart  +++|  140 CALL MSCHECK(DFTXT(21:100),PRT)
01992  M00S01990.secart  +++|
01993  M00S01991.secart  +++|* PRINTOUT MESSAGE FOR ANY REASON.
01994  M00S01992.secart  +++|
01995  M00S01993.secart  +++|      IF (PRT) THEN
01996  M00S01994.secart  +++|        WRITE (8,10) DFTXT
01997  M00S01995.secart  +++|        PRT=.FALSE.
01998  M00S01996.secart  +++|      ENDIF
01999  M00S01997.secart  +++|
02000  M00S01998.secart  +++|* PUT ANNOTATED MESSAGE INTO MERGED LOG FILE.
02001  M00S01999.secart  +++|
02002  M00S02000.secart  +++|      WRITE (3,10) DFTXT
02003  M00S02001.secart  +++|      GOTO 120
02004  M00S02002.secart  +++|
02005  M00S02003.secart  +++|      END
02006  M00S02004.secart  +++|
02007  M00S02005.secart  +++|* ---------------------------------------------------------------------
02008  M00S02006.secart  +++|      SUBROUTINE ACSCAN(LFN,*)
02009  M00S02007.secart  +++|**        ACSCAN - ACCOUNT LOG MESSAGE PROCESSING.
02010  M00S02008.secart  +++|*
02011  M00S02009.secart  +++|*         *ACSCAN* PROVIDES THE PRIMARY ROUTINES FOR PROCESSING ACCOUNT
02012  M00S02010.secart  +++|*         LOG MESSAGES.  IT PROVIDES AN ENTRY POINT TO PRE-SCAN THE LOG
02013  M00S02011.secart  +++|*         FILE TO VALIDATE FORMAT AND EXTRACT CRITICAL SYSTEM ID AND
02014  M00S02012.secart  +++|*         DATE/TIME DATA, AND ANOTHER FOR ROUTINE PROCESSING OF EACH
02015  M00S02013.secart  +++|*         LOG MESSAGE IN THE SEQUENCE CONTROLLED BY *SECART*. ANNOTATED
02016  M00S02014.secart  +++|*         ACCOUNT LOG MESSAGES ARE WRITTEN TO COMPOSITE LOG ON UNIT 3.
02017  M00S02015.secart  +++|
02018  M00S02016.secart  +++|      IMPLICIT INTEGER(A-Z)
02019  M00S02017.secart  +++|
02020  M00S02018.secart  +++|      PARAMETER     (MXJ=1000)
02021  M00S02019.secart  +++|*                            SIZE OF JSN TRACE TABLE.
02022  M00S02020.secart  +++|
02023  M00S02021.secart  +++|      EQUIVALENCE   (ACEDTG,ACEDATE)
02024  M00S02022.secart  +++|*                            /ACL/ ACEDTG*20 = ACEDATE*10 // ACETIME*10.
02025  M00S02023.secart  +++|
02026  M00S02024.secart  +++|
02027  M00S02025.secart  +++|      CHARACTER*10  ACEDATE
02028  M00S02026.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG END DATE.
02029  M00S02027.secart  +++|
02030  M00S02028.secart  +++|      CHARACTER*20  ACEDTG
02031  M00S02029.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG END DATE/TIME.
02032  M00S02030.secart  +++|
02033  M00S02031.secart  +++|      LOGICAL       ACEOF
02034  M00S02032.secart  +++|*                            /CTL/ ACCOUNT LOG EOF FLAG.
02035  M00S02033.secart  +++|
02036  M00S02034.secart  +++|      CHARACTER*10  ACETIME
02037  M00S02035.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG END TIME.
02038  M00S02036.secart  +++|
02039  M00S02037.secart  +++|      INTEGER       ACIN
02040  M00S02038.secart  +++|*                            /CTL/ ACCOUNT LOG MESSAGE COUNTER.
02041  M00S02039.secart  +++|
02042  M00S02040.secart  +++|      CHARACTER*10  ACSDATE
02043  M00S02041.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG START DATE.
02044  M00S02042.secart  +++|
02045  M00S02043.secart  +++|      CHARACTER*10  ACSTIME
02046  M00S02044.secart  +++|*                            /ACL/ (EQV) ACCOUNT LOG START TIME.
02047  M00S02045.secart  +++|
02048  M00S02046.secart  +++|      CHARACTER*40  ACTITLE
02049  M00S02047.secart  +++|*                            /ACL/ ACCOUNT LOG SYSTEM TITLE.
02050  M00S02048.secart  +++|
02051  M00S02049.secart  +++|      CHARACTER*100 ACTXT
02052  M00S02050.secart  +++|*                            /ACL/ CURRENT ACCOUNT LOG MESSAGE TEXT.
02053  M00S02051.secart  +++|
02054  M00S02052.secart  +++|      CHARACTER*20  ACVERSN
02055  M00S02053.secart  +++|*                            /ACL/ ACCOUNT LOG SYSTEM VERSION.
02056  M00S02054.secart  +++|
02057  M00S02055.secart  +++|      LOGICAL       DFEOF
02058  M00S02056.secart  +++|*                            /CTL/ DAYFILE LOG EOF FLAG.
02059  M00S02057.secart  +++|
02060  M00S02058.secart  +++|      INTEGER       DFIN
02061  M00S02059.secart  +++|*                            /CTL/ DAYFILE LOG MESSAGE COUNTER.
02062  M00S02060.secart  +++|
02063  M00S02061.secart  +++|      CHARACTER*1   DSU
02064  M00S02062.secart  +++|*                            /TRC/ DEADSTART UNIQUE PREFIX CODE.
02065  M00S02063.secart  +++|
02066  M00S02064.secart  +++|      CHARACTER*7   FAM
02067  M00S02065.secart  +++|*                            TEMP - FAMILYNAME VARIABLE.
02068  M00S02066.secart  +++|
02069  M00S02067.secart  +++|      CHARACTER*7   FN(MXJ)
02070  M00S02068.secart  +++|*                            /TRC/ FAMILY NAME COLUMN IN TRACE TABLE.
02071  M00S02069.secart  +++|
02072  M00S02070.secart  +++|      INTEGER       JBLIMIT
02073  M00S02071.secart  +++|*                            /CTL/ UNIT JOB PRINTOUT MESSAGE LIMIT.
02074  M00S02072.secart  +++|
02075  M00S02073.secart  +++|      CHARACTER*1   JC(MXJ)
02076  M00S02074.secart  +++|*                            /TRC/ JOB CLASS COLUMN IN TRACE TABLE.
02077  M00S02075.secart  +++|
02078  M00S02076.secart  +++|      CHARACTER*1   JCL
02079  M00S02077.secart  +++|*                            TEMP - JOB CLASS VARIABLE.
02080  M00S02078.secart  +++|
02081  M00S02079.secart  +++|      CHARACTER*7   JN(MXJ)
02082  M00S02080.secart  +++|*                            /TRC/ UJN COLUMN IN TRACE TABLE.
02083  M00S02081.secart  +++|
02084  M00S02082.secart  +++|      CHARACTER*6   JS(MXJ)
02085  M00S02083.secart  +++|*                            /TRC/ D.JSN COLUMN IN TRACE TABLE.
02086  M00S02084.secart  +++|
02087  M00S02085.secart  +++|      CHARACTER*6   JSN
02088  M00S02086.secart  +++|*                            TEMP   JSN VARIABLE.
02089  M00S02087.secart  +++|
02090  M00S02088.secart  +++|      CHARACTER*7   LFN
02091  M00S02089.secart  +++|*                            ARG - LFN FOR ACCOUNT LOG FILE.
02092  M00S02090.secart  +++|
02093  M00S02091.secart  +++|      CHARACTER*4   MID
02094  M00S02092.secart  +++|*                            TEMP - ACCOUNT MESSAGE ID.
02095  M00S02093.secart  +++|
02096  M00S02094.secart  +++|      CHARACTER*5   MK(MXJ)
02097  M00S02095.secart  +++|*                            /TRC/ JOB SELECTION MARKS IN TRACE TABLE.
02098  M00S02096.secart  +++|
02099  M00S02097.secart  +++|      INTEGER       ML(2,MXJ)
02100  M00S02098.secart  +++|*                            /CTL/ DFL/AFL MSG COUNTS FOR TRACE TABLE.
02101  M00S02099.secart  +++|
02102  M00S02100.secart  +++|      INTEGER       NJ
02103  M00S02101.secart  +++|*                            /CTL/ CURRENT NUMBER JOBS IN TRACE TABLE.
02104  M00S02102.secart  +++|
02105  M00S02103.secart  +++|      CHARACTER*20  NUDTG
02106  M00S02104.secart  +++|*                            TEMP - NEW DATE/TIME GROUP VARIABLE.
02107  M00S02105.secart  +++|
02108  M00S02106.secart  +++|      CHARACTER*6   NUJSN
02109  M00S02107.secart  +++|*                            TEMP - NEW JSN VARIABLE.
02110  M00S02108.secart  +++|
02111  M00S02109.secart  +++|      LOGICAL       PRT
02112  M00S02110.secart  +++|*                            FLAG TO PRINTOUT ACCOUNT LOG MESSAGE.
02113  M00S02111.secart  +++|
02114  M00S02112.secart  +++|      CHARACTER*2   SC
02115  M00S02113.secart  +++|*                            TEMP - IGNORED WORD FROM *PARSE*.
02116  M00S02114.secart  +++|
02117  M00S02115.secart  +++|      CHARACTER*20  TE(MXJ)
02118  M00S02116.secart  +++|*                            /TRC/ JOB DATE/TIME END IN TRACE TABLE.
02119  M00S02117.secart  +++|
02120  M00S02118.secart  +++|      CHARACTER*7   TN(MXJ)
02121  M00S02119.secart  +++|*                            /TRC/ JOB TERMINAL NAME IN TRACE TABLE.
02122  M00S02120.secart  +++|
02123  M00S02121.secart  +++|      CHARACTER*7   TRM
02124  M00S02122.secart  +++|*                            TEMP - TERMINAL ID VARIABLE.
02125  M00S02123.secart  +++|
02126  M00S02124.secart  +++|      CHARACTER*20  TS(MXJ)
02127  M00S02125.secart  +++|*                            /TRC/ JOB DATE/TIME START IN TRACE TABLE.
02128  M00S02126.secart  +++|
02129  M00S02127.secart  +++|      CHARACTER*7   UN(MXJ)
02130  M00S02128.secart  +++|*                            /TRC/ JOB USERNAME IN TRACE TABLE.
02131  M00S02129.secart  +++|
02132  M00S02130.secart  +++|      CHARACTER*7   USR
02133  M00S02131.secart  +++|*                            TEMP - USERNAME VARIABLE.
02134  M00S02132.secart  +++|
02135  M00S02133.secart  +++|      CHARACTER*1   X
02136  M00S02134.secart  +++|*                            TEMP - USED IN D.JSN ATTRIBUTES RECOVERY.
02137  M00S02135.secart  +++|
02138  M00S02136.secart  +++|
02139  M00S02137.secart  +++|* ACCOUNT LOG SPECIFIC VARIABLES.
02140  M00S02138.secart  +++|
02141  M00S02139.secart  +++|      COMMON /ACL/  ACSDATE
02142  M00S02140.secart  +++|      COMMON /ACL/  ACSTIME
02143  M00S02141.secart  +++|      COMMON /ACL/  ACEDATE
02144  M00S02142.secart  +++|      COMMON /ACL/  ACETIME
02145  M00S02143.secart  +++|      COMMON /ACL/  ACTITLE
02146  M00S02144.secart  +++|      COMMON /ACL/  ACVERSN
02147  M00S02145.secart  +++|      COMMON /ACL/  ACTXT
02148  M00S02146.secart  +++|
02149  M00S02147.secart  +++|* GLOBAL NUMERIC/LOGICAL VARIABLES AND PARAMETERS.
02150  M00S02148.secart  +++|
02151  M00S02149.secart  +++|      COMMON /CTL/  NJ
02152  M00S02150.secart  +++|      COMMON /CTL/  ACIN
02153  M00S02151.secart  +++|      COMMON /CTL/  DFIN
02154  M00S02152.secart  +++|      COMMON /CTL/  ACEOF
02155  M00S02153.secart  +++|      COMMON /CTL/  DFEOF
02156  M00S02154.secart  +++|      COMMON /CTL/  ML
02157  M00S02155.secart  +++|      COMMON /CTL/  JBLIMIT
02158  M00S02156.secart  +++|
02159  M00S02157.secart  +++|* JSN TRACE TABLE STORAGE.
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/secart.txt ยท Last modified: (external edit)