Cobol学习笔记(整理中80%)

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 不同类型传送

(1) A 不可给 9, S9, 9V9, 9.9等数值类型赋值。

(2) A 不可接收 9, S9, 9V9, 9.9等数值类型的赋值。

(3) 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

注释:INITIALIZE无法初期化FILLER项目

(3) 含FILLER项目的初期化:

注释:MOVE SPACE 先将所有项目赋值为空格,INITIALIZE将数值项目初期化为0

2. 运算符

2.1 算术运算

2.1.1 加算

(1) COMPUTE A = A1 + A2 + A3. (ADD A1, A2, A3 GIVING A.) (ADD A2, A3 TO A1 GIVING A.)

(2) 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.
  LINKAGE 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.

注释:77层变量,可以直接 set 变量名 to true; 将88层设置为真值

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可以编写代码。

  • 5
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值