PDA

View Full Version : Hi, look at my JCL.


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]

SimpleSimon
02-08-2004, 05:27 AM
Why?

Pianomahnn
02-08-2004, 05:54 AM
Because it makes me feel loved.

Billyman
02-08-2004, 03:25 PM
This is where the problem lays P-dude.

Somewhere along the lines of things, I find happiness knowing you’re learning new stuff that interests you. Despite that fact that I can’t make heads or tails of the codings you keep posting, I’m impressed that you do and can write such and make it work.

However, although I can’t speak for everyone but can speak for the majority……………

WE DON’T GIVE A SHIT ABOUT SEEING IT!!!

Do you feel loved now bitch? :p

skalie
02-08-2004, 05:34 PM
Yeah, and lose the caps lock.

sauron
02-08-2004, 10:09 PM
The sad thing is, in 5 years, all these supposedly nifty coding skills, will be useless...

- d.

Pianomahnn
02-11-2004, 04:51 AM
Originally posted by sauron
The sad thing is, in 5 years, all these supposedly nifty coding skills, will be useless...

- d.

I need more input.

Pianomahnn
02-11-2004, 04:52 AM
Originally posted by skalie
Yeah, and lose the caps lock.

I can't. :(

MAC
02-11-2004, 01:35 PM
you ppl are rather negative

1) this is the institute, I see no flood of technical questions so a technical soliloqy never hurts. p-mah isn't exactly disrupting th eflow aroudn here

2) my dad spent 10 years doing crypto in the army and 15 years doing switch installation and programming in the telecommunications business. I met all his contemporaries and, historically speaking, the ones with no basic background in where modern technology came from wher wrothless and prone to stupid mistakes.
10 years from now there will be plenty of techs who've never coded anything in "the old fashion" and many of them will be giant fucktards creating the same problems we have today

today his basic electrical background has made him able to solve problems in his new field (forklift repair) that fully trained modern techs can't seem to figur eout on these new all electric forklifts. thank god for ground isolation

Slightly skewwed for instance:
yesterday I was talking to my sis-in-law who works for a company that does insurance software. the programers who sit and write this software also write the users manual. invariabley the users manuals is "worng". meaning no "user" will ever be able to install or set-up this software in this fashion. So, invariably, some poor customer service rep ends up re-writing the manuals for every piec eof software after its initial release. Yesterday was her turn.
If the software engineers had some sort of background in something other than doing that one thing they wouldn't have this problem
(or the company could take th enew software, give it to a customer service tech to install, report on and write the manual for)

but that would make sense

now until someone here can post a code to do anything (such as insult p-mahn's code) I suggest you shut your tooth brush holes and go back to your star trek news letters.

SimpleSimon
02-11-2004, 05:01 PM
....(or the company could take th enew software, give it to a customer service tech to install, report on and write the manual for)...

There actually are companies that do this. I worked for one such. Our software was a huge kludge of add-on modules and patches. Every time IT added a capability they beta-tested it at the Houston office for one reason; between my boss and I we would read the techs "manual" and experiment until we could make it work as advertised (usually), then I wrote a users manual.

Once that was done, and any problems corrected, the rest of the company system got the new software downloads. Writing user manuals in this fashion works pretty well. Of course, being one of the central nodes in the national system and having our own AS400 helped.

Billyman
02-11-2004, 11:04 PM
Mac, you’re not seeing something that I do.

I made a valid point when I said we didn’t wanna see it. And the majority feels the same, ask them. I didn’t dis P-dude or his learning and abilities. I applaud him.

But I, as well as others, would find more interest in his learning’s and projects if he formed a bit of a story. Tell us what it took to get to the point he’s at now, tell us what the project is about, explain to those of that do know what a JCL is is, and explain it’s function. Something of this nature would spark curiosity and a question or two or maybe just a “that sounds cooj P-dude”.

I’m sorry to say, but just showing the actual coding as P-dude has done over and over is like watching brass tarnish. I’m not a computer geek (no offence P-dude) therefore it just ain’t interesting to me and I do not only speak for myself on that. The code doesn’t impress me (because I don’t understand it), the ability to code does (since I can’t).

Get my drift?

MAC
02-12-2004, 02:51 AM
yeah

he should go somewhere where someone else actually codes

like you should go where someone actually works on cars and I should go where someone actually catches and raises snakes

the problem with that is in those places everyone is elitest, aloof, and overly critical/competetive

if p-mahn wants conversation on what he's done around here he'll have to add a story but replying with "no one cares" is what he'd get if he posted it at imacoder2.com except they'd add "you're a fucktard I could do that 10x better but I'm too busy right now"

and since we have several people in tech fields who have done this type of coding and work with similar things it wasn't too unbelievable that someone might have a comment pertaining to the lines of code

this is why people on the internet only talk about sex and porn and the news

Billyman
02-12-2004, 03:29 AM
Hmm, let me think of something else that you can blow totally out of proportion; I’ll get back to you.

Pianomahnn
02-12-2004, 04:12 AM
You never had to click here. You never had to read it. You chose to click and read, so deal.

Billyman
02-12-2004, 04:23 AM
Constructive criticism too much for ya huh?

Mudflap
02-12-2004, 06:20 AM
Totally woman-like pissing contest.

Minus 500 man points from everyone but me.

Pianomahnn
02-13-2004, 03:13 AM
It's not constructive criticism. It's retarded criticism.

Fuckhead.

Billyman
02-13-2004, 03:27 AM
He just called you a fuckhead Mudflap. You gonna take that? :p

sauron
02-19-2004, 01:56 PM
Originally posted by MAC
now until someone here can post a code to do anything (such as insult p-mahn's code) I suggest you shut your tooth brush holes and go back to your star trek news letters.

#!/bin/sh
# File: crash.sh
# Author: Dominic J. Eidson
# Created: May 15th, 1999
# Last Modified: May 19th, 1999
# Description: Script to do core file analysis - crash.sh -h for more info

# Init time.
TEMP_FILE="/tmp/`basename ${0}`.${$}" # Temp file
INFO="no" # Weather you want "info locals"
LIST="no" # Weather you want "list"
HELP="no" # Show help or not.

# Trap signals - clean up after exit.
trap 'rm -f ${TEMP_FILE}' 0 1 2 6 9 11 13 15

# check options list.
set -- `getopt hil $* 2>/dev/null`
if [ ${?} -ne 0 ]
then
echo "USAGE: `basename ${0}` [-h] [-i] [-l] binary_file core_file"
exit 1
fi
for i
do
case "$i"
in
-h)
HELP="yes"; shift;;
-i)
INFO="yes"; shift;;
-l)
LIST="yes"; shift;;
esac
done

