1. 数据类型
1.1 变量定义
序号 数据名 PIC 数据类型 [VALUE 值].
例:03 MY-ID PIC 999 [VALUE 123]. 数据类型写几个长度就是几。
1.2 数据类型
1.2.1 数值型
9:数值型,99999 缩写 9(5),不满位前补0, 0有(+)符号。
S:正负数值,S9999 缩写 S9(4),不满位前补0,值有正负符号。
V:小数,99V999 缩写 9(2)V9(3),正数前补0,小数后补0,输出不显示小数点
P:固定值0,P99 缩写 P(2),P代表固定数值0
Z:数值型占位,ZZZ99 缩写 Z(3)9(2),不满位Z位补半角空格
1.2.2 字符型
A:字母形,AAA 缩写 A(3),不满位后补半角空格,只能存(a-zA-Z)和半角空格
X:字符型,XXX 缩写 X(003),不满位后补半角空格,只能存半角的(文字字母数值符号)
N:全角字符,NNN 缩写 N(003), 不满位后补半角空格,可以存全角或半角文字。
1.2.3 组合型
$999 缩写 $9(3),例:$123
99.99 缩写 9(2).9(2),例:12.34 ,DISPLAY输出有小数点
S99,999,999 缩写 S9(2),9(3),9(3),例如:+12,345,678
1.3 常量
1.3.1 表意常量
ZERO:1个以上0,99→00,9V9→00,9.9→0.0,A→不可赋0,X(2)→'00',N(2)→'0000'
SPACE:1个以上半角空格, 99,9V9,9.9→数值不可赋值空格, AA→' ',XX→' ', NN→' '
LOW-VALUE:1个以上最小值, 99,9V9,9.9→数值不可赋值, A(2),X(2)→2*low, N(2)→4*low
HIGH-VALUE:1个以上最大值, 99,9V9,9.9→数值不可赋值, A(2),X(2)→2*HIGH,N(2)→4*HIGH
ALL 字符:1个以上该字符,
注释:ZEROS,SPACES等与上记含义相同,表意常量不赋予数据时直接输出长度为1,LOW-VALUE输出看起来像SPACE,实际两个值不相等。
1.3.2 数值常量
03 NUM-1 PIC 999 VALUE 123.
注释:常量只是初期了值的变量,形式上不对其值改变,实际可以改变它的值。数值常量最多18位
1.3.3 非数值常量
03 STR-1 PIC XXX VALUE 'abc'.
注释:用引号括起来的字符,单双引号同样, 字符最多160个
1.4 数值压缩型
1.4.1 进制型(COMP)
03 NUM-2 PIC 999 COMP VALUE 123.
注释:二进制型,只能对数值使用,全称COMPUTATONAL,将通常存储的4bit数值以2bit存储,无法通过输出人为确认,只能用于机器识别。
1.5 数据传送(MOVE TO)
1.5.1 传送语句
单目标传送:MOVE A TO B. // 将A赋值给B
多目标传送:MOVE A TO B,C. // 将A赋值给B和C
注释:元数据长度不足,不保留目标的数据值
9或X TO 9型,从右向左依次赋值,不足左补0,超出左截掉
9或X TO 9V9,元数据(无点)从右向左个位开始赋值,小数默认为0,不足左补0,超出左截掉
9V9 TO 9V9,整数从右向左赋值,小数从左向右赋值,不足两侧补0,超出两侧截掉。
9,9V9,X TO X,由左向右赋值(不含数值正负号,V不含点,9.9含小数点)不足后补空格,超出后截掉。
X,A TO A,由左向右赋值,不足后补空格,超出后截掉
注释:可赋值给A的值与X同效果。只有9V9和9.9相互之间可以给小数赋值,9V9不存点所以赋值目标9AX也不含点。
1.5.2 不同类型传送
A 不可给 9, S9, 9V9, 9.9等数值类型赋值。
A 不可接收 9, S9, 9V9, 9.9等数值类型的赋值。
S9 赋值给其他类型,负号变正好。
注释:避免字符X给9赋值 数值以外的值,赋值可正常编译运行,打印会变符号。
1.5.3 截位传送
截元数据给目标:MOVE A(开始位 : 长度) TO B // 按目标B补位,字符右补空额或截取,数值左补0或截取。
数据给目标对应位数:MOVE A TO B(开始位 : 长度) // 将目标对应位数当字符,不足右补空格或超出右截取,对指定的目标范围外的数据无影响。
注释:全角占2位,截取全角(应该从单数开始,避免半位),元数据双数开始默认前面加1位,目标数据不可用双数位截取。
1.6 数据初始化
(1) 初期化:INITIALIZE WORK-AREA. // 将数值初期化为0,字符初期化为空格
注释:未初期化的数据都是LOW-VALUE(包括数值型)
(2) 占位:FILLER
01 WORK-WREC.
03 NUM PIC 999.
03 STR PIC XXX.
03 FILLER PIC XXX.
注释:INITIALIZE无法初期化FILLER项目
(3) 含FILLER项目的初期化:
MOVE SPACE TO WORK-WREC.
INITIALIZE WORK-WREC.
注释:MOVE SPACE 先将所有项目赋值为空格,INITIALIZE将数值项目初期化为0
2. 运算符
2.1 算术运算
2.1.1 加算
(1) A = A1 + A2 + A3
COMPUTE A = A1 + A2 +A3.
ADD A1, A2, A3 GIVING A.
ADD A2, A3 TO A1 GIVING A.
(2) A = A + B.
COMPUTE A = A + B.
ADD B TO A.
2.1.2 减算
(1) COMPUTE A = A1 - A2 - A3. (SUBTRACT A2, A3 FROM A1 GIVING A.)
(2) COMPUTE A = A - B. (SUBTRACT B FROM A.)
2.1.3 乘算
(1) COMPUTE A = A1 * A2 * A3. (MULTIPLY A2, A3 BY A1 GIVING A.)
(2) COMPUTE A = A * B. (MULTIPLY B BY A.)
2.1.4 除算
(1) COMPUTE A = A1 / A2 / A3. (DIVIDE A1 BY A2,A3 GIVING A. DIVIDE A2,A3 INTO A1 GIVING A)
(2) COMPUTE A = A / B. (DIVIDE A BY B. DIVIDE B INTO A.)
2.1.5 余算
(1) DIVIDE A2 INTO A1 GIVING A REMANDER B. // a=a1/a2. b=a1%a2
(2) DIVIDE A1 BY A2 GIVING A REMANDER B. // a=a1/a2. b=a1%a2
注释:余算不能用COMPUTE计算。GIVING后不能是常量,无GIVING则将值赋值给TO后变量
加减算中间值:整数位数=两个数最大整数位+1,小数=最长小数位数(1.2+34.56 > 000.00)
乘算中间值:整数=两个数整数相加,小数=两个数小数相加 (1.2*34.56 > 000.000)
除算中间值:整数=左侧整数+右侧小数,小数=计算式中最长小数 (34.56/1.2 > 000.00)
2.2 比较运算
2.2.1 比较条件
大于 ( > ),关键字 大于 ( IS GREATER THAN )
小于( < ),关键字 小于 ( IS LESS THAN )
大于等于( >= ),关键字 不小于 ( NOT LESS THAN )
小于等于( <= ),关键字 不大于 ( NOT GREATER THAN )
等于( = ),关键字 等于 ( IS EQUAL TO )
不等( NOT = ),关键字 不等 ( NOT EQUAL TO )
2.2.2 符号条件
变量或表达式 是正数 (A IS POSITIVE )(表达式 IS POSITIVE)
变量或表达式 是负数 (A IS NEGATIVE )(表达式 IS NEGATIVE )
变量或表达式 是0 (A IS ZERO )(表达式 IS ZERO)
变量或表达式 不是0 (A IS NOT ZERO )(表达式 IS NOT ZERO)
2.2.3 类型条件
是数值: IS NUMERIC
不是数值:IS NOT NUMERIC
是字母:IS ALPHABETIC
不是字母:IS NOT ALPHABETIC
注释:9型不可用ALPHABETIC判断,
X型空格字母IS ALPHABETIC得到true(LOW-VALUE,1,A1)得到false
X与9型 值是0-9 IS NUMERIC 得到true(LOW-VALUE, 1,A1,空格)得到false
9型,不能与LOW-VALUE判断,需要给外层加一个没有类型的层级,可以判断外层。
定义未初期化的值是LOW-VALUE
2.2.4 复合条件
优先级:NOT > AND > OR
3. 流程控制
3.1 分歧条件
3.1.1 IF条件
(1) IF 条件 语句.
(2) IF 条件1 IF 条件2 语句.
(3) IF 条件 语句(可嵌套IF...END IF) ELSE 语句 END IF.
注释:IF条件以点结束,只有最外层IF可以用点结束,条件可以用AND,OR连接,IF A=B OR C (if a=b or a=c)
3.1.2 EVALUATE条件
(1) 单字段,单判断:EVALUATE 变量 WHEN 常量 语句 ...WHEN OTHER 语句 END EVALUATE.
(2) 单字段,多判断:EVALUATE 变量 WHEN 常量 WHEN 常量 语句 ... END EVALUATE.
(3) 多字段,判断:EVALUATE 变量 ALSO 变量 WHEN 变量 ALSO 变量 语句... END EVALUATE.
注释:传值与判断的变量与常量可以互换,ALSO可以加多个,引数与条件个数与顺序必须一致。
3.2 循环
3.2.1 PERFORM
(1) 外PERFORM
MAIN-RTN.
//1
PERFORM FOR1-RTN THRU FOR1-END.
//3
PERFORM FOR2-RTN.
PERFORM STOP-RTN.
MAIN-EXT.
FOR1-RTN
//2
GO TO FOR1-END.
FOR1-END.
EXIT.
FOR2-RTN.
//4
GO TO FOR2-END.
FOR2-END.
EXIT.
STOP-RTN.
//5
STOP RUN.
STOP-END.
EXIT
注释:有THRU会使GOTO正常返回执行,没有THRU的GOTO会使程序混乱。
EXIT 可以是没有GOTO的不加THRU的过程正常终止。
CONTINUE 和 NEXT SENTENCE相当于没有代码继续执行。
(2) 内PERFROM
PRO-RTN.
处理...
PERFORM
处理...
END-PERFORM.
处理...
PRO-EXT.
EXIT.
注释:内PERFORM主要用于循环
3.2.2 PERFORM UNTIL
(1) UNTIL终止循环方式
方式1:UNTIL 后跟表达式例如(A > 2)( NUM = 0 )
方式2:UNTIL 后跟88层变量 ( UNTIL RTN-E) 相当于判断 RTN-S = 9
77 RTN-S PIC 9 VALUE 0.
88 RTN-E VALUE 9.
(2) 先判断后执行
PERFORM 过程-S THRU 过程-E WITH TEST BEFORE UNTIL 条件.
注释:可省略 WITH TEST BEFORE,先判断UNTIL后条件,满足则不执行循环。
(3) 先执行后判断
PERFORM 过程-S THRU 过程-E WITH TEST AFTER UNTIL 条件.
注释:先执行过程,后判断条件,不满足则不再循环第二次。
(4) 内循环
PERFORM UNTIL 条件 处理... END-PERFORM.
3.2.3 PERFORM TIMES
(1) 外循环
指定循环次数:PERFORM 过程-S THRU 过程-E 整数变量 TIMES.
注释:过程执行中变数变化不影响循环次数,
(2) 内循环
指定循环次数:PERFORM 整数变量 TIMES 处理... END-PERFORM.
3.2.4 PERFORM VARYING
(1) 外循环
PERFORM 过程-S THRU 过程-E VARYING 变量 FROM 初值 BY 步长 UNTIL 条件.
注释:循环过程,变量的开始值是初值,每次循环加步长,直到满足UNTIL条件退出循环。
(2) 内循环
PERFORM VARYING 变量 FROM 初值 BY 步长 UNTIL 条件 处理... END-PERFORM.
3.2.5 循环嵌套
PERFROM POR1-RTN THRU POR1-EXT
VARYING 变量1 FROM 初值1 BY 步长1 UNTIL 条件1
AFTER 变量2 FROM 初值2 BY 步长2 UNTIL 条件2
注释:变量1的循环套变量2的循环。
4. 调子程序(CALL)
外部文件
PROGRAM-ID xxx001
DATA DIVISION.
LINK AGE SECTION.
01 数据 PIC 9.
01 数据 PIC 9.
PROCEDUE DIVISION [USING 数据1, 数据2]
处理...
EXIT PROGRAM.
自身文件
(1) 指定子程序名,子程序没有参数可写USING 和参数,参数个数与顺序必须一致。默认引用传递
过程-S
处理...
CALL 'xxx001' USING 引数1, 引数2
(2) BY CONTENT 值传递
过程-S
处理...
CALL '子程序名' USING BY CONTENT 引数1, 引数2
5. 复写(COPY)重定义(REDEFINES) 重命名(RENAME)
5.1 复写(COPY)
5.1.1 外部数据文件
01 A
03 AA
05 A1 PIC 9.
05 A2 PIC 9.
05 A3 PIC 9.
注释:外部文件只有数据结构,没有部节等信息。
5.1.2 外部过程文件
子过程-S
处理...
子过程-E
EXIT.
注释:外部过程文件只有过程,没有部节信息。
5.1.3 引用外部数据文件
DATA DIVISION.
COPY 外部数据文件名.
COPY 玩不数据文件名 REPLACINT 别名-.
PROCEDUE DIVISION.
MOVE A1 TO XX.
MOVE 别名-A1 TO XX.
5.1.4 引用外部过程文件
PROCEDUE DIVISION.
过程...
PERFORM 子过程-S.
过程...
COPY 子过程文件名.
5.2 重定义(REDEFINES)
03 YMD.
05 YMD-YYYY PIC 9(4).
05 YMD-MM PIC 9(2).
05 YMD-DD PIC 9(2).
03 YMD-2 REDEFINES YMD.
05 YMD-2-YYYYMM PIC X(6).
05 YMD-2-DD PIC X(2).
注释:重定义共享内存地址,一个质变了影响另一个值,不能用在文件节01层,可用在数据单元节01层,层号必须相同,长度相同,重定义子句不能赋初值。
5.3 重命名(RENAME)
03 A
05 YEAR PIC 9(4).
05 MONTH PIC 9(2).
05 DAY PIC 9(2).
03 B
05 NAME PIC X(20).
05 AGE PIC 9(2).
66? C REANME A.?
66? D REANME DAY TO NAME.?
注释:必须在数据部最后定义重命名,只能是xx层,共享内存数据,可以夸层级指定数据范围。
5.4 输出(DISPLAY)
DISPLAY XXX.
DISPLAY 'abce'.
DISPLAY 'abce' XXX.
5.5 输入(ACCEPT)
6. 表(OCCURS)
不能将OCCURS(表,数字)定义在01,66,77,88层
6.1 定长表
6.1.1 单类型
(1) 表名 OCCURS 长度 [TIMES] PIC 数据类型.
(2) 表名 PIC 数据类型 OCCURS 长度 [TIMES].
01 OC1-TABLE.
03 ROW-T1 OCCURS 5 TIMES PIC 9(02).
03 ROW-T1 OCCURS 5 PIC 9(02).
01 OC2-TABLE.
03 ROW-T1 PIC 9(02) OCCURS 5 TIMES.
03 ROW-T1 PIC 9(02) OCCURS 5.
6.1.2 多类型
(1) 表名 OCCURS 长度 [TIMES].
01 OC3-TABLE.
03 ROW-T3 OCCURS 3 TIMES.
05 T-YYYY PIC X(4).
05 T-MM PIC X(2).
03 ROW-D3 OCCURS 3.
05 R-DATA1 PIC X(2).
05 R-DATA2 PIC X(3).
6.2 变长表
表名 OCCURS 最小整数 TO 最大整数 [TIMES] DEPENDING [ON] 9型数据
01 OC4-TABLE.
03 ROW-T4 OCCURS 1 TO 3 TIMES DEPENDING ON CST-N3.
07 OC4-R-T1 PIC X(2).
03 ROW-D4 OCCURS 1 TO 3 TIMES DEPENDING CST-N3.
07 OC4-R-D1 PIC X(2).
03 ROW-E4 OCCURS 1 TO 3 DEPENDING CST-N3.
07 OC4-R-E1 PIC X(2).
注释:根据9型数据的变化,表的长度同时变更,需要在指定表之前指定9型数据的值。
6.3 表的初期化
方式1:初期化表的外层数据型
方式2:VALUE IS指定外层初期値
方式3:表外层重定义有值数据
方式4:循环元素,挨个赋值
DATA DIVISION.
01 OC1-TABLE.
03 ROW-T1 OCCURS 5 TIMES PIC 9(02).
01 OC2-TABLE VALUE IS ZERO.
03 ROW-T2 OCCURS 5 PIC 9(02).
01 OCA-TABLE.
03 FILLER PIC X(20) VALUE ALL 'A'.
01 OC3-TABLE REDEFINES OCA-TABLE.
03 ROW-T3 OCCURS 3 TIMES.
07 T-YEAR PIC X(4).
01 OC4-TABLE.
03 ROW-T4 OCCURS 3 TIMES.
07 T-YYYY PIC X(04).
PROCEDURE DIVISION.
MAIN-RTN.
INITIALIZE OC1-TABLE.
MOVE ZERO TO IDX.
PERFORM UNTIL IDX > 2
INITIALIZE ROW-T4(IDX).
ADD 1 TO IDX
EDN-PERFORM.
MAIN-EXT.
EXIT.
6.4 表元素取值
6.4.1 引用元素本身
MOVE 表名(下标) TO XX.
注释:下标从1开始
6.4.2 不同表的相同属性
MOVE 属性名 OF 表名(下标) TO XX.
7. 文件
7.1 读文件(READ)
7.1.1 环境部
FILE-CONTROL
SELECT 文件别名 ASSIGN 源文件名 ORGNIZATION IS SEQUENTIAL
7.1.2 数据部(文件节)
FILE SECTION.
FD 文件别名 RECORD 行字节数 CHARACTERS.
01 文件行名-REC.
03 文件列名1-DATA PIC X(列长度).
03 文件列名2-CRLF PIC X(换行长度2).
7.1.3 数据部(工作单元节)
WORKING-STORAGE SECTION.
// 方式1:内部数据结构定义
01 WREC.
03 列1 PIC 9(1).
03 列2 PIC 9(2).
// 方式2:外部数据结构引入
COPY 外部数据结构文件名 [REPLACING 别名].
注释:需要在工作单元节正常数据模型的最后引入外部的数据模型
7.1.4 过程部
OPEN INPUT 文件别名.
READ 文件别名 INTO 别名-WREC // 读一行数据,给数据结构
AT END // 当读不到数据,执行下一行代码
MOVE 9 TO XX-STATUS // 将文件状态设置为9(为了判断终止)
[GO TO END]
END READ.
IF 文件列名-CRLF = X'0D0A' // 判断换行符
CONTINUE
ELSE
异常处理
END-IF.
CLOSE 文件别名.
7.2 写文件(WRITE)
7.2.1 环境部
FILE-CONTROL.
SELECT 文件别名 ASSIGN 源文件名 ORGANIZATION IS LINE SEQUENTIAL.
7.2.2 数据部(文件节)
FILE SECTION.
FD 文件别名 RECORD 数据长度 CHARACTERS.
01 文件行-REC PIC X(数据长度)
7.2.3 数据部(工作单元节)
WORKING-STORAGE SECTION.
// 方式1:内部定义
01 WREC.
03 列1 PIC 9(1).
03 列2 PIC 9(2).
// 方式2:外部引用
COPY 外部文件名 [REPLACING 别名].
7.2.4 过程部
OPEN OUTPUT 文件别名.
WRITE 文件行-REC FROM 别名-WREC.
CLOSE 文件别名.
8. DB
8.1 外部数据模型
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 SQL1-VAR.
03 SQL1-DATA.
05 NAME PIC X(10). // 查询字段
05 AGE PIC 9(02).
03 SQL1-WHERE
05 CODE1 PIC A(10). // where条件
03 SQL-1-IND.
05 NAMEI PIC X(10). // 非空标识想买
EXEC SQL END DECLARE SECTION END-EXEC.
8.2 外部SQL文件
8.2.1 单条查询
// 本地文件
MOVE XX TO CODE1.
// SQL文件
EXEC SQL
SELECT 项目1
INTO :NAME,
:AGE
FROM 表名
WHERE 项目2= :CODE1
END-EXEC.
注释:COBOL查询不能处理多条检查结果,单条结果可以用查询,多条结果用游标
8.2.2 多条查询
// 定义打开游标
CUR1-OPEN-RTN
EXEC SQL DECLARE 游标名 CURSOR FOR
SELECT 项目
FROM 表名
WHERE 项目2 = :CODE1
END-EXEC.
CUR1-OPEN-EXT.
EXIT.
// 定义游标赋值
CUR1-FETCH-RTN.
MOVE -1 TO NAMEI. // 初始化空项目判断项目
EXEC SQL
FETCH 游标名 INTO :NAME :NAMEI, AGE
END-EXEC.
IF NAME1 = -1 // 判断项目是否为空,数据库为NULL则不赋值
MOVE LOW-VALUE TO NAME.
CUR1-FETCH-EXT.
EXIT.
// 定义关闭游标
CUR1-CLOSE-RTN.
EXEC SQL CLOSE 游标名 END-EXEC.
CUR1-CLOSE-EXT.
EXIT.
8.3 程序调用
WORKING-STORAGE SECTION.
...
EXEC SQL
COPY 数据模型文件
END-EXEC.
PROCEDUE DIVISION.
MAIN-RTN.
* 打开游标
PERFORM CUR1-OPEN-RTN THRU CUR1-OPEN-EXT.
* 循环游标
PERFORM CUR1-FETCH-RTN THRU CUR1-FETCH-EXT UNTIL XX.
* 关闭游标
PERFORM CUR1-CLOSE-RTN THRU CUR-CLOSE-EXT.
MAIN-EXT.
EXIT.
XXX-XX SECTION. //自定义节
EXEC SQL
COPY SQL文件
END-EXEC.
8.4 插入
XXX-INSERT-RTN.
EXEC SQL
INSERT INTO 表
VALUES
(:NAME,
:AGE)
END-EXEC.
XXX-INSERT-EXT.
EXIT.
8.5 更新
XXX-UPDATE-RTN.
EXEC SQL
UPDATE 表
SET
项目名 = :NAME,
项目名 = :AGE
WHERE 项目名 = :CODE1
END-EXEC.
XXX-UPDATE-EXT.
EXIT.
9. 文件结构
9.1 程序结构
* 标识部 必须 //定义作成者,时间等信息
IDENTIFICATION DIVISION.
...
* 环境部 //用于指定输入输出文件
ENVIRONMENT DIVISION.
...
* 数据部 // 用于定义变量,引入外部变量
DATA DIVISION.
...
* 过程部 // 用于写程序逻辑,引入外部过程
PROCEDUE DIVISION.
...
9.2 标识部(IDENTIFICATION DIVISION)
* 标识部
IDENTIFICATION DIVISION.
* 必须写
PROGRAM-ID 程序ID.
AUTHOR 作成者.
DATE-WRITTEN 程序编写日期.
DATE-COMPILED 程序编译日期.
INSTALLATION 计算机场所.
SECURITY 计算机保密程度(例:HIGH).
9.3 环境部(ENVIRONMENT DIVISION)
* 环境部
ENVIRONMENT DIVISION.
* 配置节 必须写 内有2个段
CONFIGURATION SECTION.
SOURCE-COMPUTER 源计算机(编译程序系统).
OBJECT-COMPUTER 目标计算机(执行程序系统).
* 输入输出节 有文件操作则必须写 内有2个段
INPUT-OUTPUT SECTION.
* 文件控制(提供程序中使用的外部数据)
FILE-CONTROL.
* 按行读取或写出数据
SELECT 文件别名 ASSIGN 源文件名 ORGANIZATION IS LINE SEQUENTIAL.
* 按位读取或写出数据
SELECT 文件别名 ASSIGN 源文件名 ORGANIZATION IS SEQUENTIAL.
* IO控制
IO-CONTROL.
9.4 数据部(DATA DIVISION)
* 数据部
DATA DIVISION.
* 文件节(用于定义文件结构)
FILE SECTION.
* 按行读类型数据
FD 数据名 RECORD 行长度 CHARACTERS.
01 行名 PIC 数据类型(长度).
* 按位读类型数据
FD 数据名 RECORD 行长度 CHARACTERS.
01 行名.
03 行名-DATA PIC 数据类型(长度).
03 行名-CRLF PIC X(2).
* 工作单元节
WORKING-STORAGE SECTION.
* 孤立数据项目
77 单项目 PIC 类型.
* 判断初始值
77 判断项目 PIC 类型 VALUE 0.
* 判断结果值
88 判断结果 VALUE 9.
* 组合项目,以01~49数字开头
01 组合项目.
03 组合项目1 PIC 类型.
03 子组合项目.
05 子组合项目1 PIC 类型.
* 本地存储节(每次程序开始都会初始化)
LOCAL-STORAGE SECTION.
* 连接节(外部数据接收数据名称)
LINKAGE SECTION.
9.5 过程部(PROCEDURE DIVISION)
* 过程部
PROCEDURE DIVISION.
MAIN-RTN.
...
PERFORM PRO1-RTN.
* 整个程序结束
STOP RUN.
MAIN-EXT.
EXIT.
PRO1-RTN.
...
PRO1-EXT.
EXIT.
9.6 其他
9.6.1 字符集
coble识别:0-9 a-z A-Z +-*/,.$;'()<>:'=空格(78个字符和空格)
9.6.2 代码格式
标识区(1-6)
换行区(7)
A区(8-11)
B区(12-72)
注释区(73-80)
9.6.3 命名规范
数据命名 1-30个字符(只能是字母数字连接符)
9.6.4 开发工具
gnucobol工具
cobol2002保存文件自动编号
vscode可以编写代码。
9.6.5 编译命令
编译命令,cobc -x xxx.cob
执行命令,./xxx
编译执行,cobc -x xxx.cob && ./xxx