基本語法
一、COBOL基本語法
一、cobol的书写格式(每行)
1、 6列为序号区(一般不编辑)
2、 7列为标示列,仅可以写如下几个标示符。
a.  “”    注释符(注释当前行的代码)
b  ““    字符串连接符
    3、第8---11列为A区,包括以下内容。
        a  部、节名。
        b  层号01
    4、第12---72列为B区,过程部的程序必须写在B区中。
    5、第72以后部分不能编辑。
二、cobol的语法结构 (几大部分)
1、 标示部(IDENTIFICATION DIVISION):提供程序的一般性文档说明。
2、 环境部(ENVIRONMENT DIVISION): 提供程序外部有关的项目。
a. 配置节(CONFIGURATION SECTION)
①.指定源计算机(SOURCE-COMPUTE).
②.目标计算机(OBJECT-COMPUTE).
b.  输入输出节(INPUT-OUTPUT    SECTION).
    文件的物理路径的定义。
    方法二:(过程部中动态指定文件)
          SELECT FILE-LOG ASSIGN  TO            SELECT-FILE
ORGANIZATION IS LINE SEQUENTIAL.
                  在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。
    3、数据部(DATA    DIVISION)
        程序中的变量都在数据部中定义,Cobol中没有全局变量和局部之分。(变量的类型结构参照5.变量类型)
a. 文件节(FILE  SECTION)
      给环境部定义的文件指定一个RECORD变量,读写文件用:
      FD  FILE-LOG.
      01  RECORD-LOG                  PIC X(2000).
    b. 工作存储节
      定义程序中用到的临时变量。
a)  COBOL变量定义需要加层号(表示层次关系),
· 层号从01开始
  :  01  I          PIC    X(10).
· 组合项
  :  01  WORK-AREA.
            05  NUM-1    PIC  9(09).
            05  STR-1    PIC  X(10).
                  b)  层号依次排列顺序为:01 ,05,10,15,20,30 ·······
c. 连接节
子程序的参数的定义。
    4 过程部(PROCEDURE  DIVISION)
          程序的主体:程序的逻辑运算在此操作。
