COBOL 5 天后的总结

CHAPTER   1 COBOL 概述

COBOL Common Business Oriented Language 的缩写。它不仅是商业数据处理的理想语言,
而且广泛用于数据管理领域,因此COBOL 语言也被称为用于管理的语言

一。COBOL 语言的特点
       
最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定的逻辑  关系,大量的分类排序;COBOL比较接近英语,容易懂;通用性强,易移植,COBOL结构严谨,层次分明。
 
二。COBOL的组成部分:
1
。标识部(IDENTIFICATION DIVISION):用于标识程序名。
2
。环境部(ENVIRONMENT DIVISION):用于说明程序运行的环境。
3
。数据部(DATA  DIVISION):用于说明程序中涉及的所有数据。
4
。过程部(PROCEDURE DIVISION):是程序的核心部分,它决定计算机应进行什么操作。
 
三。最简单的COBOL 程序举例:
COL 1 ---6    7         8       12---72 73---80
                                 IDENTIFICATION DIVISION

                                 PROGRAM-ID
PSAMPLE1
                                 ENVIRONMENT DIVISION

                                 DATA DIVISION

                                 PROCEURE DIVISION

        DISPLAY ‘THIS IS A COBOL PROGRAM.’
                                            STOP RUN

 
四。COBOL 源程序的书写格式:
      
1 6 列为标号区        7列为续行标志区
      
8至此11列,称为“A。程序中有些内容如部头,节头,段头,层号 01,层号 77 及文件
描述符FD等应从A区开始写。
      
12至此72列,称为“B。写程序中的正文部分。如过程部中的句子只能从B区开始写。
      
7380列,称为注释区
 
五。COBOL字符集包括:
 
      
数字0 --- 9 ,字母 A--- Z a --- z , 专用字符:+  -  * / = , . ; ‘ ( ) < > $ 及空格。属于系统字符集而不属于COBOL字符集的字符只能出现    COBOL 程序中的字符串里。
 
六。常量:
 
        COBOL
常量分为数值常量(如 100-29),非数值常量(如 ‘ABC’ )和表意常量(如 ZEROSPACEHIGH-VALUELOW-VALUE QUOTE ALL 常量)。
 
七。COBOL 所处理的数据的特点
      
层次的概念:数据间存在的从属关系。
      
文件的概念:多个记录可以组成一个文件。
 
      
记录的概念:具有一定层次关系的一组数据项的最大集合,它是内存中具有独立逻辑含义的最大存取项,具有最高层次。 

CHAPTER   2 过程部初步

一。输入输出语句。
1
ACCEPT语句:直接从终端键盘或系统指定的输入设备上输入数据。
     ACCEPT  
标识符 [FROM 助忆名]
注:A。标识符(identifier)指的是能唯一地标识一个数据项的数据名,不能唯一地标识一个
             
数据项的数据名不是标识符。标识符可以是组合项。
        B
。在ACCEPT语句中如不写FROM部分,如ACCEPT   A  ,则表示从系统隐含指定的
              
设备上读入一个数据给A 如果不想从指定的设 备上输入,则要用FROM 选项,
              
这时助忆名需要在环境部中事先说明和那种外部设备相联系。如:
ENVIRONMENT    DIVISION
。(环境部)
CONFIGRATION  SECTION
。(配置节)
SPECIAL-NAMES
。(专用名段)
CONSOLE   IS  ABC
如在过程部中有 ACCEPT  T  FROM ABC 则表示要从控制台接收数据
2
DISPLAY语句:从计算机内存中输出到某一指定的输出设备上。
     DISPLAY  {
标识符1,常量1}[标识符2,常量2]。。。[UPON 助忆名]
                      
标识符和助忆名的说明同上)
     ACCEPT
语句和DISPLAY语句不必定义文件适用于少量的数据输入输出。
3
READ语句:COBOL语言中数据的输入输出主要是通过对外部文件的读写进行的。READ 语句就是从外部文件上读入数据输 出到程序中的数据项中。在程序中用到的所有文件都需要在环境部中指定程序中用到的文件名与实际外部文件的联系。数据部也要对文件加以描述。指定数据结构各数据项所占的内存单元长度以及数据形式。
     COBOL
