Google
 

Trailing-Edge - PDP-10 Archives - LCG_Integration_Tools_Clearinghouse_T20_v7_30Apr86 - tools/casestdy/case1.txt
There are 3 other files named case1.txt in the archive. Click here to see a list.
	Revision No:  1      
	Date:  83JUN07
 
VAX Conversion Guidelines
 
 
 
1.0  PROGRAM CHANGES & COMPILE
 
	1.	Print all the programs that are to be converted from the 
DEC-10, use these listings to mark your initial changes.  
By taking the copy from the DEC-10 you will be able to 
confirm that the copy you get on the VAX is the same 
version.
 
	2.	Copy the production source of the system you are 
converting to your VAXD account, Refer to the procedures 
in Attachment no. 5,
 
	3.	For COBOL programs use the extension of .COB instead of 
.CBL, which was used on the DEC-10,
 
	4.	Change the source code to VAX compatible code:
 
                  
	ie.  COBOL to VAX COBOL
		               FORTRAN TO VAX FORTRAN
 
		Refer to Attachment No. 1 for typical COBOL changes 
reqiured.
 
	5.	If a program used to access the CUMAST file, then change 
any of these accesses to the CUSTOMER data base, refer to 
Attachment No. 3,
 
	6.	Compile and link your program, refer to Attachment no. 4, 
ensure that you have maps and cross-references on the 
final listing,
 
	7.	Final program listings are to be made on the page printer 
(the VAX will have its own).  Portrait format is 
preferable,
 
	8.	Any comments you feel are helpful, especially those 
concerning data base access, should be put into the code.  
Comments should be made in lower case in order to 
differentiate them easily from executed instructions,
 
	9.	In the 'REMARKS' area document the conversion date and 
who it was done by, eg.
 
               	*              Conversion Date:  83May31
			*                           By:  V. Shipka
 
	10.	For systems that use card decks, the master or 
transaction files will be converted to disk.  If the Lead 
Card in the card deck was used to input the business 
date, a 'limited' number of parameters, etc., these 
should be removed from the card file and accepted via the 
JCL stream.
 
 
2.0  TESTING
 
	1.	Obtain sample production reports showing folio-twons that 
are in the test CUSTOMER data base (April month end).  If 
these reports are not available it may be necessary to 
run the DEC-10 production programs against the test 
CUMAST master on the DEC-10 in order to produce sample 
reports.  NOTE: Keep all run logs if you have to do this 
so that performance comparisons between the DEC-10 and 
the VAX can be made.
 
	2.	Setup DCL as per production requirements, refer to 
Attachment No. 6, in order to perform unit and stream 
testing,
 
	3.	Run the job streams against the CUSTOMER data base and 
compare the reports obtained from step #1,
 
	4.	Make any program changes required in order to parallel 
the old and converted systems.
 
 
3.0  PROGRAM DOCUMENTATION
 
	1.	Change any existing program documentation to reflect new 
program and file names,
 
	2.	Include comments on access to the CUSTOMER data base,
 
	3.	Most new comments should be placed directly in the 
program code.
 
 
4.0  SYSTEM TEST
 
	1.	Parallel test converted programs and DCL with production 
on the DEC-10, refer to the Attachment No. 7 - Parallel 
Production Schedule,
 
5.0	 SYSTEM DOCUMENTATION
 
	1.	Prepare a revised system flowchart.  This flowchart will 
show the new names for programs and files.  There may be 
new job streams which are oriented to user-submitted 
processing.  Tapes are to be eliminated whenever 
possible.
 
 
6.0  USER DOCUMENTATION
 
	1.	Assistance in preparing User Documentation which 
describes how to run user-submitted jobs may be required.  
The user, however, is responsible for preparing and 
finalizing this documentation.
 
 
7.0  USER TRAINING
 
	1.	Instruction with the user on how to setup, submit, obtain 
and possibly control the processing on the VAX will be 
required.
 
 
8.0  SYSTEM SUPPORT
 
	1.	Support will be required by the user during the initial 