a、 每个程序分为四大节(模块),
· 前处理(初始化变量,设定初始值等)
· 主处理(程序业务处理部分)
· 后处理(程序正常结束时的出口)
· 错误处理(程序异常结束时的出口)
b、 对于子程序,PROCEDURE  DIVISION  后应列出LINK节中定义的参数。
:  PROCEDURE    DIVISION  USING  LINK-INPUT-DATA  LINK-OUTPUT-DATA.
c、 程序结束。
· 主程序 STOP  RUN.
· 子程序 GO BACK.
5、变量类型
COBOL程序的基本变量类型分为两大类字符串型(X)、数值型(9)
字符串型
      01  STRING-A              PIC    X(100).
      100个字符长的变量,程序可以局部操作一个变量( STRING-A(start: length)如:
      MOVE  ALL  “X”      TO  STRING-A(2:10)
      (将变量STRING-A2位开始10长度的内容全赋为”X”字符)
  b  数值型
 
种类
类型
说明
备注
DISPLAY
9(m)
无符号整数,每位占用一个字节,显示或输出到文件时,为零的数位显示”0”
(1<=m <=18)
例如: 01  I  PIC  9(8).
变量I占用8个字节。
I = 1 时,输出显示时为00000001
S9(m)
带符号整数,每位占用一个字节,符号位不占位,显示时,为零的数位显示”0”,符号显示在最后,输出到文件时,为零的数位显示”0”,符号丢失。
(1<=m <=18)
例如: 01  I  PIC  9(8).
变量I占用8个字节。
I = 1 时,显示时为00000001+
输出到文件时为00000001
DISPLAY
9(m)V9(n)
无符号小数(小数点不显示,不占位)每位占用一个字节,显示或输出到文件时,为零的数位显示”0”
(1<=m + n <=18)
例如: 01  I  PIC  9(4)V9(2).
变量I占用6个字节,整数位4位,小数位2位。
I = 1.1 时,输出显示时为000110
S9(m)V9(n)
带符号小数(小数点不显示,不占位)每位占用一个字节,符号位不占位,显示时,为零的数位显示”0”,符号显示在最后,输出到文件时,为零的数位显示”0”,符号丢失。
(1<=m + n <=18)
例如: 01  I  PIC  9(4)V9(2).
变量I占用6个字节,整数位4位,小数位2位。
I = 1.1 时,显示时为000110+
输出到文件时为000110
Comp,comp-5,comp-3
9(m)  comp-5
无符号整数,数据以二进制方式存贮,显示和9(m) 一样,不能出力
(1<= m <=18)
S9(m)  comp-5
有符号整数,数据以二进制方式存贮,显示和S9(m) 类似,只是符号在前面,不能出力,
(1<= m <= 18)
9(m)v9(n) comp-5
无符号小数,数据以二进制方式存贮,显示和9(m)v9(n) 一样,不能出力
(1<= m + n <=18)
S9(m)v9(n) comp-5
有符号整数,数据以二进制方式存贮,显示和S9(m)v9(n) 类似,只是符号在前面,不能出力,
(1<= m + n <= 18)
注: 1、对于出力型数值变量,可以用9代替Z,它们的区别是:
结果为零的整数部高位,小数部低位: Z型变量用空格显示,9型变量用零显示
2COBOL语言中数值型变量种类很多,针对不同的要求有不同的数值类型。
c、在COBOL变量定义时,可以加入格式字符串字符。
d不同类型变量间赋值。
  整数
1、 字符串中数值部分可以作为对应长度的DISPLAY型变量给其它各种数值型变量。
2、 DISPLAY型变量(包括出力型变量)被赋值时,超出它表示范围的数可以被接受,但截去超出的高位。
3、 COMP型变量被赋值时,超出它表示范围的数不能被接受。
  小数 
1、 DISPLAY型变量(包括出力型变量)被赋值时,超出它表示范围的数可以被接受,但整数部截去超出的高位,小数部截去低位。
2、 COMP型变量被赋值时,整数部超出它表示范围的数不能被接受,小数部超出它表示范围的数可以被接受,但小数部截去低位
      : 以上所述赋值变量为任何类型的数值型变量(经过严格测试得出结论)
    e、字符型比较。
        · 字符串比较时,系统自动截去尾部空格(如 “a  “  =  “a” )。
        · 数字的数值形式和数字字符形式相等(如 “1234567890” = 1234567890
        · oracle 字符串转数组综合以上两点, “12  “  = 12
二、 基本语法:
1、赋值语句MOVE
  a 将一个变量赋给另个变量
      move  a  to    b.
  b、将一个变量同时赋给另外两个变量。
      Move  a  to  b  c .
  c、将一个变量全部赋为某个字符
      move  all “x”  to  a.
  d、对于赋值溢出,截取的方式为.
      · 字符型变量截去左边的溢出部分。
      · 数值型变量截去整数部高位、小数部低位的溢出部分。
e、 组和项传送,它们的数据结构 必须相同
f、 对于组合项成员的局部引用,应该如下:
  01  A-AREA.
          05  STR-1      PIC  X(10).
          05  STR-2      PIC  X(10).
    01  B-AREA.
          05  STR-1      PIC  X(20).
          05  STR-2      PIC  X(10).
MOVE  STR-1  OF  A-AREA(1:4)  TO  STR-1  OF  B-AREA(1:4).
3、 四则运算
原则上,四则运算不用助记符语句,但对于简单运算( ++,--),可采用助记符语句。
a、 加法( ADD  1  TO  NUM-1)
b、 减法(SUBTRACT  1  FROM  NUM-1)
c、 其它所有运算均采用COMPUTE 语句
COMPUTE  NUM-1  =  NUM-2 + NUM3 * 10
运算符如下:
    + 
** 指数
                  COMPUTE语句中,变量和运算符间至少留有一个空格。
4、 重定义语句REDEFINES(数据部中使用)
    01  A        PIC        X(10)    VALUE  SPACE.
01  B      REDEFINES    A  PIC  9(10).
    变量A,B使用同一个空间,重定义时,重定义变量必须紧跟着被重定义变量后面,并且在字符串同数值一起重定义时,如果对变量进行初始化,变量会初始化为空格。
5、 数组关键词OCCURS
        OCCURS  整数  TIMES.
        a.简单数组
          01  A    OCCURS    10  PIC  X(30).
        b. 组合项数组
01  A.
05  B      OCCURS  10.
            10  C  PIC  X(10).

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。