cobol语言基础培训教程

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

程序如下:
IDENTIFICATION DIVISION.
PROGRAM-ID. INV1300.

ENVIRONENT  DIVISON.
INPUT-OUTPUT  SECTION.
FILE-CONTROL.
SELECT  VALTRAN    ASSIGN  TO   SYS020-AS-VALTRAN.
SELECT  INVMAST     ASSIGN  TO   SYS021-INVMAT
ORGANIZATION IS  INDEXED
ACCESS                 IS    RANDOM
RECORD KEY       IS   MR-ITEM-NO
FILE STATUS        IS   INVMAST-ERROR-CODE.
SELECT  ERRTRAN    ASSIGN  TO   SYS022-AS-ERRTRAN.

DATA  DIVISION.
FILE  SECTION.
FD    VALTRAN
LABEL  RECORDS  ARE  STANDARD.
01     VALID-TRANSACTION-AREA  PIC  X(21).
FD    INVMAST
LABEL RECORDS  ARE  STANDARD.
01     MASTER-RECORD-AREA.
05   MR-ITEM-NO  PIC  X(5).
05   FILLER   PIC  X(45).
FD    ERRTRAN
LABEL  RECORDS ARE STANDARD.
01     ERROR-TRANSACTION  PIC  X(21).
WORKING-STORAGE SECTION.
01    SWITCHES.
05    VALTRAN-EOF-SWITCH PIC  X   VALUE  ’N’.
88    VALTRAN-EOF                                  VALUE  ’Y’.
05    MASTER-FOUND-SWITCH PIC  X.
88    MASTER-FOUND                               VALUE  ’Y’.

01    FILE-STATUS-FIELD.
05    INVMAST-ERROR-CODE PIC  X(2).

01    INVENTROY-TRANSACTION-RECORD.
05    IT-ITEM-NO  PIC  X(5).
05    IT-VENOR-NO  PIC  X(5).
05    IT-RECEIPT-DATE  PIC  X(6).
05    IT-RECEIPT-QUANTITY             PIC  S9(5).
01    INVENTORY-MASTER-RECORD.
05    IM-DESCRIPTIVE-DATA.
10    IM-ITEM-NO  PIC  X(5).
10    IM-ITEM-DESC  PIC  X(20).
10    IM-UNIT-COST  PIC  S9(3)V9(2).
10    IM-UNIT-PRICE         PIC  S9(3)V9(2).
05    IM-INVENTORY-DATA.
10    IM-REORDER-POINT PIC  S9(5).
10    IM-ON-HAND  PIC  S9(5).
10    IM-ON-ORDER  PIC  S9(5).
PROCEDURE DIVISION.
A000-UPDATE-INVENTORY-FILE.
OPEN             INPUT        VALTRAN
I-O               INVMAST
OUTPUT     ERRTRAN
PERFORM    B000-PROCESS-INVENTORY-TRAN      THRU     B000-EXIT
UNTIL         VALTRAN-EOF
CLOSE                  VALTRAN
INVMAST
ERRTRAN
DISPLAY      ’PROGRAM   INV1300  NORMAL  END’
GOBACK.
B000-PROCESS-INVENTORY-TRAN.
PERFORM                      B100-READ-INVENTORY-TRAN
IF      NOT                       VALTRAN-EOF
PERFORM            B200-READ-INVENTORY-MASTER
IF     MASTER-FOUND
PERFORM   B300-UPDATE-INVENTORY-MASTER
ELSE
PERFORM   B400-WRITE-ERROR-TRAN
END-IF
END-IF.
B000-EXIT.
EXIT.

B100-READ-INVENTRORY-TRAN.
READ   VALTRAN        INTO    INVENTORY-TRANSACTION-RECORD
AT   END           MOVE  ’Y'         TO        VALTRAN-EOF-SWITCH.
B100-EXIT.
EXIT.
B200-READ-INVENTORY-MASTER.
MOVE   IT-ITEM-NO                                    TO         MR-ITEM-NO
READ    INVMASST                                      INTO    INVENTORY-MASTER-RECORD
IF           INVMAST-ERROR-CODE              = ’00′
MOVE  ’Y'                                        TO         MASTER-FOUND-SWITCH
ELSE
MOVE  ’N'                                        TO         MASTER-FOUND-SWITCH
END-IF.

B300-UPDATE-INVENTORY-MASTER.
ADD     IT-RECEIPT-QUANTITY                TO          IM-ON-HAND
REWRITE  MASTER-RECORD-AREA       FROM    INVENTORY-MASTER-RECORD
IF          INVMAST-ERROR-CODE              NOT       =   ’00′
DISPLAY   ’ INV1300  REWRITE   INVMAST ERROR . ITEM  NUMBER = ’ IM-ITEM-NO
DISPLAY   ’ FILE  STATUS    = ’    INVMAST-ERROR-CODE
MOVE  ’Y'                                         TO         VALTRAN-EOF-SWITH
END-IF.
B300-EXIT.
EXIT.