running of the converted systems.
 
				Revision No:  2      
				Date:  83JUN07
 
Conversion Attachment Number 1
 
Changes from DEC10 COBOL To VAX COBOL
 
 
1.0  GENERAL CHANGES
 
	1.	Begin all statements in their proper column, ie. "A" or 
"B" columns,
 
	2.	The continuation character "-" is in column 7,
 
	3.	The following are reserved words:
			CONTINUE
			DAY
			DISCONNECT
			Anything starting with END-
			FINISH 
			HEADING
			START
 
	4.	For COPY statements the copy libray must be logically 
referenced within the program, use the logical name 
COPYLIB:
 
			eg.  COPY WSJULDAT IN "COPYLIB:".
 
		Then externally, either in your LOGIN.COM or a separate 
command file define the logical file as follows:
 
			$ASSIGN U5:[BIL]LIBRARY.TLB COPYLIB
 
		Also FDs and 01 levels which directly precede the COPY 
statment must be commented out or removed,
 
	5.	Change all TABS to 8 spaces (on the VAX a TAB is 6 
spaces).
 
 
2.0  INDENTIFICATION DIVISION
 
	1.	The order must be as follows:
 
			AUTHOR
			INSTALLATION.
			DATE-WRITTEN.
			DATE-COMPILED.
	2.	For INSTALLATION change CALGARY POWER LTD.  to TRANSALTA 
UTILITIES,
 
	3.	Remove the REMARKS statement and replace by comments.
 
 
3.0  ENVIRONMENT DIVISION
 
	1.	The entire ENVIRONMENT DIVISON is optional.
 
	2.	In the CONFIGURATION SECTION change DEC-10 to VAX-11, for 
both the SOURCE and OBJECT computer,
 
	3.	change all logical disk assignments to "SYS$DISK:" 
(include the quotes).
 
	4.	In SPECIAL-NAMES put a period only on the last line,
 
	5.	Change CHANNEL (1) to CO1,
 
	6.	ACCESS MODE should be RANDOM or DYNAMIC, these will 
replace INDEXED,
 
	7.	SYMBOLIC KEYS no longer exist, they are replaced by the 
actual key on the file,
 
	8.	FILE-STATUS becomes FILE STATUS IS filestat, where 
filestat is a 2 "digit" alpha-numeric item,
 
	9.	USER-NUMBER, ie. the old DEC-10 [ppn], clause is not 
permitted.
 
	10. Remove ALTERNATE from the RESERVE clause.
 
 
4.0  DATA DIVISION
 
	1.	In FD definitions, change all VALUE OF IDENTIFICATION 
clauses to VALUE OF ID clauses,
 
	2.	The file name in the VALUE OF ID clause must contain the 
period ".", eg. "SSI010R01" becomes "SSI010.R01"; 
otherwise the file extension defaults to .DAT,
 
	3.	RECORDING MODE is invalid in the FD,
 
	4.	Comment out BLOCK CONTAINS 0 RECORDS, and BLOCK CONTAINS 
1 RECORD,
	5.	REDEFINES and OCCURS cannot be on the same line,
 
	6.	For multiple REDEFINES of the same area, the first data 
group or element must be referenced,
 
	7.	The OCCURS clause cannot be used at the 01 level,
 
	8.	Change all DISPLAY-6 and DISPLAY-7 to DISPLAY,
 
	9.	In report headings change CALGARY POWER LTD. to TRANSALTA 
UTILITIES, Further in and sub-headings or table entries 
change CPL to TAU.
 
 
5.0  PROCEDURE DIVISION
 
	1.	ZEROS or SPACES checks can only be done on alpha-numeric 
fields,
 
	2.	a numeric field can never have spaces mixed in it,
 
	3.  change all EQUALS to EQUAL, or simply use "=" for both 
cases,
 
	4.	Change AFTER VARYING to AFTER,
 
	5.	Initialize all Tables in the Initialization part of the 
program, the values will either be zero or set to the 
appropriate values,
 
	6.	Initialize all veriables either in the Initialization 
