cobol语言基础培训教程

2009年04月23日  |  5:23 下午分类:大型机|Mainframe  |  标签:  |  831 views

CHAPTER   7 各部之间的关系及程序举例

一.各部之间的关系:

IDENTIFICATION   DIVISION.
PROGRAM-ID.        PROGRAM1.
给程序加上标识以便识别.
ENVIRONMENT  DIVISION.
CONFIGRATION   SECTION.
INPUT-OUTPUT    SECTION.
FILE-CONTROL.
SELECT    PRODFILE  ASSIGN  TO FILE1.
描述程序中用到的文件与外部文件的关系及控制信息
DATA  DIVISION.
FILE   SECTION.
FD    PRODFILE    LABEL  RECORD  IS  STANDARD.
01     PROD-REC      PIC      X(200).
WORKING-STORAGE   SECTION.
01     WS-VARIBALES.
05   WS-I          PIC      9(2).
描述程序中用到的所有文件及其记录中各数据项的属性及程序中用到的所有中间数据项的描述.
PROCEDURE  DIVISION. 程序的核心部分,他决定计算机进行什么操作.如,文件的读写及其他处理

二.程序举例:
例1:
读入一组产品销售记录,每读入一个记录,计算出销售总额(数量X单价).然后打印出该产品的全部数据.数据形式如下:

1  9  9  2  1  2  3  1  0  0  0  0  0  1  A  A  A  A  0  1  0  0  5  0  0  0
1  9  9  3  1  2  3  1  1  0  0  0  0  1  B  B  B B  0  2  0  0  6  0  0  0
————————-  —————–   ————  ————  ———–
DATE                PRODCODE     CUST        AMT        PRICE
程序如下:
IDENTIFICATION       DIVISION.
PROGRAM-ID.             PEXAM1
ENVIRONMENT          DIVISION.
CONFIGRATION         SECTION.
INPUT-OUTPUT          SECTION.
FILE-CONTROL.
SELECT     INPUT-FILE         ASSIGN    TO     FILE1
ORGANIZATION                    IS      SEQUENCIAL
ACCESS    MODE                    IS      SEQUENCIAL
FILE-STATUS                          IS     WS-INPUT-FILE-STATUS.
SELECT    OUTPUT-FILE        ASSIGN  TO     P-FILE
ORGANIZATION                    IS      SEQUENCIAL
ACCESS    MODE                    IS      SEQUENCIAL
FILE-STATUS                          IS     WS-OUTPUT-FILE-STATUS.
DATA                           DIVISION.
FILLE                           SECTION.
FD      INPUT-FILE       LABEL     RECORD    IS     STANDARD.
01       IN-REC.
05      DATE            PIC    9(8).
05      PROD-CODE  PIC    9(6).
05      CUSTOMER-CODE  PIC    X(4).
05      QUANTITY  PIC    9(4).
05      UNIT-PRICE     PIC    9(4).
FD      OUTPUT-FILE       LABEL     RECORD    IS     STANDARD.
01       OUT-REC.
05      DATE            PIC    9999B99B99.
05      FILLER   PIC    X(5).
05      PROD-CODE  PIC    9(6).
05      FILLER   PIC    X(5).
05      CUSTOMER-CODE PIC    X(4).
05      FILLER   PIC    X(5).
05      QUANTITY  PIC    ZZZ9.
05      FILLER   PIC    X(5).
05      UNIT-PRICE           PIC    $(5).
05      FILLER          PIC    X(5).
05      SALES-VALUE      PIC    $(8).

WORKING-STORAGE                SECTION.
01       WS-VARIBLES.
05      WS-INPUT-FILE-STATUS  PIC    9(2).
88       WS-INPUT-FILE-SUCCESSFUL         VALUE     0.
88       WS-INPUT-FILE-EOF                          VALUE    23.
05      WS-OUTPUT-FILE-STATUS PIC    9(2).
88       WS-OUTPUT-FILE-SUCCESSFUL     VALUE     0.
PROCEDURE                                DIVISION.

A000-MAIN.
PERFORM         A100-OPEN-FILES
PERFORM         R000-READ-FILE
PERFORM         A200-PROCESS-RECORD UNTIL WS-INPUT-FILE-EOF
PERFORM         A300-CLOSE-FILES
STOP RUN
.
A000-EXIT.
EXIT
.

A100-OPEN-FILES.
OPEN INPUT        INPUT-FILE
OUTPUT    OUTPUT-FILE
IF     NOT           WS-INPUT-FILE-SUCCESSFUL
DISPLAY   ’INPUT-FILE              OPEN     NOT   SUCCESSFUL’    UPON    CONSOLE
PERFORM  Z000-ABEND
END-IF
IF     NOT            WS-OUTPUT-FILE-SUCCESSFUL
DISPLAY   ’OUTPUT-FILE         OPEN      NOT   SUCCESSFUL’    UPON    CONSOLE
PERFORM  Z000-ABEND
END-IF
.
A200-PROCESS-RECORD.
INITIALIZE  OUT-REC
MOVE           CORR         IN-REC     TO           OUT-REC
COMPUTE   SALES-VALUE   =  QUANTITY  OF  IN-REC   *   UNIT-PRICE   OF   OUT-REC
PERFORM   W000-WRITE-FILE
PERFORM    R000-READ-FILE
.
A300-CLOSE-FILE.
CLOSE         INPUT-FILE
OUTPUT-FILE
.
R000-READ-FILE.
READ  INPUT-FILE
IF     NOT   WS-INPUT-FILE-SUCCESSFUL   AND  NOT    WS-INPUT-FILE-EOF
DISPLAY   ’INPUT-FILE  READ NOT   SUCCESSFUL’    UPON    CONSOLE
PERFORM  Z000-ABEND            THRU      Z000-EXIT
END-IF
.

W000-WRITE-FILE.
WRITE  OUT-REC         AFTER     1
IF     NOT   WS-OUTPUT-FILE-SUCCESSFUL
DISPLAY   ’OUTPUT-FILE  WRITE  NOT   SUCCESSFUL’    UPON    CONSOLE
PERFORM  Z000-ABEND
END-IF
.
Z000-ABEND.
DISPLAY   ’PROGRAM   ABEND !’    UPON    CONSOLE
PERFORM  A300-CLOSE-FILES          THRU    A300-EXIT
MOVE         16                                         TO         RETURN-CODE
GOBACK
.

输出的数据形式如下:
1992 12 31     000001     AAAA      100      $5000      $500000

1993 12 31     100001     BBBB       200      $6000      $1200000

例2:
Program : INVI300    Update  inventory   file (random)

File Description Use
VALTRAN Valid inventory transaction  file Input
INVMAST Inventory  master  file Update
ERRTRAN Unmatched inventory transaction file Output

Process specifications
This program updates an inventory master file (INVMAST) based on the data in a sequential
file of valid inventory transaction records (VALTRAN). The inventory master file is indexed  by item number and updated randomly.

If the program finds a master record with the same item number as a transaction, it uses the
transaction data to update the master record .It does this by increasing the on hand quantity
in the master record by the receipt quantity in the transaction record.
If the program cannot find a master record for a transaction, it writes the transaction record on
the file of error transactions (ERRTRAN). The record format format for ERRTRAN is same as
for VALTRAN.

The basic processing requirements are:

1. Read a transaction record.

2. Read the master record with the same item number as in the transaction record.

3. If the master  record is found , update and rewrite the matching master record.

4. If the transaction is not found , write the transaction record on the file of error  transactions.





点击查看下一页-Pages:

1 2 3 4 5

喜欢本文,那就收藏到: Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网

发表您的评论