Pianomahnn
02-07-2004, 07:53 PM
[code]
//Z070220A JOB ,'CHRIS TINNON'
/*JOBPARM ROOM=220,LINES=6
//*
//*********************************************************************
//* *
//* THE PURPOSE OF THIS JOB IS AN EXERCISE IN VSAM & IDCAMS, USING *
//* REGULAR AND ALTERNATE INDEXES TO ACCESS KSDS DATA SETS *
//* - CREATE A VSAM DATA SET *
//* - LOAD THE CONTENTS OF A FILE INTO THE VSAM DATA SET *
//* - PRINT THE VSAM DATA SET *
//* - DELETE THE VSAM DATA SET *
//* *
//*********************************************************************
//*
//JSTEP01 EXEC PGM=SYNCSORT,REGION=128K,PARM='CMP=CLC'
//*
//*********************************************************************
//* *
//* JSTEP01 PERFORMS A SYNCSORT ON THE DATA SET TO BE INSERTED INTO *
//* THE VSAM DATA SET. IT SORTS ASCENDING ON BYTES 1 - 29. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SORTIN INPUT: DATA SET TO BE SORTED *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSOUT OUTPUT: SYSTEM OUTPUT *
//* SORTOUT OUTPUT: THE RESULTING SORTED TEMPORARY DATA SET *
//* *
//*********************************************************************
//*
//SORTIN DD DSN=T90MBM1.CS466.SP04.MASTER3,UNIT=DISK,DISP=SHR
//SORTOUT DD DSN=&&TEMP1,UNIT=DISK,SPACE=(TRK,(3,3)),
// DCB=(LRECL=129,BLKSIZE=1290,DSORG=PS,RECFM=FB),
// DISP=(NEW,PASS,DELETE)
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(1,28,CH,A)
//*
//*********************************************************************
//* *
//* THE FOLLOWING DATA SET IS REQUIRED BY THE SYNCSORT UTILITY *
//* *
//*********************************************************************
//*
//SORTWK01 DD DSN=&&SORTWK01,UNIT=PUB,
// DISP=(NEW,DELETE,DELETE),SPACE=(TRK,(1,1))
//*
//JSTEP02 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP02 CREATES THE VSAM DATA SET. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER( /* DEFINE A CLUSTER */ -
NAME(Z070220.CS466.KSDS2.KSDS) /* CLUSTER NAME */ -
VOLUMES(ACA301) /* VOLUME LABEL */ -
INDEXED /* CLUSTER TYPE */ -
TRACK(1 1) /* SPACE ALLOCATION */ -
KEYS(28 0)) /* KEY INFORMATION */
//*
//JSTEP03 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP03 LOADS THE SORTED DATA SET INTO THE VSAM DATA SET. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* INPUTDD INPUT: SORTED DATA SET *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//INPUTDD DD DSN=&&TEMP1,UNIT=DISK,DISP=(OLD,PASS,DELETE)
//SYSIN DD *
REPRO /* COPY A DATA FILE */ -
INFILE(INPUTDD) /* INPUT DATA SET */ -
OUTDATASET(Z070220.CS466.KSDS2.KSDS) /* OUTPUT VSAM CLUSTER */
//*
//JSTEP04 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP04 DEFINES THE ALTERNATE INDEX FOR THE DATE LISTED *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE AIX ( -
NAME(Z070220.CS466.KSDS2.AIX1) -
RELATE(Z070220.CS466.KSDS2.KSDS) -
VOLUMES(ACA301) -
RECORDSIZE(41 41) -
KEYS(8 28) -
TRACKS(1 1))
/*
//*
//JSTEP05 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP05 DEFINES THE ALTERNATE INDEX FOR THE PRICE *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE AIX ( -
NAME(Z070220.CS466.KSDS2.AIX2) -
RELATE(Z070220.CS466.KSDS2.KSDS) -
VOLUMES(ACA301) -
RECORDSIZE(40 153) -
KEYS(7 51) -
TRACKS(1 1))
/*
//*
//JSTEP06 EXEC PGM=IDCAMS,COND=(0,GT),REGION=4096K
//*
//*********************************************************************
//* *
//* JSTEP06 BUILDS THE INDEX FOR THE FIRST ALTERNATE INDEX *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
BLDINDEX -
INDATASET(Z070220.CS466.KSDS2.KSDS) -
OUTDATASET(Z070220.CS466.KSDS2.AIX1)
/*
//*
//JSTEP07 EXEC PGM=IDCAMS,COND=(0,GT),REGION=4096K
//*
//*********************************************************************
//* *
//* JSTEP07 BUILDS THE INDEX FOR THE SECOND ALTERNATE INDEX *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
BLDINDEX -
INDATASET(Z070220.CS466.KSDS2.KSDS) -
OUTDATASET(Z070220.CS466.KSDS2.AIX2)
/*
//*
//JSTEP08 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP08 DEFINES THE PATH FOR THE FIRST ALTERNATE INDEX *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE PATH ( -
NAME(Z070220.CS466.KSDS2.PATH1) -
PATHENTRY(Z070220.CS466.KSDS2.AIX1))
/*
//JSTEP09 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP09 DEFINES THE PATH FOR THE SECOND ALTERNATE INDEX *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE PATH ( -
NAME(Z070220.CS466.KSDS2.PATH2) -
PATHENTRY(Z070220.CS466.KSDS2.AIX2))
/*
//*
//*
//JSTEP10 EXEC IGYWCG,PARM='LIB,FLAG(I,I),APOST,TEST(STMT),VBREF,MAP'
//*
//*********************************************************************
//* *
//* JSTEP10 COMPILES AND EXECUTES THE COBOL PROGRAM *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT : INSTREAM COMMANDS *
//* UPDATEFD INPUT : UPDATE RECORD FILE *
//* *
//* PRINTER OUTPUT: PRINT FILE FOR OUTPUT *
//* *
//* INKSDS INPUT : KSDS DATA SET *
//* OUTPUT: KSDS DATA SET *
//* *
//* INKSDS1 ALTERNATE INDEX 1 *
//* INKSDS2 ALTERNATE INDEX 2 *
//* *
//*********************************************************************
//*
//SYSIN DD *
***************************************************************
* PROGRAM NAME: ASSIGN3 *
* *
* AUTHOR: CHRIS TINNON *
* *
* FUNCTION: THIS PROGRAM IS AN EXERCISE IS VSAM USAGE. *
* THERE IS A MASTER FILE KSDS DATA SET WHICH IS *
* UPDATED FROM AN UPDATE FILE. THE RECORDS *
* ARE PROCESSED ACCORDINGLY AND AN INDEPTH *
* REPORT IS CREATED. *
* *
* INPUT: A MASTER FILE KSDS DATASET. EACH RECORD HAS *
* FIXED LENGTH RECORDS AND WILL BE ACCESSED *
* DYNAMICALLY. *
* *
* AN UPDATE FILE SEQUENTIAL FILE. EACH RECORD *
* IS FIXED LENGTH. EACH RECORD CAN HAVE ANY *
* NUMBER OF DIFFERENT FORMATS. *
* *
* OUTPUT: THE MASTER FILE KSDS DATASET. *
* *
* THE PRINT FILE WHICH WILL HAVE THE IN DEPTH *
* ANALYSIS OF TRANSACTIONS. *
* *
* NOTES: NONE. *
***************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. ASSIGN0.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PRINT-FILE ASSIGN TO PRINTER.
SELECT UPDATE-FILE ASSIGN TO UPDTFD.
SELECT MASTER-FILE ASSIGN TO INKSDS
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS OM-HOME-ID
ALTERNATE RECORD KEY IS OM-DATE-LISTED
ALTERNATE RECORD KEY IS OM-PRICE
FILE STATUS IS KSDS-STATUS.
EJECT
DATA DIVISION.
FILE SECTION.
***************************************************************
* MASTFD IS A KSDS DATA SET. THE RECORDS ARE OF A FIXED SIZE *
***************************************************************
FD MASTER-FILE
RECORD CONTAINS 129 CHARACTERS.
01 OM-RECORD.
05 OM-HOME-ID.
10 OM-CITY PIC X(10).
10 OM-STATE PIC XX.
10 OM-STREET-NAME PIC X(10).
10 OM-STREET-NUM PIC X(5).
10 OM-DIRECTION PIC X.
05 OM-DATE-LISTED.
10 OM-YEAR PIC 9(4).
10 OM-MONTH PIC 99.
10 OM-DAY PIC 99.
05 OM-STYLE PIC X(11).
05 OM-SQUARE-FEET PIC 9(4).
05 OM-PRICE PIC X(7).
05 OM-BASEMENT-CODE PIC X.
05 OM-NUM-BEDROOMS PIC 9.
05 OM-NUM-BATHROOMS PIC 9V99.
05 OM-GARAGE-TYPE PIC X.
05 OM-GARAGE-SIZE PIC 9V9.
05 OM-ROOM-INFO OCCURS 9 TIMES.
10 OM-ROOM-CODE PIC X.
05 OM-KITCHEN-SIZE.
10 OM-KLENGTH-FT PIC 99.
10 OM-KLENGTH-IN PIC 99.
10 OM-KWIDTH-FT PIC 99.
10 OM-KWIDTH-IN PIC 99.
05 OM-LOT-CODE PIC X.
05 OM-AMENITY-INFO OCCURS 3 TIMES.
10 OM-AMENITY PIC X(15).
***************************************************************
* PRINT-FILE IS A SYSTEM PRINT FILE FOR OUTPUT. *
***************************************************************
FD PRINT-FILE
LABEL RECORDS ARE OMITTED
RECORDING MODE IS F.
01 PRINT-LINE PIC X(132).
***************************************************************
* UPDATE FILE IS THE SEQUENTIAL DATA FILE USED TO UPDATE THE *
* KSDS DATASET. EACH RECORD IS OF A FIXED LENGTH, BUT CAN *
* HAVE UP TO 15 DIFFERENT FORMATS (REDEFINED BELOW). EACH *
* RECORD CONTAINS THE KEY (HOME ID) TO ENABLE EASY ACCESS TO *
* THE KSDS RECORDS. *
***************************************************************
FD UPDATE-FILE
RECORDING MODE IS F.
01 UPDATE-RECORD.
05 UPDATE-HOME-ID.
10 UPDATE-CITY PIC X(10).
10 UPDATE-STATE PIC XX.
10 UPDATE-STREET-NAME PIC X(10).
10 UPDATE-STREET-NUM PIC X(5).
10 UPDATE-DIRECTION PIC X.
05 UPDATE-TRAN-CODE PIC 9.
05 U-ADD-TRANSACTION.
10 U-ADD-DATE-LISTED.
15 U-ADD-YEAR PIC 9(4).
15 U-ADD-MONTH PIC 99.
15 U-ADD-DAY PIC 99.
10 U-ADD-STYLE PIC X(11).
10 U-ADD-SQUARE-FEET PIC 9(4).
10 U-ADD-PRICE PIC 9(7).
10 U-ADD-BASEMENT-CODE PIC X.
10 U-ADD-NUM-BEDROOMS PIC 9.
10 U-ADD-NUM-BATHROOMS PIC 9V99.
10 U-ADD-GARAGE-TYPE PIC X.
10 U-ADD-GARAGE-SIZE PIC 9V9.
10 U-ADD-ROOM-INFO OCCURS 9 TIMES.
15 U-ADD-ROOM-CODE PIC X.
10 U-ADD-KITCHEN-SIZE.
15 U-ADD-KLENGTH-FT PIC 99.
15 U-ADD-KLENGTH-IN PIC 99.
15 U-ADD-KWIDTH-FT PIC 99.
15 U-ADD-KWIDTH-IN PIC 99.
10 U-ADD-LOT-CODE PIC X.
10 U-ADD-AMENITY-INFO OCCURS 3 TIMES.
15 U-ADD-AMENITY PIC X(15).
05 U-ALTER-TRANSACTION REDEFINES
U-ADD-TRANSACTION.
10 U-ALTER-TYPE PIC XX.
10 U-ALTER-DATE-LISTED.
15 U-ALTER-DATE-LISTED-NEW.
20 U-ALTER-YEAR PIC 9(4).
20 U-ALTER-MONTH PIC 99.
20 U-ALTER-DAY PIC 99.
15 PIC X(91).
10 U-ALTER-STYLE REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-NEW-STYLE PIC X(11).
15 PIC X(88).
10 U-ALTER-SQUARE-FEET REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-SQUARE-FEET-NEW PIC 9(4).
15 PIC X(95).
10 U-ALTER-PRICE REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-PRICE-NEW-PRICE PIC 9(7).
15 PIC X(92).
10 U-ALTER-BASEMENT-CODE REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-BASEMENT-CODE-NEW PIC X.
15 PIC X(98).
10 U-ALTER-NUM-BEDROOMS REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-NUM-BEDROOMS-NEW PIC 9.
15 PIC X(98).
10 U-ALTER-NUM-BATHROOMS REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-NUM-BATHROOMS-NEW PIC 9V99.
15 PIC X(96).
10 U-ALTER-GARAGE-DATA REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-GARAGE-DATA-TYPE PIC X.
15 U-ALTER-GARAGE-DATA-SIZE PIC 9V9.
15 PIC X(96).
10 U-ALTER-ROOM-DATA REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-ROOM-DATA-ROOM PIC 9.
15 U-ALTER-ROOM-DATA-CODE PIC X.
15 PIC X(97).
10 U-ALTER-KITCHEN-SIZE REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-KITCHEN-SIZE-DIM.
20 U-ALTER-KLENGTH-FT PIC 99.
20 U-ALTER-KLENGTH-IN PIC 99.
20 U-ALTER-KWIDTH-FT PIC 99.
20 U-ALTER-KWIDTH-IN PIC 99.
15 PIC X(91).
10 U-ALTER-LOT-SIZE-CODE REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-LOT-SIZE-NEW-CODE PIC X.
15 PIC X(98).
05 DELETE-TRANSACTION REDEFINES
U-ADD-TRANSACTION.
10 PIC X(101).
05 ALT-DATE REDEFINES U-ADD-TRANSACTION.
10 ALT-DATE-KEY PIC X(8).
10 PIC X(93).
05 ALT-PRICE REDEFINES U-ADD-TRANSACTION.
10 ALT-PRICE-KEY PIC X(7).
10 PIC X(94).
EJECT
WORKING-STORAGE SECTION.
***************************************************************
* FIELD DESCRIPTION *
* ----------------------------------------------------------- *
* CURRENT-SYSTEM-DATE HOLDS THE VALID CURRENT DATE *
* *
* FLAGS *
* -> UPDATE-EOF-FLAG FLAG FOR END OF FILE *
* -> KSDS-STATUS STATUS CODE FOR VSAM *
* -> KSDS-ERROR 'Y' OR 'N' FOR VSAM ERROR *
* -> ALT-DONE-FLAG 'Y' OR 'N' FOR AIX READS *
* *
* COUNTERS *
* -> PAGE-COUNT NUMBER OF PRINTED PAGES *
* -> PRINTED-TRANS-COUNT NUMBER OF TRANSACTIONS PRINTED *
* -> SUCCESS-ADDS TOTAL SUCCESSFUL ADDS *
* -> SUCCESS-ALTERS TOTAL SUCCESSFUL ALTERS *
* -> SUCCESS-DELETES TOTAL SUCCESSFUL DELETES *
* -> TRANS-ERRORS TOTAL TRANSACTION ERRORS *
* -> SUBSCRIPT DUMMY SUBSCRIPT FOR TABLES *
* -> ROOM-TOTAL TOTAL NUMBER OF BEDROOMS *
* *
* ERROR-PRINT-LINE IN CASE MASTER-FILE IS BROKEN *
* *
* PRINT-RECORD A WHOLE BUNCH OF PRINT LINES FOR *
* THE TRANSACTION REPORT *
* *
* PRINT-RECORD-ERROR PRINT LINE FOR ERROR TRANSACTIONS *
* *
* NEW-OM-RECORD TEMP STORAGE FOR THE TRANSACTIONS *
* TO BE ADDED TO THE KSDS DATASET *
* *
***************************************************************
01 CURRENT-SYSTEM-DATE.
05 THE-CURRENT-SYSTEM-DATE.
10 CURRENT-YEAR PIC 9(4).
10 CURRENT-MONTH PIC 9(2).
10 CURRENT-DAY PIC 9(2).
01 FLAGS.
05 UPDATE-EOF-FLAG PIC X VALUE 'N'.
05 KSDS-STATUS PIC XX.
05 KSDS-ERROR PIC X VALUE 'N'.
05 ALT-DONE-FLAG PIC X VALUE 'N'.
01 COUNTERS.
05 PAGE-COUNT PIC 99 VALUE 1.
05 PRINTED-TRANS-COUNT PIC 99 VALUE 10.
05 SUCCESS-ADDS PIC 99 VALUE 0.
05 SUCCESS-ALTERS PIC 99 VALUE 0.
05 SUCCESS-DELETES PIC 99 VALUE 0.
05 TRANS-ERRORS PIC 99 VALUE 0.
05 SUBSCRIPT PIC 99.
05 ROOM-TOTAL PIC 9 VALUE 0.
01 ERROR-PRINT-LINE.
05 PIC X(27) VALUE 'ERROR OPENING MASTER FILE: '.
05 PRINT-ERROR-CODE PIC XX.
01 PRINT-RECORD.
05 PRINT-HEADER-LINE-ONE.
10 PRINT-MONTH PIC X(2).
10 PIC X VALUE '/'.
10 PRINT-DAY PIC X(2).
10 PIC X VALUE '/'.
10 PRINT-YEAR PIC X(4).
10 PIC X(36) VALUE SPACES.
10 PIC X(27) VALUE 'HOME AND HEARTH REALTY, INC'.
05 PRINT-HEADER-LINE-TWO.
10 PIC X(47) VALUE SPACES.
10 PIC X(25) VALUE 'MASTER FILE UPDATE REPORT'.
10 PIC X(43) VALUE SPACES.
10 PIC X(5) VALUE 'PAGE '.
10 PRINT-PAGE-COUNT PIC Z9.
05 PRINT-HEADER-LINE-THREE.
10 PRINT-HEADER-1 PIC X(40)
VALUE 'TRANSACTION ADDRESS(HOME ID) '.
10 PRINT-HEADER-2 PIC X(41)
VALUE 'PRICE LISTED STYLE SQ.FEET '.
10 PRINT-HEADER-3 PIC X(33)
VALUE ' GARAGE LOT BATHS KITCHEN'.
05 PRINT-HEADER-LINE-FOUR PIC X(122) VALUE ALL '-'.
05 PRINT-RECORD-DATA.
10 PRINT-RECORD-DATA-LINE-1.
15 PIC X(4) VALUE SPACES.
15 PRINT-TRANS-TYPE PIC X(5).
15 PIC X(4) VALUE SPACES.
15 PRINT-ADDRESS.
20 PRINT-ADDRESS-NUM PIC X(5).
20 PIC X VALUE SPACE.
20 PRINT-ADDRESS-DIRECTION PIC X.
20 PIC X VALUE SPACE.
20 PRINT-ADDRESS-STREET PIC X(10).
15 PIC X(4) VALUE SPACES.
15 PRINT-PRICE PIC $$,$$$,$$$.
15 PIC X(3) VALUE SPACES.
15 PRINT-DATE.
20 PRINT-DATE-MONTH PIC 99.
20 PIC X VALUE '/'.
20 PRINT-DATE-DAY PIC 99.
20 PIC X VALUE '/'.
20 PRINT-DATE-YEAR PIC 9999.
15 PIC X(3) VALUE SPACES.
15 PRINT-STYLE PIC X(11).
15 PIC X(4) VALUE SPACES.
15 PRINT-SQ-FEET PIC ZZZZ.
15 PIC X(3).
15 PRINT-GARAGE-TYPE PIC X(8).
15 PIC X(3) VALUE SPACES.
15 PRINT-LOT PIC X.
15 PIC X(4) VALUE SPACES.
15 PRINT-BATHS PIC 9.99.
15 PIC X(4) VALUE SPACES.
15 PRINT-KITCHEN.
20 PRINT-KITCHEN-L-FT PIC Z9.
20 PIC X VALUE ''''.
20 PRINT-KITCHEN-L-IN PIC 99.
20 PIC X VALUE '"'.
20 PIC X(3) VALUE ' x '.
20 PRINT-KITCHEN-W-FT PIC Z9.
20 PIC X VALUE ''''.
20 PRINT-KITCHEN-W-IN PIC 99.
20 PIC X VALUE '"'.
10 PRINT-RECORD-DATA-LINE-2.
15 PIC X(13) VALUE SPACES.
15 PRINT-CITY PIC X(10).
15 PIC X(2) VALUE ', '.
15 PRINT-STATE PIC XX.
15 PIC X(56) VALUE SPACES.
15 PIC X(7) VALUE 'SIZE: '.
15 PRINT-GARAGE-SIZE PIC 9.9.
10 PRINT-RECORD-DATA-LINE-3.
15 PIC X(13) VALUE SPACES.
15 PIC X(30) VALUE 'ROOMS: LR FR KIT DR BR1 '.
15 PIC X(22) VALUE 'BR2 BR3 BR4 BR5 '.
15 PIC X(16) VALUE 'TOTAL BEDROOMS: '.
15 PRINT-TOTAL-BEDS PIC X.
10 PRINT-RECORD-DATA-LINE-4.
15 PIC X(22) VALUE SPACES.
15 PRINT-LR PIC X VALUE 'Y'.
15 PIC XXX VALUE SPACES.
15 PRINT-FR PIC X VALUE 'Y'.
15 PIC XXX VALUE SPACES.
15 PRINT-KIT PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-DR PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-BR1 PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-BR2 PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-BR3 PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-BR4 PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-BR5 PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PIC X(10) VALUE 'BASEMENT: '.
15 PRINT-BASEMENT PIC X(20).
10 PRINT-RECORD-DATA-LINE-5.
15 PIC X(13) VALUE SPACES.
15 PIC X(11) VALUE 'AMENITIES: '.
15 PRINT-AM1 PIC X(15).
15 PIC X(3) VALUE SPACES.
15 PRINT-AM2 PIC X(15).
15 PIC X(3) VALUE SPACES.
15 PRINT-AM3 PIC X(15).
05 PRINT-RECORD-ERROR.
10 PIC X(4) VALUE SPACES.
10 PRINT-E-TRANS-TYPE PIC X(5).
10 PIC X(4) VALUE SPACES.
10 PRINT-E-ADDRESS.
15 PRINT-E-ADDRESS-NUM PIC X(5).
15 PIC X VALUE SPACE.
15 PRINT-E-ADDRESS-DIRECTION PIC X.
15 PIC X VALUE SPACE.
15 PRINT-E-ADDRESS-STREET PIC X(10).
10 PIC X(5) VALUE SPACES.
10 PRINT-ERROR PIC X(40).
05 PRINT-TOTALS.
10 PRINT-TOTALS-LINE-1.
15 PIC X(20) VALUE 'SUCCESSFUL ADDS: '.
15 PRINT-ADDS PIC Z9.
10 PRINT-TOTALS-LINE-2.
15 PIC X(20) VALUE 'SUCCESSFUL ALTERS: '.
15 PRINT-ALTERS PIC Z9.
10 PRINT-TOTALS-LINE-3.
15 PIC X(20) VALUE 'SUCCESSFUL DELETES: '.
15 PRINT-DELETES PIC Z9.
10 PRINT-TOTALS-LINE-4.
15 PIC X(20) VALUE 'TRANSACTION ERRORS: '.
15 PRINT-ERRORS PIC Z9.
01 NEW-OM-RECORD.
05 NEW-OM-HOME-ID.
10 NEW-OM-CITY PIC X(10).
10 NEW-OM-STATE PIC XX.
10 NEW-OM-STREET-NAME PIC X(10).
10 NEW-OM-STREET-NUM PIC X(5).
10 NEW-OM-DIRECTION PIC X.
05 NEW-OM-INFO.
10 NEW-OM-DATE-LISTED.
15 NEW-OM-YEAR PIC 9(4).
15 NEW-OM-MONTH PIC 99.
15 NEW-OM-DAY PIC 99.
10 NEW-OM-STYLE PIC X(11).
10 NEW-OM-SQUARE-FEET PIC 9(4).
10 NEW-OM-PRICE PIC 9(7).
10 NEW-OM-BASEMENT-CODE PIC X.
10 NEW-OM-NUM-BEDROOMS PIC 9.
10 NEW-OM-NUM-BATHROOMS PIC 9V99.
10 NEW-OM-GARAGE-TYPE PIC X.
10 NEW-OM-GARAGE-SIZE PIC 9V9.
10 NEW-OM-ROOM-INFO OCCURS 9 TIMES.
15 NEW-OM-ROOM-CODE PIC X.
10 NEW-OM-KITCHEN-SIZE.
15 NEW-OM-KLENGTH-FT PIC 99.
15 NEW-OM-KLENGTH-IN PIC 99.
15 NEW-OM-KWIDTH-FT PIC 99.
15 NEW-OM-KWIDTH-IN PIC 99.
10 NEW-OM-LOT-CODE PIC X.
10 NEW-OM-AMENITY-INFO OCCURS 3 TIMES.
15 NEW-OM-AMENITY PIC X(15).
EJECT
PROCEDURE DIVISION.
***************************************************************
* 000-MAIN *
* *
* THIS CONTROLS THE FLOW OF THE PROGRAM. IT OPENS THE FILES *
* AND THEN CALLS 10O-PROCESS-FILE IF OPENS ARE SUCCESSFUL. *
* AT THE END OF PROCESSING IT PRINTS THE TRANSACTION TOTALS. *
* *
* ---> VERY SIMPLE PSEUDOCODE <--- *
* *
* OPEN FILES *
* PROCESS FILES UNTIL END OF FILE *
* PERFORM ADD *
* PERFORM ALTER *
* PERFORM DELETE *
* PRINT TRANSACTION DATA *
* *
***************************************************************
000-MAIN.
OPEN OUTPUT PRINT-FILE.
OPEN INPUT UPDATE-FILE.
OPEN I-O MASTER-FILE.
IF KSDS-STATUS = 00
MOVE FUNCTION CURRENT-DATE TO CURRENT-SYSTEM-DATE
MOVE CURRENT-YEAR TO PRINT-YEAR
MOVE CURRENT-DAY TO PRINT-DAY
MOVE CURRENT-MONTH TO PRINT-MONTH
PERFORM 100-PROCESS-FILE
ELSE
MOVE KSDS-STATUS TO PRINT-ERROR-CODE
WRITE PRINT-LINE FROM ERROR-PRINT-LINE
END-IF.
CLOSE PRINT-FILE
UPDATE-FILE
MASTER-FILE.
STOP RUN.
EJECT
***************************************************************
* 100-PROCESS-FILE *
* *
* THIS ROUTINE READS A RECORD FROM THE UPDATE-FILE AND CALLS *
* 1 OF 3 SUB ROUTINES TO PERFORM SOME ACTIONS WITH THE UPDATE *
* RECORD. IT THEN CALLS THE 160-PRINT-TRANS SUBROUTINE TO *
* PRINT THE DETAILED TRANSACTION REPORT. *
* *
***************************************************************
100-PROCESS-FILE.
READ UPDATE-FILE AT END MOVE 'Y' TO UPDATE-EOF-FLAG.
PERFORM UNTIL UPDATE-EOF-FLAG = 'Y'
IF UPDATE-TRAN-CODE = 1
PERFORM 110-ADD-TRANS
PERFORM 160-PRINT-TRANS
END-IF
IF UPDATE-TRAN-CODE = 2
PERFORM 120-ALTER-TRANS
PERFORM 160-PRINT-TRANS
END-IF
IF UPDATE-TRAN-CODE = 3
PERFORM 130-DELETE-TRANS
PERFORM 160-PRINT-TRANS
END-IF
IF UPDATE-TRAN-CODE = 4
PERFORM 140-GET-DATE
END-IF
IF UPDATE-TRAN-CODE = 5
PERFORM 150-GET-PRICE
END-IF
MOVE 'N' TO KSDS-ERROR
MOVE '00' TO KSDS-STATUS
READ UPDATE-FILE AT END MOVE 'Y' TO UPDATE-EOF-FLAG
END-READ
END-PERFORM.
MOVE SUCCESS-ADDS TO PRINT-ADDS.
MOVE SUCCESS-ALTERS TO PRINT-ALTERS.
MOVE SUCCESS-DELETES TO PRINT-DELETES.
MOVE TRANS-ERRORS TO PRINT-ERRORS.
WRITE PRINT-LINE FROM PRINT-TOTALS-LINE-1 AFTER 2.
WRITE PRINT-LINE FROM PRINT-TOTALS-LINE-2.
WRITE PRINT-LINE FROM PRINT-TOTALS-LINE-3.
WRITE PRINT-LINE FROM PRINT-TOTALS-LINE-4.
EJECT
***************************************************************
* 110-ADD-TRANS *
* *
* THIS ROUTINE SIMPLY ADDS THE UPDATE RECORD TO THE KSDS. *
* *
***************************************************************
110-ADD-TRANS.
MOVE UPDATE-HOME-ID TO OM-HOME-ID.
MOVE UPDATE-HOME-ID TO NEW-OM-HOME-ID.
MOVE U-ADD-TRANSACTION TO NEW-OM-INFO.
WRITE OM-RECORD FROM NEW-OM-RECORD.
IF KSDS-STATUS = '00'
MOVE 'ADD' TO PRINT-TRANS-TYPE
ADD 1 TO SUCCESS-ADDS
MOVE UPDATE-HOME-ID TO OM-HOME-ID
READ MASTER-FILE
ELSE
MOVE 'ADD' TO PRINT-E-TRANS-TYPE
MOVE '*** CANNOT ADD, KEY ALREADY EXISTS ***' TO
PRINT-ERROR
ADD 1 TO TRANS-ERRORS
MOVE 'Y' TO KSDS-ERROR
END-IF.
EJECT
***************************************************************
* 120-ALTER-TRANS. *
* *
* THIS ROUTINE ALTERS A KSDS RECORD. IT HAS A LARGE IF-ELSE *
* STRUCTURE TO DECIDE WHERE TO PLACE THE DATA FROM THE UPDATE *
* FILE INTO THE KSDS. *
* *
***************************************************************
120-ALTER-TRANS.
MOVE 'ALT' TO PRINT-TRANS-TYPE.
MOVE UPDATE-HOME-ID TO OM-HOME-ID.
READ MASTER-FILE RECORD.
IF U-ALTER-TYPE = '01'
MOVE U-ALTER-DATE-LISTED TO
OM-DATE-LISTED
ELSE IF U-ALTER-TYPE = '02'
MOVE U-ALTER-NEW-STYLE TO OM-STYLE
ELSE IF U-ALTER-TYPE = '03'
MOVE U-ALTER-SQUARE-FEET-NEW TO
OM-SQUARE-FEET
ELSE IF U-ALTER-TYPE = '04'
MOVE U-ALTER-PRICE-NEW-PRICE TO
OM-PRICE
ELSE IF U-ALTER-TYPE = '05'
MOVE U-ALTER-BASEMENT-CODE-NEW TO
OM-BASEMENT-CODE
ELSE IF U-ALTER-TYPE = '06'
MOVE U-ALTER-NUM-BEDROOMS-NEW TO
OM-NUM-BEDROOMS
ELSE IF U-ALTER-TYPE = '07'
MOVE U-ALTER-NUM-BATHROOMS-NEW TO
OM-NUM-BATHROOMS
ELSE IF U-ALTER-TYPE = '08'
MOVE U-ALTER-GARAGE-DATA-TYPE TO
OM-GARAGE-TYPE
MOVE U-ALTER-GARAGE-DATA-SIZE TO
OM-GARAGE-SIZE
ELSE IF U-ALTER-TYPE = '09'
MOVE U-ALTER-ROOM-DATA-CODE TO
OM-ROOM-INFO(U-ALTER-ROOM-DATA-ROOM)
ELSE IF U-ALTER-TYPE = '10'
MOVE U-ALTER-KITCHEN-SIZE-DIM TO
OM-KITCHEN-SIZE
ELSE IF U-ALTER-TYPE = '11'
MOVE U-ALTER-LOT-SIZE-NEW-CODE TO
OM-LOT-CODE
END-IF.
MOVE UPDATE-HOME-ID TO OM-HOME-ID.
REWRITE OM-RECORD.
IF KSDS-STATUS = '00'
ADD 1 TO SUCCESS-ALTERS
ELSE
MOVE 'ALT' TO PRINT-E-TRANS-TYPE
MOVE '*** NO RECORD FOUND TO ALTER **' TO PRINT-ERROR
ADD 1 TO TRANS-ERRORS
MOVE 'Y' TO KSDS-ERROR
END-IF.
EJECT
***************************************************************
* 130-DELETE-TRANS *
* *
* THIS ROUTINE SIMPLY DELETES A KSDS RECORD. *
* *
***************************************************************
130-DELETE-TRANS.
MOVE UPDATE-HOME-ID TO OM-HOME-ID.
READ MASTER-FILE.
IF KSDS-STATUS NOT = '00'
MOVE 'DEL' TO PRINT-E-TRANS-TYPE
MOVE '*** NO RECORD FOUND TO DELETE ***' TO
PRINT-ERROR
ADD 1 TO TRANS-ERRORS
MOVE 'Y' TO KSDS-ERROR
ELSE
DELETE MASTER-FILE RECORD
MOVE 'DEL' TO PRINT-TRANS-TYPE
ADD 1 TO SUCCESS-DELETES
END-IF.
EJECT
***************************************************************
* 140-GET-DATE *
* *
* THIS ROUTINE SEARCHES THE KSDS FOR THE DATE-LISTED IN THE *
* TRANSACTION FILE RECORD. *
* *
***************************************************************
140-GET-DATE.
MOVE ALT-DATE-KEY TO OM-DATE-LISTED.
READ MASTER-FILE RECORD KEY IS OM-DATE-LISTED.
IF KSDS-STATUS = '23'
MOVE 'DATE' TO PRINT-E-TRANS-TYPE
MOVE '*** NO RECORD FOUND ***' TO PRINT-ERROR
MOVE 'Y' TO KSDS-ERROR
ADD 1 TO TRANS-ERRORS
PERFORM 160-PRINT-TRANS
ELSE
IF KSDS-STATUS = '00' OR KSDS-STATUS = '02'
MOVE 'N' TO ALT-DONE-FLAG
PERFORM UNTIL ALT-DONE-FLAG = 'Y'
IF KSDS-STATUS = '00'
MOVE 'Y' TO ALT-DONE-FLAG
PERFORM 160-PRINT-TRANS
END-IF
MOVE 'DATE' TO PRINT-TRANS-TYPE
IF KSDS-STATUS = '02'
PERFORM 160-PRINT-TRANS
READ MASTER-FILE RECORD
KEY IS OM-DATE-LISTED
END-READ
END-IF
END-PERFORM
ELSE
MOVE '*** UNSUCCESSFUL READ ***' TO PRINT-ERROR
PERFORM 160-PRINT-TRANS
END-IF
END-IF.
MOVE 'N' TO ALT-DONE-FLAG.
EJECT
***************************************************************
* 150-GET-PRICE *
* *
* THIS ROUTINE SEARCHES THE KSDS FOR THE PRICE IN THE *
* TRANSACTION FILE RECORD. *
* *
***************************************************************
150-GET-PRICE.
MOVE ALT-PRICE-KEY TO OM-PRICE.
READ MASTER-FILE RECORD KEY IS OM-PRICE.
IF KSDS-STATUS = '23'
MOVE 'PRICE' TO PRINT-E-TRANS-TYPE
MOVE '*** NO RECORD FOUND ***' TO PRINT-ERROR
MOVE 'Y' TO KSDS-ERROR
ADD 1 TO TRANS-ERRORS
PERFORM 160-PRINT-TRANS
ELSE
IF KSDS-STATUS = '00' OR KSDS-STATUS = '02'
MOVE 'N' TO ALT-DONE-FLAG
PERFORM UNTIL ALT-DONE-FLAG = 'Y'
IF KSDS-STATUS = '00'
MOVE 'Y' TO ALT-DONE-FLAG
PERFORM 160-PRINT-TRANS
END-IF
MOVE 'PRICE' TO PRINT-TRANS-TYPE
IF KSDS-STATUS = '02'
PERFORM 160-PRINT-TRANS
READ MASTER-FILE NEXT RECORD
END-READ
END-IF
END-PERFORM
ELSE
MOVE '*** UNSUCCESSFUL READ ***' TO PRINT-ERROR
PERFORM 160-PRINT-TRANS
END-IF
END-IF.
MOVE 'N' TO ALT-DONE-FLAG.
EJECT
***************************************************************
* 160-PRINT-TRANS *
* *
* THIS ROUTINE PRINTS A DETAILED TRANSACTION REPORT. THIS *
* MOVES A WHOLE BUNCH OF DATA AROUND FROM THE KSDS RECORD *
* INTO THE POSSIBLE PRINT LINES FOR PRINTING. IT ALSO HAS TO *
* PERFORM SOME SELECTIONS BASED ON DATA IN THE KSDS IN ORDER *
* TO SEND THE CORRECT INFORMATION TO THE PRINT LINES. *
* *
***************************************************************
160-PRINT-TRANS.
IF PRINTED-TRANS-COUNT = 10
MOVE PAGE-COUNT TO PRINT-PAGE-COUNT
WRITE PRINT-LINE FROM PRINT-HEADER-LINE-ONE
AFTER PAGE
WRITE PRINT-LINE FROM PRINT-HEADER-LINE-TWO
WRITE PRINT-LINE FROM PRINT-HEADER-LINE-THREE
WRITE PRINT-LINE FROM PRINT-HEADER-LINE-FOUR
MOVE 0 TO PRINTED-TRANS-COUNT
ADD 1 TO PAGE-COUNT
END-IF.
IF KSDS-ERROR = 'N'
MOVE OM-STREET-NAME TO PRINT-ADDRESS-STREET
MOVE OM-STREET-NUM TO PRINT-ADDRESS-NUM
MOVE OM-DIRECTION TO PRINT-ADDRESS-DIRECTION
MOVE OM-PRICE TO PRINT-PRICE
MOVE OM-YEAR TO PRINT-DATE-YEAR
MOVE OM-DAY TO PRINT-DATE-DAY
MOVE OM-MONTH TO PRINT-DATE-MONTH
MOVE OM-STYLE TO PRINT-STYLE
MOVE OM-SQUARE-FEET TO PRINT-SQ-FEET
IF OM-GARAGE-TYPE = 'N'
MOVE 'NONE' TO PRINT-GARAGE-TYPE
END-IF
IF OM-GARAGE-TYPE = 'A'
MOVE 'ATTACHED' TO PRINT-GARAGE-TYPE
END-IF
IF OM-GARAGE-TYPE = 'S'
MOVE 'SEPARATE' TO PRINT-GARAGE-TYPE
END-IF
MOVE OM-LOT-CODE TO PRINT-LOT
MOVE OM-NUM-BATHROOMS TO PRINT-BATHS
MOVE OM-KLENGTH-FT TO PRINT-KITCHEN-L-FT
MOVE OM-KLENGTH-IN TO PRINT-KITCHEN-L-IN
MOVE OM-KWIDTH-FT TO PRINT-KITCHEN-W-FT
MOVE OM-KWIDTH-IN TO PRINT-KITCHEN-W-IN
MOVE OM-CITY TO PRINT-CITY
MOVE OM-STATE TO PRINT-STATE
MOVE OM-GARAGE-SIZE TO PRINT-GARAGE-SIZE
MOVE OM-ROOM-INFO(1) TO PRINT-LR
MOVE OM-ROOM-INFO(2) TO PRINT-FR
MOVE OM-ROOM-INFO(3) TO PRINT-KIT
MOVE OM-ROOM-INFO(4) TO PRINT-DR
MOVE OM-ROOM-INFO(5) TO PRINT-BR1
MOVE OM-ROOM-INFO(6) TO PRINT-BR2
MOVE OM-ROOM-INFO(7) TO PRINT-BR3
MOVE OM-ROOM-INFO(8) TO PRINT-BR4
MOVE OM-ROOM-INFO(9) TO PRINT-BR5
PERFORM VARYING SUBSCRIPT FROM 5 BY 1 UNTIL
SUBSCRIPT > 9
IF OM-ROOM-INFO(SUBSCRIPT) = 'Y'
ADD 1 TO ROOM-TOTAL
END-IF
END-PERFORM
MOVE ROOM-TOTAL TO PRINT-TOTAL-BEDS
COMPUTE ROOM-TOTAL = 0
IF OM-BASEMENT-CODE = 'N'
MOVE 'NONE' TO PRINT-BASEMENT
END-IF
IF OM-BASEMENT-CODE = 'F'
MOVE 'FINISHED' TO PRINT-BASEMENT
END-IF
IF OM-BASEMENT-CODE = 'P'
MOVE 'PARTIAL FINISH' TO PRINT-BASEMENT
END-IF
IF OM-BASEMENT-CODE = 'U'
MOVE 'UNFINISHED' TO PRINT-BASEMENT
END-IF
MOVE OM-AMENITY-INFO(1) TO PRINT-AM1
MOVE OM-AMENITY-INFO(2) TO PRINT-AM2
MOVE OM-AMENITY-INFO(3) TO PRINT-AM3
WRITE PRINT-LINE FROM PRINT-RECORD-DATA-LINE-1 AFTER 2
WRITE PRINT-LINE FROM PRINT-RECORD-DATA-LINE-2
WRITE PRINT-LINE FROM PRINT-RECORD-DATA-LINE-3
WRITE PRINT-LINE FROM PRINT-RECORD-DATA-LINE-4
WRITE PRINT-LINE FROM PRINT-RECORD-DATA-LINE-5
ELSE
MOVE UPDATE-STREET-NAME TO PRINT-E-ADDRESS-STREET
MOVE UPDATE-STREET-NUM TO PRINT-E-ADDRESS-NUM
MOVE UPDATE-DIRECTION TO PRINT-E-ADDRESS-DIRECTION
WRITE PRINT-LINE FROM PRINT-RECORD-ERROR AFTER 2
END-IF.
ADD 1 TO PRINTED-TRANS-COUNT.
/*
//GO.UPDTFD DD DSN=T90MBM1.CS466.SP04.TRAN3,UNIT=DISK,DISP=SHR
//GO.PRINTER DD SYSOUT=*
//INKSDS DD DSN=Z070220.CS466.KSDS2.KSDS,UNIT=DISK,DISP=SHR
//INKSDS1 DD DSN=Z070220.CS466.KSDS2.PATH1,UNIT=DISK,DISP=SHR
//INKSDS2 DD DSN=Z070220.CS466.KSDS2.PATH2,UNIT=DISK,DISP=SHR
//*
//JSTEP11 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP11 PRINTS THE VSAM DATA SET. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* PRINT THE VSAM CLUSTER */
PRINT INDATASET(Z070220.CS466.KSDS2.KSDS)CHARACTER
/*
//*
//JSTEP12 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*
//*********************************************************************
//* *
//* JSTEP12 PRINTS THE FIRST ALTERNATE INDEX. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* PRINT ALTERNATE INDEX 1 (DATE LISTED) */
PRINT INDATASET(Z070220.CS466.KSDS2.AIX1)CHARACTER
/*
//*
//JSTEP13 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*
//*********************************************************************
//* *
//* JSTEP13 PRINTS THE SECOND ALTERNATE INDEX. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* PRINT ALTERNATE INDEX 2 (PRICE) */
PRINT INDATASET(Z070220.CS466.KSDS2.AIX2)CHARACTER
/*
//*
//JSTEP14 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*
//*********************************************************************
//* *
//* JSTEP14 PRINTS THE FIRST PATH. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* PRINT PATH 1 (DATE LISTED) */
PRINT INDATASET(Z070220.CS466.KSDS2.PATH1)CHARACTER
/*
//*
//JSTEP15 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*
//*********************************************************************
//* *
//* JSTEP15 PRINTS THE SECOND PATH. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* PRINT PATH 2 (PRICE) */
PRINT INDATASET(Z070220.CS466.KSDS2.PATH2)CHARACTER
/*
//JSTEP16 EXEC PGM=IDCAMS,COND=EVEN
//*
//*********************************************************************
//* *
//* JSTEP16 DELETES THE VSAM DATA SET *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* DELETE THE VSAM CLUSTER */
DELETE (Z070220.CS466.KSDS2.KSDS)
//
[/code]
//Z070220A JOB ,'CHRIS TINNON'
/*JOBPARM ROOM=220,LINES=6
//*
//*********************************************************************
//* *
//* THE PURPOSE OF THIS JOB IS AN EXERCISE IN VSAM & IDCAMS, USING *
//* REGULAR AND ALTERNATE INDEXES TO ACCESS KSDS DATA SETS *
//* - CREATE A VSAM DATA SET *
//* - LOAD THE CONTENTS OF A FILE INTO THE VSAM DATA SET *
//* - PRINT THE VSAM DATA SET *
//* - DELETE THE VSAM DATA SET *
//* *
//*********************************************************************
//*
//JSTEP01 EXEC PGM=SYNCSORT,REGION=128K,PARM='CMP=CLC'
//*
//*********************************************************************
//* *
//* JSTEP01 PERFORMS A SYNCSORT ON THE DATA SET TO BE INSERTED INTO *
//* THE VSAM DATA SET. IT SORTS ASCENDING ON BYTES 1 - 29. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SORTIN INPUT: DATA SET TO BE SORTED *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSOUT OUTPUT: SYSTEM OUTPUT *
//* SORTOUT OUTPUT: THE RESULTING SORTED TEMPORARY DATA SET *
//* *
//*********************************************************************
//*
//SORTIN DD DSN=T90MBM1.CS466.SP04.MASTER3,UNIT=DISK,DISP=SHR
//SORTOUT DD DSN=&&TEMP1,UNIT=DISK,SPACE=(TRK,(3,3)),
// DCB=(LRECL=129,BLKSIZE=1290,DSORG=PS,RECFM=FB),
// DISP=(NEW,PASS,DELETE)
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(1,28,CH,A)
//*
//*********************************************************************
//* *
//* THE FOLLOWING DATA SET IS REQUIRED BY THE SYNCSORT UTILITY *
//* *
//*********************************************************************
//*
//SORTWK01 DD DSN=&&SORTWK01,UNIT=PUB,
// DISP=(NEW,DELETE,DELETE),SPACE=(TRK,(1,1))
//*
//JSTEP02 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP02 CREATES THE VSAM DATA SET. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER( /* DEFINE A CLUSTER */ -
NAME(Z070220.CS466.KSDS2.KSDS) /* CLUSTER NAME */ -
VOLUMES(ACA301) /* VOLUME LABEL */ -
INDEXED /* CLUSTER TYPE */ -
TRACK(1 1) /* SPACE ALLOCATION */ -
KEYS(28 0)) /* KEY INFORMATION */
//*
//JSTEP03 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP03 LOADS THE SORTED DATA SET INTO THE VSAM DATA SET. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* INPUTDD INPUT: SORTED DATA SET *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//INPUTDD DD DSN=&&TEMP1,UNIT=DISK,DISP=(OLD,PASS,DELETE)
//SYSIN DD *
REPRO /* COPY A DATA FILE */ -
INFILE(INPUTDD) /* INPUT DATA SET */ -
OUTDATASET(Z070220.CS466.KSDS2.KSDS) /* OUTPUT VSAM CLUSTER */
//*
//JSTEP04 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP04 DEFINES THE ALTERNATE INDEX FOR THE DATE LISTED *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE AIX ( -
NAME(Z070220.CS466.KSDS2.AIX1) -
RELATE(Z070220.CS466.KSDS2.KSDS) -
VOLUMES(ACA301) -
RECORDSIZE(41 41) -
KEYS(8 28) -
TRACKS(1 1))
/*
//*
//JSTEP05 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP05 DEFINES THE ALTERNATE INDEX FOR THE PRICE *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE AIX ( -
NAME(Z070220.CS466.KSDS2.AIX2) -
RELATE(Z070220.CS466.KSDS2.KSDS) -
VOLUMES(ACA301) -
RECORDSIZE(40 153) -
KEYS(7 51) -
TRACKS(1 1))
/*
//*
//JSTEP06 EXEC PGM=IDCAMS,COND=(0,GT),REGION=4096K
//*
//*********************************************************************
//* *
//* JSTEP06 BUILDS THE INDEX FOR THE FIRST ALTERNATE INDEX *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
BLDINDEX -
INDATASET(Z070220.CS466.KSDS2.KSDS) -
OUTDATASET(Z070220.CS466.KSDS2.AIX1)
/*
//*
//JSTEP07 EXEC PGM=IDCAMS,COND=(0,GT),REGION=4096K
//*
//*********************************************************************
//* *
//* JSTEP07 BUILDS THE INDEX FOR THE SECOND ALTERNATE INDEX *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
BLDINDEX -
INDATASET(Z070220.CS466.KSDS2.KSDS) -
OUTDATASET(Z070220.CS466.KSDS2.AIX2)
/*
//*
//JSTEP08 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP08 DEFINES THE PATH FOR THE FIRST ALTERNATE INDEX *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE PATH ( -
NAME(Z070220.CS466.KSDS2.PATH1) -
PATHENTRY(Z070220.CS466.KSDS2.AIX1))
/*
//JSTEP09 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP09 DEFINES THE PATH FOR THE SECOND ALTERNATE INDEX *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE PATH ( -
NAME(Z070220.CS466.KSDS2.PATH2) -
PATHENTRY(Z070220.CS466.KSDS2.AIX2))
/*
//*
//*
//JSTEP10 EXEC IGYWCG,PARM='LIB,FLAG(I,I),APOST,TEST(STMT),VBREF,MAP'
//*
//*********************************************************************
//* *
//* JSTEP10 COMPILES AND EXECUTES THE COBOL PROGRAM *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT : INSTREAM COMMANDS *
//* UPDATEFD INPUT : UPDATE RECORD FILE *
//* *
//* PRINTER OUTPUT: PRINT FILE FOR OUTPUT *
//* *
//* INKSDS INPUT : KSDS DATA SET *
//* OUTPUT: KSDS DATA SET *
//* *
//* INKSDS1 ALTERNATE INDEX 1 *
//* INKSDS2 ALTERNATE INDEX 2 *
//* *
//*********************************************************************
//*
//SYSIN DD *
***************************************************************
* PROGRAM NAME: ASSIGN3 *
* *
* AUTHOR: CHRIS TINNON *
* *
* FUNCTION: THIS PROGRAM IS AN EXERCISE IS VSAM USAGE. *
* THERE IS A MASTER FILE KSDS DATA SET WHICH IS *
* UPDATED FROM AN UPDATE FILE. THE RECORDS *
* ARE PROCESSED ACCORDINGLY AND AN INDEPTH *
* REPORT IS CREATED. *
* *
* INPUT: A MASTER FILE KSDS DATASET. EACH RECORD HAS *
* FIXED LENGTH RECORDS AND WILL BE ACCESSED *
* DYNAMICALLY. *
* *
* AN UPDATE FILE SEQUENTIAL FILE. EACH RECORD *
* IS FIXED LENGTH. EACH RECORD CAN HAVE ANY *
* NUMBER OF DIFFERENT FORMATS. *
* *
* OUTPUT: THE MASTER FILE KSDS DATASET. *
* *
* THE PRINT FILE WHICH WILL HAVE THE IN DEPTH *
* ANALYSIS OF TRANSACTIONS. *
* *
* NOTES: NONE. *
***************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. ASSIGN0.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PRINT-FILE ASSIGN TO PRINTER.
SELECT UPDATE-FILE ASSIGN TO UPDTFD.
SELECT MASTER-FILE ASSIGN TO INKSDS
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS OM-HOME-ID
ALTERNATE RECORD KEY IS OM-DATE-LISTED
ALTERNATE RECORD KEY IS OM-PRICE
FILE STATUS IS KSDS-STATUS.
EJECT
DATA DIVISION.
FILE SECTION.
***************************************************************
* MASTFD IS A KSDS DATA SET. THE RECORDS ARE OF A FIXED SIZE *
***************************************************************
FD MASTER-FILE
RECORD CONTAINS 129 CHARACTERS.
01 OM-RECORD.
05 OM-HOME-ID.
10 OM-CITY PIC X(10).
10 OM-STATE PIC XX.
10 OM-STREET-NAME PIC X(10).
10 OM-STREET-NUM PIC X(5).
10 OM-DIRECTION PIC X.
05 OM-DATE-LISTED.
10 OM-YEAR PIC 9(4).
10 OM-MONTH PIC 99.
10 OM-DAY PIC 99.
05 OM-STYLE PIC X(11).
05 OM-SQUARE-FEET PIC 9(4).
05 OM-PRICE PIC X(7).
05 OM-BASEMENT-CODE PIC X.
05 OM-NUM-BEDROOMS PIC 9.
05 OM-NUM-BATHROOMS PIC 9V99.
05 OM-GARAGE-TYPE PIC X.
05 OM-GARAGE-SIZE PIC 9V9.
05 OM-ROOM-INFO OCCURS 9 TIMES.
10 OM-ROOM-CODE PIC X.
05 OM-KITCHEN-SIZE.
10 OM-KLENGTH-FT PIC 99.
10 OM-KLENGTH-IN PIC 99.
10 OM-KWIDTH-FT PIC 99.
10 OM-KWIDTH-IN PIC 99.
05 OM-LOT-CODE PIC X.
05 OM-AMENITY-INFO OCCURS 3 TIMES.
10 OM-AMENITY PIC X(15).
***************************************************************
* PRINT-FILE IS A SYSTEM PRINT FILE FOR OUTPUT. *
***************************************************************
FD PRINT-FILE
LABEL RECORDS ARE OMITTED
RECORDING MODE IS F.
01 PRINT-LINE PIC X(132).
***************************************************************
* UPDATE FILE IS THE SEQUENTIAL DATA FILE USED TO UPDATE THE *
* KSDS DATASET. EACH RECORD IS OF A FIXED LENGTH, BUT CAN *
* HAVE UP TO 15 DIFFERENT FORMATS (REDEFINED BELOW). EACH *
* RECORD CONTAINS THE KEY (HOME ID) TO ENABLE EASY ACCESS TO *
* THE KSDS RECORDS. *
***************************************************************
FD UPDATE-FILE
RECORDING MODE IS F.
01 UPDATE-RECORD.
05 UPDATE-HOME-ID.
10 UPDATE-CITY PIC X(10).
10 UPDATE-STATE PIC XX.
10 UPDATE-STREET-NAME PIC X(10).
10 UPDATE-STREET-NUM PIC X(5).
10 UPDATE-DIRECTION PIC X.
05 UPDATE-TRAN-CODE PIC 9.
05 U-ADD-TRANSACTION.
10 U-ADD-DATE-LISTED.
15 U-ADD-YEAR PIC 9(4).
15 U-ADD-MONTH PIC 99.
15 U-ADD-DAY PIC 99.
10 U-ADD-STYLE PIC X(11).
10 U-ADD-SQUARE-FEET PIC 9(4).
10 U-ADD-PRICE PIC 9(7).
10 U-ADD-BASEMENT-CODE PIC X.
10 U-ADD-NUM-BEDROOMS PIC 9.
10 U-ADD-NUM-BATHROOMS PIC 9V99.
10 U-ADD-GARAGE-TYPE PIC X.
10 U-ADD-GARAGE-SIZE PIC 9V9.
10 U-ADD-ROOM-INFO OCCURS 9 TIMES.
15 U-ADD-ROOM-CODE PIC X.
10 U-ADD-KITCHEN-SIZE.
15 U-ADD-KLENGTH-FT PIC 99.
15 U-ADD-KLENGTH-IN PIC 99.
15 U-ADD-KWIDTH-FT PIC 99.
15 U-ADD-KWIDTH-IN PIC 99.
10 U-ADD-LOT-CODE PIC X.
10 U-ADD-AMENITY-INFO OCCURS 3 TIMES.
15 U-ADD-AMENITY PIC X(15).
05 U-ALTER-TRANSACTION REDEFINES
U-ADD-TRANSACTION.
10 U-ALTER-TYPE PIC XX.
10 U-ALTER-DATE-LISTED.
15 U-ALTER-DATE-LISTED-NEW.
20 U-ALTER-YEAR PIC 9(4).
20 U-ALTER-MONTH PIC 99.
20 U-ALTER-DAY PIC 99.
15 PIC X(91).
10 U-ALTER-STYLE REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-NEW-STYLE PIC X(11).
15 PIC X(88).
10 U-ALTER-SQUARE-FEET REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-SQUARE-FEET-NEW PIC 9(4).
15 PIC X(95).
10 U-ALTER-PRICE REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-PRICE-NEW-PRICE PIC 9(7).
15 PIC X(92).
10 U-ALTER-BASEMENT-CODE REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-BASEMENT-CODE-NEW PIC X.
15 PIC X(98).
10 U-ALTER-NUM-BEDROOMS REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-NUM-BEDROOMS-NEW PIC 9.
15 PIC X(98).
10 U-ALTER-NUM-BATHROOMS REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-NUM-BATHROOMS-NEW PIC 9V99.
15 PIC X(96).
10 U-ALTER-GARAGE-DATA REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-GARAGE-DATA-TYPE PIC X.
15 U-ALTER-GARAGE-DATA-SIZE PIC 9V9.
15 PIC X(96).
10 U-ALTER-ROOM-DATA REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-ROOM-DATA-ROOM PIC 9.
15 U-ALTER-ROOM-DATA-CODE PIC X.
15 PIC X(97).
10 U-ALTER-KITCHEN-SIZE REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-KITCHEN-SIZE-DIM.
20 U-ALTER-KLENGTH-FT PIC 99.
20 U-ALTER-KLENGTH-IN PIC 99.
20 U-ALTER-KWIDTH-FT PIC 99.
20 U-ALTER-KWIDTH-IN PIC 99.
15 PIC X(91).
10 U-ALTER-LOT-SIZE-CODE REDEFINES
U-ALTER-DATE-LISTED.
15 U-ALTER-LOT-SIZE-NEW-CODE PIC X.
15 PIC X(98).
05 DELETE-TRANSACTION REDEFINES
U-ADD-TRANSACTION.
10 PIC X(101).
05 ALT-DATE REDEFINES U-ADD-TRANSACTION.
10 ALT-DATE-KEY PIC X(8).
10 PIC X(93).
05 ALT-PRICE REDEFINES U-ADD-TRANSACTION.
10 ALT-PRICE-KEY PIC X(7).
10 PIC X(94).
EJECT
WORKING-STORAGE SECTION.
***************************************************************
* FIELD DESCRIPTION *
* ----------------------------------------------------------- *
* CURRENT-SYSTEM-DATE HOLDS THE VALID CURRENT DATE *
* *
* FLAGS *
* -> UPDATE-EOF-FLAG FLAG FOR END OF FILE *
* -> KSDS-STATUS STATUS CODE FOR VSAM *
* -> KSDS-ERROR 'Y' OR 'N' FOR VSAM ERROR *
* -> ALT-DONE-FLAG 'Y' OR 'N' FOR AIX READS *
* *
* COUNTERS *
* -> PAGE-COUNT NUMBER OF PRINTED PAGES *
* -> PRINTED-TRANS-COUNT NUMBER OF TRANSACTIONS PRINTED *
* -> SUCCESS-ADDS TOTAL SUCCESSFUL ADDS *
* -> SUCCESS-ALTERS TOTAL SUCCESSFUL ALTERS *
* -> SUCCESS-DELETES TOTAL SUCCESSFUL DELETES *
* -> TRANS-ERRORS TOTAL TRANSACTION ERRORS *
* -> SUBSCRIPT DUMMY SUBSCRIPT FOR TABLES *
* -> ROOM-TOTAL TOTAL NUMBER OF BEDROOMS *
* *
* ERROR-PRINT-LINE IN CASE MASTER-FILE IS BROKEN *
* *
* PRINT-RECORD A WHOLE BUNCH OF PRINT LINES FOR *
* THE TRANSACTION REPORT *
* *
* PRINT-RECORD-ERROR PRINT LINE FOR ERROR TRANSACTIONS *
* *
* NEW-OM-RECORD TEMP STORAGE FOR THE TRANSACTIONS *
* TO BE ADDED TO THE KSDS DATASET *
* *
***************************************************************
01 CURRENT-SYSTEM-DATE.
05 THE-CURRENT-SYSTEM-DATE.
10 CURRENT-YEAR PIC 9(4).
10 CURRENT-MONTH PIC 9(2).
10 CURRENT-DAY PIC 9(2).
01 FLAGS.
05 UPDATE-EOF-FLAG PIC X VALUE 'N'.
05 KSDS-STATUS PIC XX.
05 KSDS-ERROR PIC X VALUE 'N'.
05 ALT-DONE-FLAG PIC X VALUE 'N'.
01 COUNTERS.
05 PAGE-COUNT PIC 99 VALUE 1.
05 PRINTED-TRANS-COUNT PIC 99 VALUE 10.
05 SUCCESS-ADDS PIC 99 VALUE 0.
05 SUCCESS-ALTERS PIC 99 VALUE 0.
05 SUCCESS-DELETES PIC 99 VALUE 0.
05 TRANS-ERRORS PIC 99 VALUE 0.
05 SUBSCRIPT PIC 99.
05 ROOM-TOTAL PIC 9 VALUE 0.
01 ERROR-PRINT-LINE.
05 PIC X(27) VALUE 'ERROR OPENING MASTER FILE: '.
05 PRINT-ERROR-CODE PIC XX.
01 PRINT-RECORD.
05 PRINT-HEADER-LINE-ONE.
10 PRINT-MONTH PIC X(2).
10 PIC X VALUE '/'.
10 PRINT-DAY PIC X(2).
10 PIC X VALUE '/'.
10 PRINT-YEAR PIC X(4).
10 PIC X(36) VALUE SPACES.
10 PIC X(27) VALUE 'HOME AND HEARTH REALTY, INC'.
05 PRINT-HEADER-LINE-TWO.
10 PIC X(47) VALUE SPACES.
10 PIC X(25) VALUE 'MASTER FILE UPDATE REPORT'.
10 PIC X(43) VALUE SPACES.
10 PIC X(5) VALUE 'PAGE '.
10 PRINT-PAGE-COUNT PIC Z9.
05 PRINT-HEADER-LINE-THREE.
10 PRINT-HEADER-1 PIC X(40)
VALUE 'TRANSACTION ADDRESS(HOME ID) '.
10 PRINT-HEADER-2 PIC X(41)
VALUE 'PRICE LISTED STYLE SQ.FEET '.
10 PRINT-HEADER-3 PIC X(33)
VALUE ' GARAGE LOT BATHS KITCHEN'.
05 PRINT-HEADER-LINE-FOUR PIC X(122) VALUE ALL '-'.
05 PRINT-RECORD-DATA.
10 PRINT-RECORD-DATA-LINE-1.
15 PIC X(4) VALUE SPACES.
15 PRINT-TRANS-TYPE PIC X(5).
15 PIC X(4) VALUE SPACES.
15 PRINT-ADDRESS.
20 PRINT-ADDRESS-NUM PIC X(5).
20 PIC X VALUE SPACE.
20 PRINT-ADDRESS-DIRECTION PIC X.
20 PIC X VALUE SPACE.
20 PRINT-ADDRESS-STREET PIC X(10).
15 PIC X(4) VALUE SPACES.
15 PRINT-PRICE PIC $$,$$$,$$$.
15 PIC X(3) VALUE SPACES.
15 PRINT-DATE.
20 PRINT-DATE-MONTH PIC 99.
20 PIC X VALUE '/'.
20 PRINT-DATE-DAY PIC 99.
20 PIC X VALUE '/'.
20 PRINT-DATE-YEAR PIC 9999.
15 PIC X(3) VALUE SPACES.
15 PRINT-STYLE PIC X(11).
15 PIC X(4) VALUE SPACES.
15 PRINT-SQ-FEET PIC ZZZZ.
15 PIC X(3).
15 PRINT-GARAGE-TYPE PIC X(8).
15 PIC X(3) VALUE SPACES.
15 PRINT-LOT PIC X.
15 PIC X(4) VALUE SPACES.
15 PRINT-BATHS PIC 9.99.
15 PIC X(4) VALUE SPACES.
15 PRINT-KITCHEN.
20 PRINT-KITCHEN-L-FT PIC Z9.
20 PIC X VALUE ''''.
20 PRINT-KITCHEN-L-IN PIC 99.
20 PIC X VALUE '"'.
20 PIC X(3) VALUE ' x '.
20 PRINT-KITCHEN-W-FT PIC Z9.
20 PIC X VALUE ''''.
20 PRINT-KITCHEN-W-IN PIC 99.
20 PIC X VALUE '"'.
10 PRINT-RECORD-DATA-LINE-2.
15 PIC X(13) VALUE SPACES.
15 PRINT-CITY PIC X(10).
15 PIC X(2) VALUE ', '.
15 PRINT-STATE PIC XX.
15 PIC X(56) VALUE SPACES.
15 PIC X(7) VALUE 'SIZE: '.
15 PRINT-GARAGE-SIZE PIC 9.9.
10 PRINT-RECORD-DATA-LINE-3.
15 PIC X(13) VALUE SPACES.
15 PIC X(30) VALUE 'ROOMS: LR FR KIT DR BR1 '.
15 PIC X(22) VALUE 'BR2 BR3 BR4 BR5 '.
15 PIC X(16) VALUE 'TOTAL BEDROOMS: '.
15 PRINT-TOTAL-BEDS PIC X.
10 PRINT-RECORD-DATA-LINE-4.
15 PIC X(22) VALUE SPACES.
15 PRINT-LR PIC X VALUE 'Y'.
15 PIC XXX VALUE SPACES.
15 PRINT-FR PIC X VALUE 'Y'.
15 PIC XXX VALUE SPACES.
15 PRINT-KIT PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-DR PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-BR1 PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-BR2 PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-BR3 PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-BR4 PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PRINT-BR5 PIC X VALUE 'Y'.
15 PIC XXXX VALUE SPACES.
15 PIC X(10) VALUE 'BASEMENT: '.
15 PRINT-BASEMENT PIC X(20).
10 PRINT-RECORD-DATA-LINE-5.
15 PIC X(13) VALUE SPACES.
15 PIC X(11) VALUE 'AMENITIES: '.
15 PRINT-AM1 PIC X(15).
15 PIC X(3) VALUE SPACES.
15 PRINT-AM2 PIC X(15).
15 PIC X(3) VALUE SPACES.
15 PRINT-AM3 PIC X(15).
05 PRINT-RECORD-ERROR.
10 PIC X(4) VALUE SPACES.
10 PRINT-E-TRANS-TYPE PIC X(5).
10 PIC X(4) VALUE SPACES.
10 PRINT-E-ADDRESS.
15 PRINT-E-ADDRESS-NUM PIC X(5).
15 PIC X VALUE SPACE.
15 PRINT-E-ADDRESS-DIRECTION PIC X.
15 PIC X VALUE SPACE.
15 PRINT-E-ADDRESS-STREET PIC X(10).
10 PIC X(5) VALUE SPACES.
10 PRINT-ERROR PIC X(40).
05 PRINT-TOTALS.
10 PRINT-TOTALS-LINE-1.
15 PIC X(20) VALUE 'SUCCESSFUL ADDS: '.
15 PRINT-ADDS PIC Z9.
10 PRINT-TOTALS-LINE-2.
15 PIC X(20) VALUE 'SUCCESSFUL ALTERS: '.
15 PRINT-ALTERS PIC Z9.
10 PRINT-TOTALS-LINE-3.
15 PIC X(20) VALUE 'SUCCESSFUL DELETES: '.
15 PRINT-DELETES PIC Z9.
10 PRINT-TOTALS-LINE-4.
15 PIC X(20) VALUE 'TRANSACTION ERRORS: '.
15 PRINT-ERRORS PIC Z9.
01 NEW-OM-RECORD.
05 NEW-OM-HOME-ID.
10 NEW-OM-CITY PIC X(10).
10 NEW-OM-STATE PIC XX.
10 NEW-OM-STREET-NAME PIC X(10).
10 NEW-OM-STREET-NUM PIC X(5).
10 NEW-OM-DIRECTION PIC X.
05 NEW-OM-INFO.
10 NEW-OM-DATE-LISTED.
15 NEW-OM-YEAR PIC 9(4).
15 NEW-OM-MONTH PIC 99.
15 NEW-OM-DAY PIC 99.
10 NEW-OM-STYLE PIC X(11).
10 NEW-OM-SQUARE-FEET PIC 9(4).
10 NEW-OM-PRICE PIC 9(7).
10 NEW-OM-BASEMENT-CODE PIC X.
10 NEW-OM-NUM-BEDROOMS PIC 9.
10 NEW-OM-NUM-BATHROOMS PIC 9V99.
10 NEW-OM-GARAGE-TYPE PIC X.
10 NEW-OM-GARAGE-SIZE PIC 9V9.
10 NEW-OM-ROOM-INFO OCCURS 9 TIMES.
15 NEW-OM-ROOM-CODE PIC X.
10 NEW-OM-KITCHEN-SIZE.
15 NEW-OM-KLENGTH-FT PIC 99.
15 NEW-OM-KLENGTH-IN PIC 99.
15 NEW-OM-KWIDTH-FT PIC 99.
15 NEW-OM-KWIDTH-IN PIC 99.
10 NEW-OM-LOT-CODE PIC X.
10 NEW-OM-AMENITY-INFO OCCURS 3 TIMES.
15 NEW-OM-AMENITY PIC X(15).
EJECT
PROCEDURE DIVISION.
***************************************************************
* 000-MAIN *
* *
* THIS CONTROLS THE FLOW OF THE PROGRAM. IT OPENS THE FILES *
* AND THEN CALLS 10O-PROCESS-FILE IF OPENS ARE SUCCESSFUL. *
* AT THE END OF PROCESSING IT PRINTS THE TRANSACTION TOTALS. *
* *
* ---> VERY SIMPLE PSEUDOCODE <--- *
* *
* OPEN FILES *
* PROCESS FILES UNTIL END OF FILE *
* PERFORM ADD *
* PERFORM ALTER *
* PERFORM DELETE *
* PRINT TRANSACTION DATA *
* *
***************************************************************
000-MAIN.
OPEN OUTPUT PRINT-FILE.
OPEN INPUT UPDATE-FILE.
OPEN I-O MASTER-FILE.
IF KSDS-STATUS = 00
MOVE FUNCTION CURRENT-DATE TO CURRENT-SYSTEM-DATE
MOVE CURRENT-YEAR TO PRINT-YEAR
MOVE CURRENT-DAY TO PRINT-DAY
MOVE CURRENT-MONTH TO PRINT-MONTH
PERFORM 100-PROCESS-FILE
ELSE
MOVE KSDS-STATUS TO PRINT-ERROR-CODE
WRITE PRINT-LINE FROM ERROR-PRINT-LINE
END-IF.
CLOSE PRINT-FILE
UPDATE-FILE
MASTER-FILE.
STOP RUN.
EJECT
***************************************************************
* 100-PROCESS-FILE *
* *
* THIS ROUTINE READS A RECORD FROM THE UPDATE-FILE AND CALLS *
* 1 OF 3 SUB ROUTINES TO PERFORM SOME ACTIONS WITH THE UPDATE *
* RECORD. IT THEN CALLS THE 160-PRINT-TRANS SUBROUTINE TO *
* PRINT THE DETAILED TRANSACTION REPORT. *
* *
***************************************************************
100-PROCESS-FILE.
READ UPDATE-FILE AT END MOVE 'Y' TO UPDATE-EOF-FLAG.
PERFORM UNTIL UPDATE-EOF-FLAG = 'Y'
IF UPDATE-TRAN-CODE = 1
PERFORM 110-ADD-TRANS
PERFORM 160-PRINT-TRANS
END-IF
IF UPDATE-TRAN-CODE = 2
PERFORM 120-ALTER-TRANS
PERFORM 160-PRINT-TRANS
END-IF
IF UPDATE-TRAN-CODE = 3
PERFORM 130-DELETE-TRANS
PERFORM 160-PRINT-TRANS
END-IF
IF UPDATE-TRAN-CODE = 4
PERFORM 140-GET-DATE
END-IF
IF UPDATE-TRAN-CODE = 5
PERFORM 150-GET-PRICE
END-IF
MOVE 'N' TO KSDS-ERROR
MOVE '00' TO KSDS-STATUS
READ UPDATE-FILE AT END MOVE 'Y' TO UPDATE-EOF-FLAG
END-READ
END-PERFORM.
MOVE SUCCESS-ADDS TO PRINT-ADDS.
MOVE SUCCESS-ALTERS TO PRINT-ALTERS.
MOVE SUCCESS-DELETES TO PRINT-DELETES.
MOVE TRANS-ERRORS TO PRINT-ERRORS.
WRITE PRINT-LINE FROM PRINT-TOTALS-LINE-1 AFTER 2.
WRITE PRINT-LINE FROM PRINT-TOTALS-LINE-2.
WRITE PRINT-LINE FROM PRINT-TOTALS-LINE-3.
WRITE PRINT-LINE FROM PRINT-TOTALS-LINE-4.
EJECT
***************************************************************
* 110-ADD-TRANS *
* *
* THIS ROUTINE SIMPLY ADDS THE UPDATE RECORD TO THE KSDS. *
* *
***************************************************************
110-ADD-TRANS.
MOVE UPDATE-HOME-ID TO OM-HOME-ID.
MOVE UPDATE-HOME-ID TO NEW-OM-HOME-ID.
MOVE U-ADD-TRANSACTION TO NEW-OM-INFO.
WRITE OM-RECORD FROM NEW-OM-RECORD.
IF KSDS-STATUS = '00'
MOVE 'ADD' TO PRINT-TRANS-TYPE
ADD 1 TO SUCCESS-ADDS
MOVE UPDATE-HOME-ID TO OM-HOME-ID
READ MASTER-FILE
ELSE
MOVE 'ADD' TO PRINT-E-TRANS-TYPE
MOVE '*** CANNOT ADD, KEY ALREADY EXISTS ***' TO
PRINT-ERROR
ADD 1 TO TRANS-ERRORS
MOVE 'Y' TO KSDS-ERROR
END-IF.
EJECT
***************************************************************
* 120-ALTER-TRANS. *
* *
* THIS ROUTINE ALTERS A KSDS RECORD. IT HAS A LARGE IF-ELSE *
* STRUCTURE TO DECIDE WHERE TO PLACE THE DATA FROM THE UPDATE *
* FILE INTO THE KSDS. *
* *
***************************************************************
120-ALTER-TRANS.
MOVE 'ALT' TO PRINT-TRANS-TYPE.
MOVE UPDATE-HOME-ID TO OM-HOME-ID.
READ MASTER-FILE RECORD.
IF U-ALTER-TYPE = '01'
MOVE U-ALTER-DATE-LISTED TO
OM-DATE-LISTED
ELSE IF U-ALTER-TYPE = '02'
MOVE U-ALTER-NEW-STYLE TO OM-STYLE
ELSE IF U-ALTER-TYPE = '03'
MOVE U-ALTER-SQUARE-FEET-NEW TO
OM-SQUARE-FEET
ELSE IF U-ALTER-TYPE = '04'
MOVE U-ALTER-PRICE-NEW-PRICE TO
OM-PRICE
ELSE IF U-ALTER-TYPE = '05'
MOVE U-ALTER-BASEMENT-CODE-NEW TO
OM-BASEMENT-CODE
ELSE IF U-ALTER-TYPE = '06'
MOVE U-ALTER-NUM-BEDROOMS-NEW TO
OM-NUM-BEDROOMS
ELSE IF U-ALTER-TYPE = '07'
MOVE U-ALTER-NUM-BATHROOMS-NEW TO
OM-NUM-BATHROOMS
ELSE IF U-ALTER-TYPE = '08'
MOVE U-ALTER-GARAGE-DATA-TYPE TO
OM-GARAGE-TYPE
MOVE U-ALTER-GARAGE-DATA-SIZE TO
OM-GARAGE-SIZE
ELSE IF U-ALTER-TYPE = '09'
MOVE U-ALTER-ROOM-DATA-CODE TO
OM-ROOM-INFO(U-ALTER-ROOM-DATA-ROOM)
ELSE IF U-ALTER-TYPE = '10'
MOVE U-ALTER-KITCHEN-SIZE-DIM TO
OM-KITCHEN-SIZE
ELSE IF U-ALTER-TYPE = '11'
MOVE U-ALTER-LOT-SIZE-NEW-CODE TO
OM-LOT-CODE
END-IF.
MOVE UPDATE-HOME-ID TO OM-HOME-ID.
REWRITE OM-RECORD.
IF KSDS-STATUS = '00'
ADD 1 TO SUCCESS-ALTERS
ELSE
MOVE 'ALT' TO PRINT-E-TRANS-TYPE
MOVE '*** NO RECORD FOUND TO ALTER **' TO PRINT-ERROR
ADD 1 TO TRANS-ERRORS
MOVE 'Y' TO KSDS-ERROR
END-IF.
EJECT
***************************************************************
* 130-DELETE-TRANS *
* *
* THIS ROUTINE SIMPLY DELETES A KSDS RECORD. *
* *
***************************************************************
130-DELETE-TRANS.
MOVE UPDATE-HOME-ID TO OM-HOME-ID.
READ MASTER-FILE.
IF KSDS-STATUS NOT = '00'
MOVE 'DEL' TO PRINT-E-TRANS-TYPE
MOVE '*** NO RECORD FOUND TO DELETE ***' TO
PRINT-ERROR
ADD 1 TO TRANS-ERRORS
MOVE 'Y' TO KSDS-ERROR
ELSE
DELETE MASTER-FILE RECORD
MOVE 'DEL' TO PRINT-TRANS-TYPE
ADD 1 TO SUCCESS-DELETES
END-IF.
EJECT
***************************************************************
* 140-GET-DATE *
* *
* THIS ROUTINE SEARCHES THE KSDS FOR THE DATE-LISTED IN THE *
* TRANSACTION FILE RECORD. *
* *
***************************************************************
140-GET-DATE.
MOVE ALT-DATE-KEY TO OM-DATE-LISTED.
READ MASTER-FILE RECORD KEY IS OM-DATE-LISTED.
IF KSDS-STATUS = '23'
MOVE 'DATE' TO PRINT-E-TRANS-TYPE
MOVE '*** NO RECORD FOUND ***' TO PRINT-ERROR
MOVE 'Y' TO KSDS-ERROR
ADD 1 TO TRANS-ERRORS
PERFORM 160-PRINT-TRANS
ELSE
IF KSDS-STATUS = '00' OR KSDS-STATUS = '02'
MOVE 'N' TO ALT-DONE-FLAG
PERFORM UNTIL ALT-DONE-FLAG = 'Y'
IF KSDS-STATUS = '00'
MOVE 'Y' TO ALT-DONE-FLAG
PERFORM 160-PRINT-TRANS
END-IF
MOVE 'DATE' TO PRINT-TRANS-TYPE
IF KSDS-STATUS = '02'
PERFORM 160-PRINT-TRANS
READ MASTER-FILE RECORD
KEY IS OM-DATE-LISTED
END-READ
END-IF
END-PERFORM
ELSE
MOVE '*** UNSUCCESSFUL READ ***' TO PRINT-ERROR
PERFORM 160-PRINT-TRANS
END-IF
END-IF.
MOVE 'N' TO ALT-DONE-FLAG.
EJECT
***************************************************************
* 150-GET-PRICE *
* *
* THIS ROUTINE SEARCHES THE KSDS FOR THE PRICE IN THE *
* TRANSACTION FILE RECORD. *
* *
***************************************************************
150-GET-PRICE.
MOVE ALT-PRICE-KEY TO OM-PRICE.
READ MASTER-FILE RECORD KEY IS OM-PRICE.
IF KSDS-STATUS = '23'
MOVE 'PRICE' TO PRINT-E-TRANS-TYPE
MOVE '*** NO RECORD FOUND ***' TO PRINT-ERROR
MOVE 'Y' TO KSDS-ERROR
ADD 1 TO TRANS-ERRORS
PERFORM 160-PRINT-TRANS
ELSE
IF KSDS-STATUS = '00' OR KSDS-STATUS = '02'
MOVE 'N' TO ALT-DONE-FLAG
PERFORM UNTIL ALT-DONE-FLAG = 'Y'
IF KSDS-STATUS = '00'
MOVE 'Y' TO ALT-DONE-FLAG
PERFORM 160-PRINT-TRANS
END-IF
MOVE 'PRICE' TO PRINT-TRANS-TYPE
IF KSDS-STATUS = '02'
PERFORM 160-PRINT-TRANS
READ MASTER-FILE NEXT RECORD
END-READ
END-IF
END-PERFORM
ELSE
MOVE '*** UNSUCCESSFUL READ ***' TO PRINT-ERROR
PERFORM 160-PRINT-TRANS
END-IF
END-IF.
MOVE 'N' TO ALT-DONE-FLAG.
EJECT
***************************************************************
* 160-PRINT-TRANS *
* *
* THIS ROUTINE PRINTS A DETAILED TRANSACTION REPORT. THIS *
* MOVES A WHOLE BUNCH OF DATA AROUND FROM THE KSDS RECORD *
* INTO THE POSSIBLE PRINT LINES FOR PRINTING. IT ALSO HAS TO *
* PERFORM SOME SELECTIONS BASED ON DATA IN THE KSDS IN ORDER *
* TO SEND THE CORRECT INFORMATION TO THE PRINT LINES. *
* *
***************************************************************
160-PRINT-TRANS.
IF PRINTED-TRANS-COUNT = 10
MOVE PAGE-COUNT TO PRINT-PAGE-COUNT
WRITE PRINT-LINE FROM PRINT-HEADER-LINE-ONE
AFTER PAGE
WRITE PRINT-LINE FROM PRINT-HEADER-LINE-TWO
WRITE PRINT-LINE FROM PRINT-HEADER-LINE-THREE
WRITE PRINT-LINE FROM PRINT-HEADER-LINE-FOUR
MOVE 0 TO PRINTED-TRANS-COUNT
ADD 1 TO PAGE-COUNT
END-IF.
IF KSDS-ERROR = 'N'
MOVE OM-STREET-NAME TO PRINT-ADDRESS-STREET
MOVE OM-STREET-NUM TO PRINT-ADDRESS-NUM
MOVE OM-DIRECTION TO PRINT-ADDRESS-DIRECTION
MOVE OM-PRICE TO PRINT-PRICE
MOVE OM-YEAR TO PRINT-DATE-YEAR
MOVE OM-DAY TO PRINT-DATE-DAY
MOVE OM-MONTH TO PRINT-DATE-MONTH
MOVE OM-STYLE TO PRINT-STYLE
MOVE OM-SQUARE-FEET TO PRINT-SQ-FEET
IF OM-GARAGE-TYPE = 'N'
MOVE 'NONE' TO PRINT-GARAGE-TYPE
END-IF
IF OM-GARAGE-TYPE = 'A'
MOVE 'ATTACHED' TO PRINT-GARAGE-TYPE
END-IF
IF OM-GARAGE-TYPE = 'S'
MOVE 'SEPARATE' TO PRINT-GARAGE-TYPE
END-IF
MOVE OM-LOT-CODE TO PRINT-LOT
MOVE OM-NUM-BATHROOMS TO PRINT-BATHS
MOVE OM-KLENGTH-FT TO PRINT-KITCHEN-L-FT
MOVE OM-KLENGTH-IN TO PRINT-KITCHEN-L-IN
MOVE OM-KWIDTH-FT TO PRINT-KITCHEN-W-FT
MOVE OM-KWIDTH-IN TO PRINT-KITCHEN-W-IN
MOVE OM-CITY TO PRINT-CITY
MOVE OM-STATE TO PRINT-STATE
MOVE OM-GARAGE-SIZE TO PRINT-GARAGE-SIZE
MOVE OM-ROOM-INFO(1) TO PRINT-LR
MOVE OM-ROOM-INFO(2) TO PRINT-FR
MOVE OM-ROOM-INFO(3) TO PRINT-KIT
MOVE OM-ROOM-INFO(4) TO PRINT-DR
MOVE OM-ROOM-INFO(5) TO PRINT-BR1
MOVE OM-ROOM-INFO(6) TO PRINT-BR2
MOVE OM-ROOM-INFO(7) TO PRINT-BR3
MOVE OM-ROOM-INFO(8) TO PRINT-BR4
MOVE OM-ROOM-INFO(9) TO PRINT-BR5
PERFORM VARYING SUBSCRIPT FROM 5 BY 1 UNTIL
SUBSCRIPT > 9
IF OM-ROOM-INFO(SUBSCRIPT) = 'Y'
ADD 1 TO ROOM-TOTAL
END-IF
END-PERFORM
MOVE ROOM-TOTAL TO PRINT-TOTAL-BEDS
COMPUTE ROOM-TOTAL = 0
IF OM-BASEMENT-CODE = 'N'
MOVE 'NONE' TO PRINT-BASEMENT
END-IF
IF OM-BASEMENT-CODE = 'F'
MOVE 'FINISHED' TO PRINT-BASEMENT
END-IF
IF OM-BASEMENT-CODE = 'P'
MOVE 'PARTIAL FINISH' TO PRINT-BASEMENT
END-IF
IF OM-BASEMENT-CODE = 'U'
MOVE 'UNFINISHED' TO PRINT-BASEMENT
END-IF
MOVE OM-AMENITY-INFO(1) TO PRINT-AM1
MOVE OM-AMENITY-INFO(2) TO PRINT-AM2
MOVE OM-AMENITY-INFO(3) TO PRINT-AM3
WRITE PRINT-LINE FROM PRINT-RECORD-DATA-LINE-1 AFTER 2
WRITE PRINT-LINE FROM PRINT-RECORD-DATA-LINE-2
WRITE PRINT-LINE FROM PRINT-RECORD-DATA-LINE-3
WRITE PRINT-LINE FROM PRINT-RECORD-DATA-LINE-4
WRITE PRINT-LINE FROM PRINT-RECORD-DATA-LINE-5
ELSE
MOVE UPDATE-STREET-NAME TO PRINT-E-ADDRESS-STREET
MOVE UPDATE-STREET-NUM TO PRINT-E-ADDRESS-NUM
MOVE UPDATE-DIRECTION TO PRINT-E-ADDRESS-DIRECTION
WRITE PRINT-LINE FROM PRINT-RECORD-ERROR AFTER 2
END-IF.
ADD 1 TO PRINTED-TRANS-COUNT.
/*
//GO.UPDTFD DD DSN=T90MBM1.CS466.SP04.TRAN3,UNIT=DISK,DISP=SHR
//GO.PRINTER DD SYSOUT=*
//INKSDS DD DSN=Z070220.CS466.KSDS2.KSDS,UNIT=DISK,DISP=SHR
//INKSDS1 DD DSN=Z070220.CS466.KSDS2.PATH1,UNIT=DISK,DISP=SHR
//INKSDS2 DD DSN=Z070220.CS466.KSDS2.PATH2,UNIT=DISK,DISP=SHR
//*
//JSTEP11 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*********************************************************************
//* *
//* JSTEP11 PRINTS THE VSAM DATA SET. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* PRINT THE VSAM CLUSTER */
PRINT INDATASET(Z070220.CS466.KSDS2.KSDS)CHARACTER
/*
//*
//JSTEP12 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*
//*********************************************************************
//* *
//* JSTEP12 PRINTS THE FIRST ALTERNATE INDEX. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* PRINT ALTERNATE INDEX 1 (DATE LISTED) */
PRINT INDATASET(Z070220.CS466.KSDS2.AIX1)CHARACTER
/*
//*
//JSTEP13 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*
//*********************************************************************
//* *
//* JSTEP13 PRINTS THE SECOND ALTERNATE INDEX. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* PRINT ALTERNATE INDEX 2 (PRICE) */
PRINT INDATASET(Z070220.CS466.KSDS2.AIX2)CHARACTER
/*
//*
//JSTEP14 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*
//*********************************************************************
//* *
//* JSTEP14 PRINTS THE FIRST PATH. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* PRINT PATH 1 (DATE LISTED) */
PRINT INDATASET(Z070220.CS466.KSDS2.PATH1)CHARACTER
/*
//*
//JSTEP15 EXEC PGM=IDCAMS,COND=(0,GT)
//*
//*
//*********************************************************************
//* *
//* JSTEP15 PRINTS THE SECOND PATH. *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* PRINT PATH 2 (PRICE) */
PRINT INDATASET(Z070220.CS466.KSDS2.PATH2)CHARACTER
/*
//JSTEP16 EXEC PGM=IDCAMS,COND=EVEN
//*
//*********************************************************************
//* *
//* JSTEP16 DELETES THE VSAM DATA SET *
//* *
//* DDNAME FILE DESCRIPTION *
//* ----------------------------------------------------------------- *
//* SYSIN INPUT: INSTREAM COMMANDS *
//* *
//* SYSPRINT OUTPUT: SYSTEM OUTPUT *
//* *
//*********************************************************************
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* DELETE THE VSAM CLUSTER */
DELETE (Z070220.CS466.KSDS2.KSDS)
//
[/code]