part of the program or by using the VALUE clause in the 
DATA DIVISION,
 
	7.	Sequential reading or ISAM files is different in that a 
START statement must used, the START statement is also 
different form the DEC-10 COBOL-74, refer to the 
following examples for the difference:
 
			VAX:
			     START MASTER-FILE
			     KEY IS > M-KEY
			     INVALID KEY ...
 
			DEC-10:
			     START MASTER-FILE
			     KEY IS = M-KEY
			     INVALID KEY ...
 
	8.	In the OPEN statement, INPUT-OUTPUT becomes I-O,
	9.	When accessing ISAM files MOVEs to symbolic keys are 
replaced with a move to the actual key,
 
	10.	the EXAMINE statement is replaced with the INSPECT 
statement,
 
	11.	INSPECT REPLACING is replaced by INSPECT CONVERTING,
 
	12.	HIGH-VALUES and LOW-VALUES are treated as alpha-numeric 
items and cannot be moved to numeric items,
 
	13.	If ACCEPT is used special setup of the variable(s) 
ACCEPTed is required in the batch or interactive command 
files, refer to Attachment No. 2 for details on how to 
set thse up.
 
	14.	A paragraph name must follow the declaration of a 
SECTION.  There cannot be partial SECTIONing of a 
program, ie. SECTIONs are defined towards the end of the 
program code.  In small programs the SECTIONing can be 
removed completely.
 
	15.	In the initialization part of the program, TODAY is often 
MOVEd to WS-DATE which is defined as a group item for 
both date and time variables.  WS-DATE should be broken 
into separate group items for the date and time 
components, ie. WS-DATE and a new group WS-TIME.  These 
would be initialized with the system date and time by 
using the following statements:
 
			ACCEPT WS-DATE FROM DATE.
			ACCEPT WS-TIME FROM TIME.
 
	16.	On the DEC-10 the TALLY counter was implicitly defined as 
TALLY.
 
			eg.  INSPECT variable TALLYING ....
 
		On the VAX the counter must be explicitly defined in 
working storage. eg. if TALLY was defined the INSPECT 
statement would become:
 
			INSPECT variable TALLYING TALLY FOR ...
 
	17.	Moving 0 or ZERO to a group item of numeric elements will 
not zero out the elements.  This used to work on the 
DEC-10.  Either use individual MOVEs or try using the 
INITIALIZE statement.
 
	18.	If NOTE has been used to put comments in the code, 
replace it with the asterisk (*) in "column 7".
 
5.1  Special To Billing Conversion
 
	1.	For programs which use the library routine INITRINE, 
change the variable PROG-NO in the working storage to:
 
			nn PROG-ID    PIC X(6)   VALUE "report name".
			nn RPT-NO     PIC X(3)   VALUE "R01"
 
	Revision No:  1      
	Date:  83MAY27
 
Conversion Attachment Number 2
 
 
Setup of Batch & Interactive Command Files
For ACCEPT Statements
 
 
 
1.0  BATCH PROCESSING
 
	1.	Each ACCEPT Statement in the program will accept a "line" 
from the DCL stream which will contain one or more 
parameters.  Each of these parameters must be built using 
a separate DCL INQUIRE statement.  The ACCEPT "line" is 
then built by writing out the parameters to a command 
(.COM) file which is submitted to Batch processing.  For 
example, we have three parameters that are ACCEPTed by a 
single statement in program in program TME090.  The input 
format is as follows:
 
			Initial Folio	cols  1-3
			Start Date	cols 10-15 	
			Ending Date	cols 17-22
 
		The DCL statements required to set up a command file and 
run the program are as follows:
 
	$INQUIRE FOLIO "Enter Folio to be Selected (999)"
	$INQUIRE DATE1 "Enter Starting Date YYMMDD"	
	$INQUIRE DATE2 "Enter Ending Date YYMMDD"
	$OPEN/WRITE FILE TME090.COM
	$WRITE FILE "$RUN TME030.EXE"
	$WRITE FILE FOLIO, "     ", DATE1, "  ", DATE2
	$CLOSE FILE
	$SUBMIT/QUEUE=FAST/KEEP/AFTER=17:00 TME090.COM
	$EXIT
 
	NOTE:  The spaces in the WRITE statement between the 
