i have read ebook COBOL400 user guide, then i write cobol program from an example at this book on page 98-101.
after i compile there are many error like this ....
i don't know why?
error message from spool file
this is display file ACCTFMTS
this is phisical file ACCTMST
and this is my Cobol program ACCOUNT
please help me
i am newbie
thx u
after i compile there are many error like this ....
i don't know why?
error message from spool file
PHP Code:
use cannot be determined. Default item assumed.
* 108 MSGID: LBL1463 SEVERITY: 30 SEQNBR: 013400
Message . . . . : 'IN99 OF ACCTPMT-O-INDIC' previously defined
in program, use cannot be determined. Default item assumed.
* 109 MSGID: LBL1463 SEVERITY: 30 SEQNBR: 013500
Message . . . . : 'IN99 OF ACCTPMT-O-INDIC' previously defined
in program, use cannot be determined. Default item assumed.
* 112 MSGID: LBL1463 SEVERITY: 30 SEQNBR: 014200
Message . . . . : 'ACCTTO' previously defined in program, use
cannot be determined. Default item assumed.
* 114 MSGID: LBL1463 SEVERITY: 30 SEQNBR: 014400
Message . . . . : 'IN97 OF ACCTPMT-O-INDIC' previously defined
in program, use cannot be determined. Default item assumed.
* 115 MSGID: LBL1463 SEVERITY: 30 SEQNBR: 014500
Message . . . . : 'IN97 OF ACCTPMT-O-INDIC' previously defined
in program, use cannot be determined. Default item assumed.
* 118 MSGID: LBL1463 SEVERITY: 30 SEQNBR: 015200
....
.....
PHP Code:
A INDARA
A R ACCTPMT
A TEXT('CUSTOMER ACCOUNT PROMPT')
A
A CA01(15 'END OF PROGRAM')
A PUTRETAIN OVERLAY
A 1 3'ACCOUNT MASTER UPDATE'
A 3 3'FROM ACCOUNT NUMBER'
A ACCTFROM 5Y 0I 3 23CHECK(ME)
A 99 ERRMSG('INVALID FROM ACCOUNT +
A NUMBER' 99)
A 98 ERRMSG('INSUFFICIENT FUNDS IN +
A FROM ACCOUNT' 98)
A 4 3'TO ACCOUNT NUMBER'
A ACCTTO 5Y 0I 4 23CHECK(ME)
A 97 ERRMSG('INVALID TO ACCOUNT +
A NUMBER' 97)
A 5 3'AMOUNT TRANSFERED'
A TRANSAM 10Y 2I 5 23
A R ERRFMT
A 96 6 5'INVALID FILE STATUS'
A 96 7 5'INVALID KEY IN REWRITE'
PHP Code:
A UNIQUE
A R ACCNTREC
A ACCNTKEY 5P 0 TEXT('ACCOUNT KEY')
A NAME 20A TEXT('NAME')
A ADDR 20A TEXT('ADDRESS')
A CITY 20A TEXT('CITY')
A STATE 2A TEXT('STATE')
A ZIP 5P 0 TEXT('ZIP')
A BALANCE 10P 2 TEXT('BALANCE')
A
A K ACCNTKEY
A
A
PHP Code:
IDENTIFICATION DIVISION.
PROGRAM-ID. ACCOUNT.
AUTHOR. MKT.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-AS400.
OBJECT-COMPUTER. IBM-AS400.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ACCOUNT-FILE ASSIGN TO DATABASE-ACCTMST
ORGANIZATION IS INDEXED
ACCESS IS DYNAMIC
RECORD IS EXTERNALLY-DESCRIBED-KEY
FILE STATUS IS ACCOUNT-FILE-STATUS.
SELECT DISPLAY-FILE ASSIGN TO WORKSTATION-ACCTFMTS-SI
ORGANIZATION IS TRANSACTION.
******************************************************************
I-O-CONTROL.
COMMITMENT CONTROL FOR ACCOUNT-FILE.
******************************************************************
DATA DIVISION.
FILE SECTION.
FD ACCOUNT-FILE
LABEL RECORDS ARE STANDARD.
01 ACCOUNT-RECORD.
COPY DDS-ALL-FORMATS OF ACCTMST.
05 ACCTMST-RECORD PIC X(82). <-ALL-FMTS
* I-O FORMAT:ACCNTREC FROM FILE ACCTMST OF LIBRARY DODILIB <-ALL-FMTS
*THE KEY DEFINITONS FOR RECORD FORMAT ACCNTREC <-ALL-FMTS
* NUMBER NAME RETRIEVAL TYPE <-ALL-FMTS
* 0001 ACCNTKEY ASCENDING SIGNE<-ALL-FMTS
05 ACCNTREC REDEFINES ACCTMST-RECORD. <-ALL-FMTS
06 ACCNT-KEY PIC S9(5). <-ALL-FMTS
06 NAME PIC X(20). <-ALL-FMTS
06 ADDR PIC X(20). <-ALL-FMTS
06 CITY PIC X(20). <-ALL-FMTS
06 STATE PIC X(2). <-ALL-FMTS
06 ZIP PIC S9(5). <-ALL-FMTS
06 BALANCE PIC S9(8)V9(2). <-ALL-FMTS
FD DISPLAY-FILE
LABEL RECORDS ARE STANDARD.
01 DISPLAY-REC.
COPY DDS-ALL-FORMATS OF ACCTFMTS.
05 ACCTFMTS-RECORD PIC X(20). <-ALL-FMTS
<-ALL-FMTS
* INPUT FORMAT: ACCTPMT FROM FILE ACCTFMTS OF LIBRARY DODILIB <-ALL-FMTS
* CUSTOMER ACCOUNT PROMPT <-ALL-FMTS
05 ACCTPMT-I REDEFINES ACCTFMTS-RECORD. <-ALL-FMTS
06 ACCTFROM PIC S9(5). <-ALL-FMTS
06 ACCTTO PIC S9(5). <-ALL-FMTS
06 TRANSAMT PIC S9(8)V9(2). <-ALL-FMTS
WORKING-STORAGE SECTION.
77 ACCOUNT-FILE-STATUS PIC X(2).
77 IND-ON PIC 1 VALUE B"1".
77 IND-OFF PIC 1 VALUE B"0".
01 DISPFILE-INDICS.
COPY DDS-ALL-FORMATS-INDIC OF ACCTFMTS.
05 ACCTFMTS-RECORD. <-ALL-FMTS
06 ACCTPMT-I-INDIC. <-ALL-FMTS
07 IN15 PIC 1 INDIC 15. <-ALL-FMTS
* END OF PROGRAM <-ALL-FMTS
07 IN97 PIC 1 INDIC 97. <-ALL-FMTS
* INVALID ACCOUNT NUMBER <-ALL-FMTS
07 IN98 PIC 1 INDIC 98. <-ALL-FMTS
* INSUFFICIENT FUNDS IN FORM ACCOUNT. <-ALL-FMTS
07 IN99 PIC 1 INDIC 99. <-ALL-FMTS
* INVALID FROM ACCOUNT NUMBER <-ALL-FMTS
<-ALL-FMTS
06 ACCTPMT-O-INDIC. <-ALL-FMTS
07 IN97 PIC 1 INDIC 97. <-ALL-FMTS
* INVALID ACCOUNT NUMBER <-ALL-FMTS
07 IN98 PIC 1 INDIC 98. <-ALL-FMTS
* INSUFFICIENT FUNDS IN FORM ACCOUNT. <-ALL-FMTS
07 IN99 PIC 1 INDIC 99. <-ALL-FMTS
* INVALID FROM ACCOUNT NUMBER <-ALL-FMTS
<-ALL-FMTS
* 06 ERRFMT-I-INDIC. <-ALL-FMTS
* <-ALL-FMTS
<-ALL-FMTS
06 ERRFMT-O-INDIC. <-ALL-FMTS
07 IN95 PIC 1 INDIC 95. <-ALL-FMTS
07 IN96 PIC 1 INDIC 96. <-ALL-FMTS
PROCEDURE DIVISION.
DECLARATIVES.
ERROR-SECTION SECTION.
USE AFTER STANDARD EXCEPTION PROCEDURE ON ACCOUNT-FILE.
ERROR-PARAGRAPH.
IF ACCOUNT-FILE-STATUS IS NOT EQUAL "23"
THEN
MOVE IND-ON TO IN96 OF ERRFMT-O-INDIC
ELSE
MOVE IND-ON TO IN95 OF ERRFMT-O-INDIC.
WRITE DISPLAY-REC FORMAT IS "ERRFMT"
INDICATORS ARE ERRFMT-O-INDIC.
READ DISPLAY-FILE.
CLOSE DISPLAY-FILE
ACCOUNT-FILE.
STOP RUN.
END DECLARATIVES.
MAIN-PROGRAM SECTION.
MAINLINE.
OPEN I-O DISPLAY-FILE
I-O ACCOUNT-FILE.
MOVE ZEROS TO ACCTPMT-I-INDIC
ACCTPMT-O-INDIC.
PERFORM WRITE-READ-DISPLAY.
PERFORM VERIFY-ACCOUNT-NO UNTIL IN15 EQUAL IND-ON.
CLOSE DISPLAY-FILE
ACCOUNT-FILE.
STOP RUN.
VERIFY-ACCOUNT-NO.
PERFORM VERIFY-TO-ACCOUNT.
IF IN97 OF ACCTPMT-O-INDIC EQUAL IND-OFF
THEN
PERFORM VERIFY-FROM-ACCOUNT.
PERFORM WRITE-READ-DISPLAY.
VERIFY-FROM-ACCOUNT.
MOVE ACCTFROM TO ACCNTKEY.
READ ACCOUNT-FILE
INVALID KEY MOVE IND-ON TO IN99 OF ACCTPMT-O-INDIC.
IF IN99 OF ACCTPMT-O-INDIC EQUAL IND-ON
THEN
ROLLBACK
ELSE
PERFORM UPDATE-FROM-ACCOUNT.
VERIFY-TO-AMOUNT.
MOVE ACCTTO TO ACCNTKEY.
READ ACCOUNT-FILE
INVALID KEY MOVE IND-ON TO IN97 OF ACCTPMT-O-INDIC.
IF IN97 OF ACCTPMT-O-INDIC EQUAL IND-ON
THEN
ROLLBACK
ELSE
PERFORM UPDATE-TO-ACCOUNT.
UPDATE-TO-ACCOUNT.
ADD TRANSAMT TO BALANCE.
REWRITE ACCOUNT-RECORD.
UPDATE-FROM-ACCOUNT.
SUBTRACT TRANSAMT FROM BALANCE.
REWRITE ACCOUNT-RECORD.
IF BALANCE IS LESS THAN 0
THEN
MOVE IND-ON TO IN98 OF ACCTPMT-O-INDIC
ROLLBACK
ELSE
COMMIT.
WRITE-READ-DISPLAY.
WRITE DISPLAY-REC FORMAT IS "ACCTPMT"
INDICATORS ARE ACCTPMT-O-INDIC.
MOVE ZEROS TO ACCTPMT-I-INDIC
ACCTPMT-O-INDIC.
READ DISPLAY-FILE RECORD
INDICATORS ARE ACCTPMT-I-INDIC.
i am newbie
thx u
Comment