B400-WRITE-ERROR-TRAN.
WRITE   ERROR-TRANSACTION                FROM   INVENTORY-TRANSACTION-RECORD.
B400-EXIT.
EXIT.
IDENTIFICATION DIVISION.
PROGRAM-ID.    PROGRAM3.

ENVIRONMENT DIVISION.

DATA DIVISION.
WORKING-STORAGE SECTION.

01  WS-RESP    PIC S9(8)  COMP.
88  WS-RESP-NORMAL   VALUE  0.

01  PGM3COM.
05  CUST-NO  PIC  9(8).
05  PGM3-OUT.
10  PGM3-RETURN-CODE PIC  X(2).
88  PGM3-SUCCESSFUL                    VALUE ’  ’.
88  PGM3-CUST-NBR-ERR                VALUE ’01′.
88  PGM3-CUST-NOT-FND               VALUE ’02′.
10  PGM3-AC   PIC  9(5).
10  PGM3-BAL   PIC  9(11).

01  MASTER-RECORD.
05  MASTER-KEY      PIC  9(8).
05  CUST-NAME    PIC  X(20).
05  CHECK-AC    PIC  9(5).
05  BAL    PIC  9(11).
LINKAGE SECTION.

01  DFHCOMMAREA                    PIC  X(26).

PROCEDURE DIVISION.

A000-MAIN-PROCESS.

MOVE  DFHCOMMAREA       TO      PGM3COM

INITIALIZE PGM3-OUT

PERFORM B000-VALIDATION      THRU B000-EXIT
IF      PGM3-SUCCESSFUL
PERFORM C000-PROCESS    THRU C000-EXIT
END-IF
.

A999-RETURN.
MOVE PGM3COM                 TO   DFHCOMMAREA.
EXEC CICS        RETURN     END-EXEC.
GOBACK.
*
B000-VALIDATION.
IF   CUST-NO       NOT  NUMERIC
SET PGM3-CUST-NBR-ERR    TO   TRUE
END-IF
.
B000-EXIT.
EXIT.
*

C000-PROCESS.
MOVE CUST-NO                  TO   MASTER-KEY
EXEC CICS READ FILE  (‘VMASTER’)
RIDFLD(MASTER-KEY)
INTO  (MASTER-RECORD)
LENGTH(LENGTH OF MASTER-RECORD)
RESP  (WS-RESP)
END-EXEC
IF  WS-RESP    NOT            =    DFHRESP(NORMAL)
IF  WS-RESP              =    DFHRESP(NOTFND)
SET  PGM3-CUST-NOT-FND  TO   TRUE
ELSE
EXEC   CICS  ABEND  ABCODE(‘ABCD’)   END-EXEC
END-IF
ELSE
MOVE CHECK-AC            TO   PGM3-AC
MOVE BAL   TO   PGM3-BAL
END-IF
.
C000-EXIT.
EXIT.

CHAPTER   8 联机及批量程序的一些差异

批量 联机
对大量数据的集中处理 对特定的少量数据操作
一般在非营业时间运行 一般在营业时间运行
对效率要求较高 对实时性要求较高
在操作系统中通过后台作业流来调度运行 在CICS平台上通过CICS激活运行
资源由作业流和程序管理 资源由CICS集中管理,程序对资源使用通过调用CICS提供的语句
一般会使用INPUT-OUTPUT SECTION.
FILE-CONTROL. FILE SECTION.
不会使用INPUT-OUTPUT SECTION.
FILE-CONTROL. FILE SECTION.
出错处理通过检测文件状态字 出错处理通过检测CICS返回状态字

CHAPTER   9 COBOL 编程规范

1.使用結構化的編程方法 ,開發一致的、可理解的和易于維護的COBOL程序 .結構化編程應遵循”KISS”法則,即:”Keep It Simple & Stupid” for EASY TO READ ,EASY TO DEBUG ,EASY TO MAINTAIN.
2.只用顺序,循环,选择3种程序結構及組合去表示程序邏輯
3.每個控制結構只有一個入口和一個出口(結構可以是一個模塊,段,節,子程序)。
4.不要爲了時空效率而犧牲清晰性。
5.程序的清晰性首先在於邏輯的清晰,然後才是格式的清晰。
6.清晰的格式有助於清晰的思維。
7.確信所有變量在被使用時都被正確地置初值。
8.避免濫用語言特色,應使程序簡潔易讀。
9.使用有意義的、簡化的變量名及詞語標號。
10.盡量使用標準的公用子程序執行既定的程序功能。
11.避免不必要的複雜的算術和邏輯表達式。
12.避免重復的控制序列以及不必要的轉移。
13.不要用注釋去精確地重復程序代碼,要使得注釋有價值。
14.嚴格控制非限制性轉移語句”GOTO”的使用,除非下面兩種情況:當不使用時將會模糊而不是澄清功能;
在同一程序單元内正向轉移。





点击查看下一页-Pages:

1 2 3 4 5

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

发表您的评论