parameters correspond to the blanks in columns 4-9 and 16 
respectively.
 
 
2.0  INTERACTIVE PROCESSING
 
	1.	For interactive use of programs, a command (.COM) file is 
also set up.  To run program TME090 the following 
statements would be setup:
 
		$ASSIGN/USER TT: SYS$INPUT
		$RUN TME090.EXE
	 					Revision No:  1       
						 Date:  83JUNE07
 
 
Conversion Attachment Number 3
 
Conversion to Data Base Access
 
 
1.0  GENERAL
 
	The logic in programs which access the CUSTOMER database 
often has to be radically changed.  It could be simplified 
because the sequential accessing of customer accounts, for 
example, does not need to skip over control records or type 2 
masters, as was done when accessing the indexed master.
 
	The other major change is the introduction of error handling 
messages when the unexpected end of sets occurs.  These must be 
properly handled even though they should not occur.  Proper 
E00n-type messages should be written out to an error report, or 
the Run Log, along with the old CIS key the error occurred for 
(if applicable).
 
 
2.0  DATA DIVISION
 
	1.	Add the Sub-Schema Section directly after the Data 
Division.
 
		DATA DIVISION
		SUB-SCHEMA SECTION
		DB CUTOMERS_SCHEMA  WITHIN CUSTOMERS_DATABASE
		                    FOR "CUSTOMER:CUSTOMERS.ROO".
 
		NOTE:  CUSTOMER: is defined externally by a DEFINE 
statement.  During the testing phase of the conversion 
use the following statements:
 
		$DEFINE CDD$DEFAULT	"CDD$TOP"
		$DEFINE CUSTOMER	"U5:[CUSTOMERS]"
 
 
3.0  PROCEDURE DIVISION
 
	1.	Change the OPEN for the Master to
		READY realms
		[CONCURRENT or EXCLUSIVE] and [RETRIEVAL or UPDATE]
		NOTE:  Use only the realms that you require, do not use 
EXCLUSIVE unless no one else is to access the data base 
while your program is running.
 
	2.	Change the CLOSE for the Master to ROLLBACK if RETRIEVE 
was chosen or COMMIT if UPDATE was chosen.  NB. ROLLBACK 
is used for UPDATE if the changes are not to be applied.
 
	3.	READ access is replaced by FIND/FETCH.
 
 	 					Revision No:  1       
						 Date:  83JUNE07
 
Conversion Attachment Number 4
 
Compilation & Linkage of Converted Programs
 
 
1.0  COMPILATION
 
		COBOL/L/D/CROSS_REFERENCE/MAP/COPY_LIST program-name
 
	where:
 
		/L produces a program Listing
 
		/D is required if DEBUG is to be used.
 
		/CROSS_REFERENCE is self-explanatory skip 1
 
		/MAP is self-explanatory
 
		/COPY_LIST is required when the COPY statement is used.
 
	NOTE:  when using the COPY statement ensure that you have    
	made the following ASSIGN before you compile:
	
			$ASSIGN U5:[BIL]LIBARY.LIB COPYLIB
 
For the program name the extension is not required if it is .COB
 
 
2.0  LINKAGE
 
		LINK program-name
 
		LINK/DEBUG program-name
 
				if DEBUG is to be used.
 
		LINK program-name,SYS$LIBRARY:DBMDML/OPT
 
				when VAX DBMS is used.
 	 					Revision No:  0      
						 Date:  83MAY31
 
 
Conversion Attaachment Number 5
 
Transfer of Files from DEC-10 to VAX
 
 
1.0  ON DEC-10
 
	1.	Copy files to [50,60] from [50,2]
 
	2.	DO TAPE1 (file1, file2, file3,...) 
			- wild cards are permitted
 
	3.	DO TAPE2
			- this request a scratch tape
 
	4.	Record the scratch tape number given to you.
 
	5.	DO TAPE3 tape#
 
 