# Get rid of "--"
shift

if [ "${HELP}" = "yes" ] ; then
cat << EOF
USAGE: `basename ${0}` [-h] [-i] [-l] binary_file core_file

Options:
-h This screen.
-i Includes the output from "info locals" for each frame.
-l Includes the output from "list" for each frame.

Copyright 1999, Dominic J. Eidson
EOF
exit 1
fi

# Do we have enough files?
if [ ${#} -ne 2 ]
then
echo "USAGE: `basename ${0}` [-h] [-i] [-l] binary_file core_file"
exit 1
fi

# No check for whether files exist or not - yet.

# Create a temp script to run with GDB
echo "bt" > ${TEMP_FILE}
for gdb_frame in `echo 'backtrace' | eval gdb ${1} ${2} 2> /dev/null | grep '^#' | awk '{print $1}' | cut -c2-10`
do
echo "echo ==> FRAME $gdb_frame\\n" >> ${TEMP_FILE}
echo "frame $gdb_frame" >> ${TEMP_FILE}
if [ "${LIST}" = "yes" ] ; then
echo "echo -> list\\n" >> ${TEMP_FILE}
echo "list" >> ${TEMP_FILE}
fi
if [ "${INFO}" = "yes" ] ; then
echo "echo -> info locals\\n" >> ${TEMP_FILE}
echo "info locals" >> ${TEMP_FILE}
fi
done
# Run GDB a second time.
eval gdb -batch -x ${TEMP_FILE} ${1} ${2}


Happy now?

- d.

Pianomahnn
02-19-2004, 02:46 PM
I should never have stopped scripting. . .I forgot it all.


# Weather you want "list"

Typo++? :p

sauron
02-19-2004, 03:03 PM
Originally posted by Pianomahnn
I should never have stopped scripting. . .I forgot it all.



Typo++? :p

Typos in comments have no bearing on the execution of the code.

I wrote this way back when I had difficulty seperating "whether" and "weather" - ugh.

- d.

MAC
02-19-2004, 05:25 PM
see?

NOW we have a proper geek-off going

go for it boys

Pianomahnn
02-19-2004, 08:06 PM
I can't beat Sauron. . .he is more l337 than I.

However, on the rockpile, that's a different story. :D

I choose my battles wisely.

sauron
02-19-2004, 08:14 PM
Originally posted by Pianomahnn
I can't beat Sauron. . .he is more l337 than I.

However, on the rockpile, that's a different story. :D

I flashed a 5.9+ after having been off climbing for 8 months.

Then I dislocated my knee cap bouldering the approach to the top to clean the anchors. :/

- d.

Pianomahnn
02-20-2004, 01:21 AM
Youch.