的存取是以文件为对象以记录为单位的。
READ
语句的最简单的格式为: READ 文件名 

  ENVIRONMENT DIVISION
  INPUT-OUTPUT SECTION

  FILE-CONTROL

          SELECT      IN-FILLE    ASSIGN  TO     
外部文件名。
为了存储读入的记录,必须在内存开辟一个与文件记录长度相等的存储区,即输入文件纪录区。每一个输入文件都有相应的输入文件纪录区,与之一一对应。亦即在数据部中描述文件的数据结构。
3
READ语句:

     假设   IN-FILE  文件每一记录中包含的内容为:产品代码,产品数量,产品单价,生产日期。设某一记录的具体数据
    
如下:0  0  1  0  0  1  0  0  0  0  0  1  0  0  0  1  9  9  9  0  3  2  2
                 prodcode    quantity        price               year      mon  day
    
如果我们希望读入该记录并对各数据项进行处理,则需要在  ‘输入纪录区中划分出各数据项,以便存放相应的数据。定义输入纪录区以及划分记录区中各数据项的工作是由数据部来完成的。下面我们简单介绍数据部定义记录区方法,针对上面输入数据的特点,我们可以在数据部中对记录区作如下描述:
 DATA DIVISION

 FD     IN-FILE   LABLE    RECORD  IS   STANDARD

 01      IN-RECORD
   (定义记录区名为IN-RECORD
           02     PROD-CODE PIC   9
4)。
           02     PROD-QUANTITY PIC   9
5)。
           02     PROD-PRICE PIC   9
6)。
           02     MANU-DATE
。(生产日期为一组合项)
                    05   DATE-CCYY PIC   9
4)。
                    05   DATE-MM PIC   9
2)。
                    05   DATE-DD PIC   9
2)。

其中,FD FILE DESCRIPTION,表示从该行起是文件描述体
LABLE RECORD IS STANDARD
:所有的磁盘文件和磁带文件都必须写明此句。
01
层定义输入纪录区的名字为IN-RECORD,由于 01层属于FD描述体,因此也就指定了 IN-RECORD IN-FILE 的关系。亦即从IN-FILE 读入的数据存放在 IN-RECORD记录区中。
这样,在执行一次READ语句后,文件中一个记录的数据便输入到内存记录区,按排列顺序分别送到记录区中各数据项中。注意文件的各记录中的数据是不分数据项的,只是按一定的顺序把数据存放在各字节中。所以数据部对记录区中各数据项的描述应该与文件的记录中各数据排列次序和长度相一致。

READ 语句的一般形式:READ     文件名   RECORD [INTO  标识符]  [AT   END  执行语句] 例如:
      READ  IN-FILE   INTO TEMP-RECORD   AT  END   STOP  RUN 
该语句除了将读到的数据传送到IN-RECORD之外,还传送到TEMP-RECORD中。在遇到文件尾时,程序结束运行。

4WRITE语句:将内存中的数据输出到外部设备,主要是由WRITE 语句来完成的。WRITE语句的最简单的格式为:
      WRITE       
记录名 (注意WRITE语句的操作对象是记录,所以是记录名而不是文件名 
    
与输入文件相似输出文件也要在环境部中指定所对应的实际存在的外部文件:
  ENVIRONMENT DIVISION

  INPUT-OUTPUT SECTION

  FILE-CONTROL

          SELECT      OUT-FILLE    ASSIGN  TO     
打印机名。
也要在数据部中定义输出记录区:
 DATA DIVISION

 FD     OUT-FILE   LABLE    RECORD  IS   OMITTED

 01      OUT-RECORD
  
           02     PROD-CODE PIC   9
4)。
           02     PROD-QUANTITY PIC   9
5)。
           02     PROD-PRICE PIC   9
6)。
           02     MANU-DATE
                    05   DATE-CCYY PIC   9
4)。
                    05   DATE-MM PIC   9
2)。
                    05   DATE-DD PIC   9
