天天看點

cobol之旅---基礎知識2

COBOL源程式的書寫格式。

1~6列,為“标号區”。

第7列,是“續行标志區”。

第8~11列,稱為“A區”,第8列稱為“A區邊界”。

第12~72列,稱為“B區”。

第73~80列,稱為“注釋區”

過程部:

過程部是程式中的第四部分,以:PROCEDURE DIVISION 開頭

節-段-句子-語句

過程部的程式以一個動詞開始,如ADD,OPEN,READ,WRITE,IF(在Cobol中if也做動詞對待),表示計算機應執行的部分。

ADD語句(加法)

幾種常見的運算:

ADD A TO B          A+B=B

ADD A,B TO C        A+B+C=C

ADD A,B GIVING C    A+B=C

ADD A,B TO C,D       A+B+C=C  A+B+D=D

ADD A,B HIVING C,D   A+B=C  A+B=D

注意  TO 和 GIVING 後面隻能跟資料名,TO前後資料名不要随便更改,GIVING後面可以跟幾個資料名,不能跟常量,參加運算的隻能是數值常量

不同的組合項中可以包含相同名字的資料項。

01 A.

       02 B1.

              03  C…

              03  D…

       02 B2.

              03  C...

              03  D....

ADD C OF B1 TO D OF B1

SUBTRACT語句(減法)

SUBTRACT A FROM B             B-A=B

SUBTRACT A,B FROM C                   C-A-B=C

SUBTRACT A,B FROM C,D         C-A-B=C  D-A-B=D

SUBTRACT A,B FROM C GIVING D  C-A-B=D

MULTIPLY語句(乘法)

MULTIPLY  A  BY  B                          A*B=B

MULTIPLY  0.5  BY  A                        0.5*A=A

MULTIPLY  A  BY  B  GIVING C              A*B=C

                                                                                                                                                     31-

DIVIDE 語句(除法)

DIVIDE  A  INTO  B                                B/A=B

DIVIDE  A  INTO  B  GIVING  C            B/A=C

DIVIDE  A  BY  B  GIVING C                    A/B=C

加、減、乘、除語句 特點:

1.一個語句隻能進行一種單一的運算,不能在一個語句中實作兩種不同的運算。

2.加法和減法語句可以進行兩個以上數值量的計算

       ADD  A,B TO C

       SUBTRACT  A,B FROM C

乘法、除法語句隻能在兩個量之間進行,既隻能進行一次乘法或者除法。

3.四種算數語句,都有兩種形式,既帶GIVING部分和不帶GIVING部分的。

例1

IDENTIFICATION  DIVISION                 (辨別部)

PROGRAM-ID.     EXAM.                       

ENVIRONMENT          DIVISION.            (裝置部)

DATA      DIVISION.                                 (資料部)

WORKING-STORAGE         SECTION.     (工作單元節)

77    N     PIC 99                                       //兩個位元組的資料項。

PROCEDURE        DIVISION.                   (過程部)

       ACCEPT N                                        //接受語句 等待從指定的裝置上接受資料給N

       ADD  3  TO  N.

       DIVIDE  5 INTO  N.

       SUBTRACT  2  FROM  X.

       MULTIPLY     8     BY   N.

       DISPLAY       N.

       STOP     RUN.

ADD DAYTIME TO TIME GIVING SUMTIME

MULTIPLY SUMTIME BY STM GIVING SUMMONY

MULTIPLY SUMMONY BY BILI GIVING DELE

SUBTRACT DELE FROM SUMMONY GIVING SALARY

取餘:

DIVIDE 400 INTO T1 GIVING R REMAINDER C.

這個C就是你要取的餘數。

單純的GIVING R隻是把1900除400的結果送給R

是以COMPUTE的結果為0。

COMPUTE (計算語句)

COMPUTE 可以進行比較複雜的運算

COMPUTE T = (A + B) * C / D

MOVE (傳送語句)

将一個資料從一個記憶體域送到另一個記憶體域中。是資料在記憶體中的傳送,而不是記憶體和外部裝置之間的傳送。

MOVE  A TO B     A為發送項,B為接收項

ACCEPT (接受語句)

DISPLAY (顯示語句)

GO TO (轉向語句)

是一個無條件轉向語句。

格式1: GO  TO  過程名

格式2:    GO  TO  過程名1 [,過程名2] 。。。過程名n  DEPENDING        ON    辨別符

GO  TO  A,B,C,D,E DEPENDING      ON   I

當I=1時,轉到A段,I=2時,轉到B段,I=3時,轉到C段,以此類推,I=n時,轉到GO TO後面的第n個過程名所指定的節(段)去。

如果GO TO後面隻提供五個過程的名字,則I的值應1<=I<=5,否則執行此語句時出錯。

ACCEPT NUM

ACCEPT NUM

DIVIDE  50    FROM    NUM      GIVING  I

ADD       1  TO I 

GO  TO A,B,C,D,E DEPENDING ON I

A  COMPUTE      T = NUM * 10.

       GO  TO F.

B     COMPUTE     T = NUM*9.

       GO  TO  F.

F     DISPLAY       NUM,     T .

IF    (條件語句)

IS  GREATER  THAN    / IS  >    

IS  LESS  THAN        / IS  <

IS  EQUAL  TO                /IS =

NOT  GREATER  THAN    /NOT      >

NOT  LESS  THAN           /NOT      <

NOT       EQUAL   TO         /NOT      =

例如:IF              A     NOT       GREATER      THAN     0     DISPLAY       A.

         IF              A     NOT       >     0     DISPLAY       A.

如果A不大于0

兩種基本形式:

       IF    條件       語句

       IF    條件       語句1     ELSE      語句2

讀語句(READ語句)

READ  CARD-FILE    INTO      T     AT   END       GO  TO  A1

=》READ       CARD—FILE        AT   END       GO  TO  A1

       MOVE    CARD—RECORD         TO  T.

READ     檔案名    RECORD [INTO辨別符] [; AT   END       強制語句]

寫語句(WRITE語句)

寫語句是将記憶體中一個輸出記錄區的内容輸出到指定的外部媒體上

WRITE   T     将記錄名為T的記錄内容輸出。

打開語句(OPEN語句)

如果需要讀寫檔案,必須先用OPEN語句打開,系統在執行READ(讀)前會檢查該檔案是否已在規定的外部裝置上準備好。

OPEN     INPUT    X1,X2,X3  打開輸入檔案。 用讀語句從X1,X2,X3檔案上讀入資料

OPEN     OUTPUT        Y1,Y2,Y3 打開輸出檔案。用寫語句将相應的記錄輸出給這些檔案。

關閉語句(CLOSE)

對一個檔案讀或寫的操作已完成,應關閉不在使用的檔案。

CLOSE   檔案名1[,檔案名2].。。。。。。。

停語句(STOP)語句

執行此語句将程式停止運作。

STOP  RUN/常量

STOP常量,表示程式暫時挂起不往下執行,在控制台上顯示出此常量。

辨別部和裝置部

辨別部,程式中不可缺少的部分。作用:表示一個COBOL源程式,既為程式加上标志,以便識别。

必寫部分:IDENTIFICATION  DIVISION

                PROGRAM—ID  程式名.