2.0  ON THE VAX
 
	1.	$ALLOCATE MFA0:  TAPE:
 
	2.	$MOUNT/FOR TAPE:  tape#
 
	3.	$RUN SYS$SYSTEM:TAPECOPY
 
		- Choose option "2" (variable length records	delimited by 
		CR>Lf>
 
		- Answer "N" to "Conversion to ASCII".
 
		- Enter "1" for the number of files to be skipped.
 
		- Enter the filename.ext of the files in the order that 
		they were copied to the tape.  An entry is made for each 
		file	that is copied from the tape.	
 	 					Revision No:  0      
						 Date:  83JUN07
 
Conversion Attachment Number 6
Production DCL Guidelines
 
 
1.0  GENERAL
 
	These guidelines have been developed in accordance with those 
already documented in "Guidelines for systems Implementation 
Under VMS", as issued by T.K. Hodgson, March 14, 1983.
 
	The general philosophy when setting up DCL to run batch jobs 
is to make it easy to use by the end-user, the screen dialogue 
for different systems is to be similar and job setup parameter 
errors should be trapped when the batch DCL command file is 
generated, whenever possible.
 
 
2.0  DCL COMMAND FILES
 
	Various DCL command files must be setup for a production 
system.  For discussion purposes we consider that these files 
form different levels, with the highest level being one, and 
lower levels two and three.  The highest level calls the next 
lower level, etc.
 
 
2.1  MAIN MENU
 
	The first level command file consists of a "main menu" of 
jobs which can be run for the system.  Each job may consist of 
several steps which can run an appication program or a system 
utility program.  An example of a Main Menu DCL file is shown in 
Figure A6-1.
 
	Figure A6-1: Sample of the Main Menu for the SSI system
 
 
$! SSI.COM
$!
$! THIS IS THE MAIN MENU FOR THE SUPPLY SOURCE INFORMATION SYSTEM (SSI) 
$!
$TOP:
$WRITE SYS$OUTPUT "**** MAIN JOB MENU FOR SUPPLY SOURCE INFORMATION SYSTEM (SSI) ****"
$WRITE SYS$OUTPUT " "
$WRITE SYS$OUTPUT " 1 - SSI0I0: SUPPLY SHOURCE DETAIL REPORTING"
$WRITE SYS$OUTPUT " 2 - SSI030: SUPPLY SHOURCE DISTRIBUTION BY DISTRICT"
			^
			^- Put Stream ID in Menu

$WRITE SYS$OUTPUT " 3 - EXIT"
$WRITE SYS$OUTPUT " "
$ENTER:
$INQUIRE JOBNO    "ENTER THE NUMBER OF THE JOB YOU WISH TO RUN"
$IF JOBNO .EQS. "1" THEN $@SSI:SSICO1
				^
				^- Call Second level file "ssiCnn
							      ^--
					"C" = "CONTROL" ------^ ^
								^
					"nn" = Menu Number -----^


$IF JOBNO .EQS. "1" THEN $GOTO EXIT
$IF JOBNO .EQS. "2" THEN $@SSI:SSICO2
$IF JOBNO .EQS. "2" THEN $GOTO EXIT
$IF JOBNO .EQS. "3" THEN $GOTO EXIT
$ERR:
$WRITE SYS$OUTPUT "THE JOB NUMBER ENTERED IS INVALID - RE-ENTER"
$GOTO ENTER
$EXIT: EXIT
	This file is initiated by the user simply by typing the 
mnemonic code for the system (ie. SSI for the Supply Source 
Information system).
 
	In order for the Main Menu file to function properly, the 
following must be setup in the directory the system is run from:
 
	1.	The following entries should be made in the LOGIN.COM 
file:
 
			$DEFINE sys "dev:[directory]"
			sys := @SSI:SSI
 
			where "sys" is the system mnemonic code, eg. SSI
 
		For example:
				$DEFINE SSI "U5:[9FORSTER]"
				SSI := @SSI:SSI
 
	Once the user chooses a job from the Main Menu, a second 
level command file is executed.
 
 
2.2  Job Setup & Submit DCL Files
 
	The second level file sets up the DCL file that will control 
batch processing of the job.  Once the DCL batch control file has 
been created, the second level file submits it.
 
	The second level file is needed in order to enter parameters 
which may vary with each job run.  these include:
 
	1.	The starting job step,
 
	2.	Data accepted by the application program, ie. business 
date, selection criteria,	
 
	3.	Job submission parameters, ie. CUP run time, Starting 
time of job.
 
	Two samples of second level jobs are shown in figures A6-2 
and A6-3.
FIGURE A6-2: SSIC01.COM - Sample of a Second Level File
Called by SSI.COM
 
$!
$!  SSIC01.COM - THIS COMMAND FILE SETS UP & SUBMITS THE SSI010.COM FILE
$!             - SSI010.COM RUNS SSI010/015/020 FOR SUPPLY SOURCE SUMMARY
$!               & DETAIL BY DISTRICT
$!
$BEGIN:
$INQUIRE  JOBSTEP "WHICH JOB STEP DO YOU WISH TO START AT? SSI010/SSI015/SSI020 (DEFAULT IS SSI010)"
							    --------------------
								      ^
								      ^
							Show valid job step choices.
							Do NOT show a step that
							should never be started at.

$IF JOBSTET .EQS. "SSI010" .OR. JOBSTEP .EQS. "" .OR. JOBSTEP .EQS "" THEN 
    GOTO JOBDEFAULT
$IF JOBSTEP .EQS. "SSI015" THEN GOTO JOBOK
$IF JOBSTEP .EQS. "SSI020" THEN GOTO JOBOK
$INVJOB:
$WRITE  SYS$OUTPUT  "INVALID STARTING JOB - RE-ENTER"
$GOTO BEGIN
$JOBDEFAULT:
$JOBSTEP := "SSI010"
		^
		^- Default start (Usually the first one)

$JOBOK:
$INQUIRE  BUSDAT "ENTER THE BUSINESS DATE AS MONTH (9 CHARS) SPACE YEAR 
                  (19NN)"
$OPEN/WRITE FILE SSI010.COM
			^
			^- Name of the Third level file to be created

$WRITE	FILE "$BEGIN:"
$WRITE	FILE "ON ERROR  THEN GOTO ERROR1"
$WRITE	FILE "GOTO ". JOBSTEP
$WRITE	FILE "$!"
$WRITE	FILE "$!  STEP SSI010 - CUSTOMER DATA BASE SELECT"
$WRITE	FILE "$!"
$WRITE	FILE "$SSI010:
$WRITE	FILE "$ FAILSTEP := ""SSI010"""
			^
			^- The fail step job name is changed as each
			   new step is entered

$WRITE	FILE "$RUN  SSI:SSI010.EXE"
$WRITE	FILE BUSDAT
$DISTNO:
$INQUIRE  DISTNO "ENTER THE REQUIRED DISTRICT NUMBER (END OF STOP)"
$WRITE	FILE DISTNO
$IF DISTNO .NEX. "END" THEN GOTO DISTNO
			^
			^- Notice loop until "END" is entered

$WRITE	FILE "$PRINT SSI010.R01"
$WRITE	FILE "$!"
$WRITE	FILE "$!  STEP SSI015 - SORT SELECTED DISTRICTS"
$WRITE	FILE "$!"
$WRITE	FILE "$SSI015:
$WRITE	FILE "$ FAILSTEP := ""SSI015"""
$WRITE	FILE "$SORT/KEY=(POISTION:1,SIZE:3)/STATISTICS - "
						       ^
				Continuation of line  -^

$WRITE	FILE "$ SSI010.W01  SSI015.W01"
			^
			^- Put files on second line

$WRITE	FILE "$DELETE SSI010.W01"
$WRITE	FILE "$!"
$WRITE	FILE "$!  STEP SSI020 - SUPPLY SOURCE DETAIL & SUMMARY REPORT"
$WRITE	FILE "$!"
$WRITE	FILE "$SSI020:"
$WRITE	FILE "$ FAILSTEP := ""SSI020"""
$WRITE	FILE "$RUN SSI:SSI020.EXE"
$WRITE	FILE  BUSDAT
$WRITE	FILE "$PRINT SSI020.R02"
$WRITE	FILE "$DELETE SSI015.W01"
$WRITE	FILE "$EXIT:"
$WRITE	FILE "$ EXIT"
$WRITE	FILE "ERROR1:"
$WRITE	FILE "$WRITE SYS$OUTPUT ""*** SSI - SSI010 FAILED, JOB STEP = "", FAILSTEP, ""  ***"""
$WRITE	FILE "$WRITE SYS$OUTPUT ""RE-SUBMIT JOB STARTING AT STEP = "", FAILSTEP"
									^
					The FAILSTEP name may have to  -^
					be changed between these two
					lines if the re-submit start
					step is NOT the failed step.

$WRITE	FILE "$GOTO EXIT"
$CLOSE FILE
$!
$!   INQUIRE & SETUP THE SUBMIT STATEMENT
$!
$INQTIME:
$INQUIRE  TIME "ENTER THE CPU RUN TIME (DEFAULT IS 00:10:00)"
                IF TIME .EQS "" .OR. TIME .EQS. " " THEN GOTO TIMEDEFAULT
$GOTO INQAFTER
$TIMEDEFAULT:  TIME := "00:10:00"
			^
			^- Default time set up.

$INQAFTER:
$INQUIRE  AFTER  "ENTER THE DATE AND TIME THE JOB IS TO BE RUN AFTER (DEFAULT IS AFTER 17:00 TODAY)"
$IF AFTER .EQS. "" .OR. AFTER .EQS. "" THEN GOTO AFTERDEFAULT
$GOTO SUBMIT
$AFTERDEFAULT: AFTER := "17:00:00"
			^
			^- Default after DATE:TIME set up.

$SUBMIT:
$SUBMIT/KEEP/NOTIFY/CPUTIME='TIME'/AFTER='AFTER' . SSI:SSI010.COM
$EXIT:
$   EXIT

		If more SUBMIT modifiers are required they
		would be put in accordingly.
Figure A6-3: SSIC02.COM - Sample of a Second Level File
Called by SSI.COM
 
 
$!
$!  SSIC02.COM - THIS COMMAND FILE SETS UP & SUBMITS THE SSI030.COM FILE
$!             - SSI030.COM RUNS SSI030/035/040 FOR SUPPLY SOURCE 
$!               DISTRIBUTION BY DISTRICT REPORT
$!
$BEGIN:
$INQUIRE  JOBSTEP "WHICH STEP DO YOU WISH TO START AT? SSI030/SSI035/SSI040 (DEFAULT IS SSI030)"
$IF JOBSTEP .EQS. "SSI030" .OR. JOBSTEP .EQS. "" .OR. JOBSTEP .EQS. " " THEN GOTO JOBDEFAULT
$IF JOBSTEP .EQS. "SSI035" THEN GOTO JOBOK
$IF JOBSTEP .EQS. "SSI040" THEN GOTO JOBOK
$INVJOB:
$WRITE SYS$OUTPUT "INVALID STARTING JOB - RE-ENTER"
$GOTO BEGIN
$JOBDEFAULT:
$ JOBSTEP := "SSI030"
$JOBOK:
$INQUIRE BUSDAT "ENTER THE BUSINESS DATE AS MONTH (9 CHARS) SPACE YEAR (19NN)"
$OPEN/WRITE FILE SSI030.COM
$WRITE	FILE "$BEGIN:"
$WRITE	FILE "ON ERROR  THEN GOTO ERROR1"
$WRITE	FILE "GOTO". JOBSTEP
$WRITE	FILE "$!"
$WRITE	FILE "$! STEP SSI030 - CUSTOMER DATA BASE SELECT"
$WRITE	FILE "$!"
$WRITE	FILE "$SSI030:
$WRITE	FILE "$ FAILSTEP" := ""SSI030"""
$WRITE	FILE "$RUN SSI:SSI030.EXE"
$WRITE	FILE BUSDAT
$WRITE	FILE "$PRINT SSI030.R01"
$WRITE	FILE "$!"
$WRITE	FILE "$!  STEP SSI035 - SORT SELECTED DISTRICTS"
$WRITE	FILE "$!"
$WRITE 	FILE "$SSI040:
$WRITE	FILE "$ FAILSTEP := ""SSI040"""
$WRITE	FILE "$RUN SSI:SSI040.EXE"
$WRITE	FILE BUSDAT
$WRITE	FILE "$PRINT SSI040.R01"
$WRITE	FILE "$DELETE  SSI035.W01"
$WRITE	FILE "$EXIT:"
$WRITE	FILE "$  EXIT"
$WRITE	FILE "$ERROR1:"
$WRITE	FILE "$WRITE  SYS$OUTPUT ""*** SSI - SSI030 FAILED, JOB STEP = "", FAILSTEP, "" ***"""
$WRITE	FILE "$WRITE  SYS$OUTPUT ""RE-SUBMIT JOB STARTING AT STEP = "", FAILSTEP"
$WRITE	FILE "$GOTO EXIT"
$CLOSE FILE
$!
$!   INQUIRE & SETUP THE SUBMIT STATEMENT
$!
$INQTIME:
$INQUIRE  TIME "ENTER THE CPU RUN TIM (DEFAULT IS 00:10:00)"
$IF TIME .EQS. "" .OR. TIME .EQS. " " THEN GOTO TIMEDEFAULT
$GOTO INQAFTER
$TIMEDEFAULT: TIME := "00:10:00"
$INQAFTER:
$INQUIRE  AFTER  "ENTER THE DATE AND TIME THE JOB IS TO BE RUN AFTER (DEFAULT IS AFTER 17:00 TODAY)"
$IF AFTER .EQS. "" .OR. AFTER .EQS. " " THEN GOTO AFTERDEFAULT
$GOTO SUBMIT
$AFTERDEFAULT: AFTER := "17:00:00"
$SUBMIT:
$SUBMIT/KEEP NOTIFY/CPUTIME='TIME'/AFTER='AFTER  SSI:SSI030.COM
$EXIT
$EXIT
2.3  BATCH CONTROL DCL FILE
 
     This is the third level of control files and is the one which controls 
the actual batch processing.  It is always built by the second level file, 
i.e., it is not setup spearately and then only submitted by the second 
level file.  Figure !6-4 shows the command file setup by SSIC01.COM.
 
Figure A6-4: Sample of the Third Level Command File
Setup by SSIC01.COM
 
 
$BEGIN:
$ON ERROR  THEN GOTO ERROR1
$GOTO SSI010
$!
$!  STEP SSI010 - CUSTOMER DATA BASE SELECT
$!
$SSI010:
$  FAILSTEP := "SSI010"
$RUN SSI:SSI010.EXE
APRIL 1985
11
12
15
87
END
$PRINT SSI010.R01
$!
$!  STEP SSI015 - SORT SELECTED DISTRICTS
$!
$SSI015:
$  FAILSTEP := "SSI015"
$SORT/KEY=(POSITION:1,SIZE:3)/STATISTICS  -
$  SSI010.W01  SSI015.W01
$DELETE SSI010.W01
$!
$!  STEP SSI020 - SUPPLY SOURCE DETAIL & SUMMARY REPORT
$!
$SSI020:
$  FAILSTEP := "SSI020"
$RUN SSI:SSI020.EXE
APRIL 1983
$PRINT SSI020.R01
$DELETE  SSI015.W01
$EXIT:
$  EXIT
$ERROR1:
$WRITE SYS$OUTPUT "*** SSI - SSI010 FAILED, JOB STEP = ", FAILSTEP, "  ***"
$WRITE SYS$OUTPUT "RE-SUBMIT JOB STARTING AT STEP = ", FAILSTEP
$GOTO EXIT