2)。
LABLE RECORD IS OMITTED
:凡输出设备是打印机的都必须写明此句。如输出设备是磁盘,则仍用LABLE RECORD IS STANDARD
01
层定义输出纪录区的名字为OUT-RECORD,由于 01层属于FD描述体,因此也就指定了
OUT-RECORD
OUT-FILE 的关系。


在用WRITE 语句输出一个记录之前,应向输出记录区传送数据。如已将数据传送到上述各数据项中,则在执行 W RITE   OUT-RECORD 语句后,则记录区中的数据通过打印机打印出来。


WRITE
语句的一般形式:                     标识符 2 LINE
                      BEFORE                  
整数  LINES
       WRITE    
记录名  [FROM  标识符 1 ]       AFTER         ADVANCING          助忆名  
                      PAGE
5
OPEN语句:程序中如果需要读写文件,则该文件必须先用OPEN语句打开,系统在执行READWRITE以前先检查该文件是否已在规定的外部设备上准备就绪。
      OPEN
语句的一般格式为:

  INPUT 文件名1 [,文件名2]。。。
  OPEN   OUTPUT 
文件名3 [,文件名4]。。。     。。。
6
CLOSE语句:当对一个文件的读或写的操作已完成,就应关闭该文件。
      CLOSE
语句的一般格式为: 
 CLOSE 
文件名  1   [,文件名2]。。。

 

COBOL通过2位长度的文件状态字(FILE-STATUS)来表示文件的操作结果是否成功,常见的文件状态值及意义:

二。算数运算语句

1ADD语句:
 
格式1ADD     标识符,标识符2。。。  TO 标识符m [,标识符n]。。。
   
常量,常量2

 格式2ADD     标识符1     ,标识符2      ,标识符3
   
常量1         ,常量2          ,常量3

    。。。GIVING 标识符m [,标识符n]。。。

2SUBTRACT语句:
    
格式1SUBTRACT       标识符,标识符2 。。。 FROM 标识符m [,标识符n]。。。
                            
常量,常量2

     格式2SUBTRACT       标识符1      ,标识符2   。。。  FROM      标识符 
                                  
常量1          ,常量2                                       常量
     GIVING
标识符n [,标识符p]。。。

3MULTIPLY语句:
    
格式1MULTIPLY        标识符1         BY 标识符2 [,标识符3]。。。
                             
常量1 

     格式2MULTIPLY        标识符1         BY 标识符2  GIVING 标识符3 [,标识符4]。。。
                             
常量 常量2
4
DIVIDE语句:
    
格式1DIVIDE              标识符1         INTO 标识符2 [,标识符3]。。。
                             
常量1  

     格式2DIVIDE             标识符1         INTO 标识符2  GIVING 标识符3 [,标识符4]。。。
                           
常量1  BY 常量2

B          à     注意: DIVIDE    A  INTO  B    是指    B/A
 DIVIDE   A  INTO  C
à B   GIVING  C     是指 B/A
                  DIVIDE    A  BY      B   C 
àGIVING  C     是指    A/B
5
COMPUTE 语句:
                 COMPUTE          
标识符1  [,标识符2 ]。。。= 算术表达式
                
运算的优先级由高到低顺序为:(),正负号  ** *   /   + -
                
如:C = 3 D = 5 E = 2 F = 1 则:
                 COMPUT   A
B = -C + D* 2 /  E ** 3 -  F = -3
三。传送语句 MOVE
        MOVE
语句用来实现内存中数据的传送(而不是内存和外设之间的传送)。
        MOVE
语句的一般格式为:
 MOVE         
标识符1        TO          标识符2 [,标识符3]。。。
                     
常量1  
MOVE
语句的传送规则:
 1
,如果接收项和发送项在数据部中描述的类型和长度相同,则按字节一一对应传送。
 2
,如果接收项和发送项长度不相同,而二者都是数值数据项,则按小数点对齐处理。
 3
,对字母或字符数据(非数值型数据)的传送,按左对齐处理。
 4
,初等项和组合项之间可以相互传送。
        关于各类数据之间的传送规则将在第五章中介绍。

更多内容请点击下载WORD文档(点击文档两个字后的图片,下载后把后缀名改为.RAR再解压即可。)

 

你可能感兴趣的:(COBOL 5 天后的总结)