Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Can take a quick look at this code and tell me what's wrong?

Status
Not open for further replies.

johnnyjj

Programmer
Apr 9, 2001
3
0
0
US
FILE-CONTROL.
SELECT OLD-MASTER ASSIGN TO "OLDMST.DAT"
ORGANIZATION IS SEQUENTIAL.
SELECT TRANS-FILE ASSIGN TO "TRANFLE.DAT"
ORGANIZATION IS SEQUENTIAL.
SELECT NEW-MASTER ASSIGN TO "NEWMST.DAT"
ORGANIZATION IS SEQUENTIAL.
SELECT IN-ERROR-FILE ASSIGN TO "INERROR2"
ORGANIZATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD OLD-MASTER
LABEL RECORDS ARE STANDARD.
01 OLD-MASTER-REC.
05 FILLER PIC X(3).
05 OM-CUST-ACCT PIC X(3).
05 FILLER PIC X(3).
05 OM-CUST-NAM PIC X(16).
05 FILLER PIC X(3).
05 OM-BAL-DUE PIC 9(6)V99.
FD TRANS-FILE
LABEL RECORDS ARE STANDARD.
01 TRANS-REC.
05 FILLER PIC X(3).
05 TR-CUST-ACCT PIC X(3).
05 FILLER PIC X(3).
05 TR-CUST-NAM PIC X(16).
05 FILLER PIC X(3).
05 TR-TRAN-AMT PIC 9(4)V99.
05 FILLER PIC X(3).
05 TR-DEL-CODE PIC X.
88 REMOVE VALUE "D".
FD NEW-MASTER
LABEL RECORDS ARE STANDARD.
01 NEW-MASTER-REC.
05 FILLER PIC X(3).
05 NM-CUST-ACCT PIC X(3).
05 FILLER PIC X(3).
05 NM-CUST-NAM PIC X(16).
05 FILLER PIC X(3).
05 NM-BAL-DUE PIC 9(6)V99.
FD IN-ERROR-FILE
LABEL RECORDS ARE STANDARD.
01 ERROR-REC PIC X(40).
WORKING-STORAGE SECTION.
01 ERROR-TITLE PIC X(36)
VALUE "ERROR REPORT FOR MASTER FILE UPDATE".
PROCEDURE DIVISION.
0000-MAIN-MODULE.
PERFORM 1000-INIT-RTN.
PERFORM 1200-ERROR-HEADER.
PERFORM 2000-READ-MASTER-RTN.
PERFORM 3000-READ-TRANS-RTN.
PERFORM 4000-PROCESSING-RTN UNTIL
OM-CUST-ACCT = HIGH-VALUES AND
TR-CUST-ACCT = HIGH-VALUES.
PERFORM 5000-TERM-RTN.
1000-INIT-RTN.
OPEN INPUT OLD-MASTER
TRANS-FILE
OUTPUT NEW-MASTER
IN-ERROR-FILE.
1200-ERROR-HEADER.
WRITE ERROR-REC FROM ERROR-TITLE.
2000-READ-MASTER-RTN.
MOVE SPACES TO OLD-MASTER-REC.
READ OLD-MASTER AT END
MOVE HIGH-VALUES TO OM-CUST-ACCT.
3000-READ-TRANS-RTN.
READ TRANS-FILE AT END
MOVE HIGH-VALUES TO TR-CUST-ACCT.
4000-PROCESSING-RTN.
IF OM-CUST-ACCT = TR-CUST-ACCT
PERFORM 4100-CODE-REG-UPDATE-RTN
ELSE IF OM-CUST-ACCT > TR-CUST-ACCT
PERFORM 4300-CODE-NEW-ACCT-RTN
ELSE
PERFORM 4600-NO-UPDATE-RTN.
4100-CODE-REG-UPDATE-RTN.
IF REMOVE
NEXT SENTENCE
ELSE PERFORM 4200-REG-UPDATE-RTN.
PERFORM 2000-READ-MASTER-RTN.
PERFORM 3000-READ-TRANS-RTN.
4200-REG-UPDATE-RTN.
MOVE OM-CUST-ACCT TO NM-CUST-ACCT.
ADD OM-BAL-DUE, TR-TRAN-AMT GIVING
NM-BAL-DUE.
WRITE NEW-MASTER-REC.
4300-CODE-NEW-ACCT-RTN.
IF REMOVE
PERFORM 4900-ERR-IN-RTN
ELSE
PERFORM 4400-NEW-ACCT-RTN.
PERFORM 3000-READ-TRANS-RTN.
4400-NEW-ACCT-RTN.
MOVE TR-CUST-ACCT TO NM-CUST-ACCT.
MOVE TR-CUST-NAM TO NM-CUST-NAM.
MOVE TR-TRAN-AMT TO NM-BAL-DUE.
WRITE NEW-MASTER-REC.
4600-NO-UPDATE-RTN.
MOVE OM-CUST-ACCT TO NM-CUST-ACCT.
MOVE OM-BAL-DUE TO NM-BAL-DUE.
WRITE NEW-MASTER-REC.
PERFORM 2000-READ-MASTER-RTN.
4900-ERR-IN-RTN.
WRITE ERROR-REC FROM TRANS-REC.
5000-TERM-RTN.
CLOSE OLD-MASTER
TRANS-FILE
NEW-MASTER
IN-ERROR-FILE.
STOP RUN.

 
Hi John,

Your code looks pretty good to me, with this possible exception:

You move hi-vals to the FD rec after EOF. In a mainframe environment this is a no-no because the FD rec is no longer addressable. The code-around is to define your rec fields in WS and use READ file INTO WS_REC etc.

One other thought:

I would put the performs of the read routines into the
4000-... routine after you perform the 4n00-... routines and take them out of the 4n00- routines.

How you perform the reads is directly related to the relationship of the input keys, so it's easier for the reader(maintainer) to see that connection, if the reads are placed where I suggested. While this doesn't affect the validity of the solution, it enhances the maintainablity of the code.

Hope this helps, Jack.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top