基本語法
一、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)。
a 字符串型
01 STRING-A PIC X(100).
100个字符长的变量,程序可以局部操作一个变量( STRING-A(start: length)如:
MOVE ALL “X” TO STRING-A(2:10)
(将变量STRING-A第2位开始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型变量用零显示
2、COBOL语言中数值型变量种类很多,针对不同的要求有不同的数值类型。
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小时内删除。
发表评论