You are on page 1of 22

COBOL程序结构包括如在下面的图片显示:

简单介绍这些分区如下:

Sections 是程序逻辑的逻辑细分。段是段落的集合。
Paragraphs 是分区的一段或分立。它可以是用户自定义或预定义的名称后面加上的一段,由零个或
Sentences 是一个或多个语句的组合。句子只出现在程序师。句子,必须结束有一个时期。
Statements 其执行一些处理有意义的COBOL语句。
Characters 是最低的层次,不能再分。
您可以互相涉及的以下示例中的上述条件与COBOL程序:
PROCEDURE DIVISION.
A0000-FIRST-PARA SECTION.
FIRST-PARAGRAPH.
ACCEPT WS-ID - Statement-1 -----|
MOVE '10' TO WS-ID - Statement-2 |-- Sentence - 1
DISPLAY WS-ID - Statement-3 -----|
.
区划
COBOL程序由4个区划组成
鉴定区划
这是每个COBOL程序的第一个也是唯一的强制性分工。编程器和编译器使用该分工鉴定程序。在此处程序
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY 'Welcome to yiibai'.
STOP RUN.
JCL以上COBOL程序执行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
当编译并执行上面的程序它会产生以下结果:
Welcome to Yiibai
环境分区
环境区划用于指定输入和输出文件的程序。它由两部分组成:

配置部分给出了关于在其上的程序被写入和执行的系统信息。它由两段: 
来源计算机:用于编译程序系统。
目标计算机:用于执行程序系统。

输入 - 输出部分,用于指定关于在节目中要使用的文件的信息。它由两段: 
文件控制:给出的程序中使用的外部数据集的信息。
IO控制:提供在程序中使用的文件的信息。
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. XXX-ZOS.
OBJECT-COMPUTER. XXX-ZOS.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FILEN ASSIGN TO DDNAME
ORGANIZATION IS SEQUENTIAL.
数据分区
数据分区是用来定义在该程序中使用的变量。它包括四个部分:

文件部分是用来定义文件的记录结构。
工作 - 存储部分被用于声明在程序中使用临时变量和文件结构。
本地存储部分与工作- 存储部分是一样的。唯一的区别是,变量将被分配并初始化每个程序开始执行
连接段是用来形容那些从外部程序接收到的数据的名称。
COBOL程序
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FILEN ASSIGN TO INPUT.
ORGANIZATION IS SEQUENTIAL.
ACCESS IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD FILEN
01 NAME PIC A(25).
WORKING-STORAGE SECTION.
01 WS-STUDENT PIC A(30).
01 WS-ID PIC 9(5).
LOCAL-STORAGE SECTION.
01 LS-CLASS PIC 9(3).
LINKAGE SECTION.
01 LS-ID PIC 9(5).
PROCEDURE DIVISION.
DISPLAY 'Executing COBOL program using JCL'.
STOP RUN.
JCL以上COBOL程序执行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//INPUT DD DSN=ABC.EFG.XYZ,DISP=SHR
当编译并执行上面的程序它会产生以下结果:
Executing COBOL program using JCL
程序区划
程序分部被用于包含程序的逻辑。它包括使用数据分割定义的变量可执行语句。在这个划分,段落和章节
必须有程序师至少有一个语句。最后语句结束在执行这种划分或者是停止运行它用于调用它采用的是被称
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NAME PIC A(30).
01 WS-ID PIC 9(5) VALUE '12345'.
PROCEDURE DIVISION.
A000-FIRST-PARA.
DISPLAY 'Hello World'.
MOVE 'YiiBai' TO WS-NAME.
DISPLAY "My name is : "WS-NAME.
DISPLAY "My ID is : "WS-ID.
STOP RUN.
JCL以上COBOL程序执行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
当编译并执行上面的程序它会产生以下结果:
Hello World
My name is : YiiBai
My ID is : 12345
原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yii

字符集
'字符'层次是最低的,并且不能被进一步划分。COBOL字符集有78个字符如下所示:
字符 描述
Alphabets
A-Z (Upper
Case)

Alphabets
a-z (Lower
Case)

0-9 Numeric
Space
+ Plus Sign

Minus
- Sign or
Hyphen

* Asterisk

Forward
/ Slash
Currency
$ Sign
, Comma
; Semicolon
Decimal
. Point or
Period

Quotation
" Marks

Left
( Parenthes
is
Right
) Parenthes
is
Greater
>  than

<  Less than


: Colon
Apostroph
' e
Equal
= Sign
代码表
COBOL源程序必须写在编译器可以接受的格式。 COBOL程序都写在COBOL语言编码表。有关于编码片的每一
字符的位置被分为下列五个字段:
位置 字段 描述
1/6/2019 列数 保留的行

它可以有
星号(*)
表示注释
,连字符
7 指示器 ( - ),
表示继续
和斜线
(/)表示
换页
所有的
COBOL分区
,段落和
8/11/2019  A区 一些特殊
的项目必
须首先在A

所有的
COBOL语句
12-72 B区 必须开始
在B区

它可以根
据需要由
73-80 识别区 程序员使

例子
下面的例子显示COBOL代码表:
000100 IDENTIFICATION DIVISION. 000100
000200 PROGRAM-ID. HELLO. 000101
000250* THIS IS A COMMENT LINE 000102
000300 PROCEDURE DIVISION. 000103
000350 A000-FIRST-PARA. 000104
000400 DISPLAY “Coding Sheet”. 000105
000500 STOP RUN. 000106
JCL以上COBOL程序执行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
当编译并执行上面的程序它会产生以下结果:
Coding Sheet
字符串
字符字符串是通过将单个字符组成。一个字符串可以是

注释
文字
COBOL单词
所有字符串必须用分隔符结束。分隔符用于分隔字符串。
经常使用的分隔符:空格,逗号,句号,省略号,左/右括号和引号。
注释
注释不影响程序的执行字符串。它可以是字符的任意组合。
有两种类型的注释:
注释行
注释行可以写在任何列中。编译器不检查注释行的语法和对待它的文档。
注释入口
注释入口是鉴定区划的可选段落的条目。都写在B区和程序员使用它,以供参考。
粗体字母在注释下面的例子中项目:
000100 IDENTIFICATION DIVISION. 000100
000150 PROGRAM-ID. HELLO. 000101
000200 AUTHOR. YIIBAI. 000102
000250* THIS IS A COMMENT LINE 000103
000300 PROCEDURE DIVISION. 000104
000350 A000-FIRST-PARA. 000105
000360/ First Para Begins - Documentation Purpose 000106
000400 DISPLAY “Comment line”. 000107
000500 STOP RUN. 000108
JCL以上COBOL程序执行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
当编译并执行上面的程序它会产生以下结果:
Comment Line
文字
文字是一个常数,直接硬编码在程序中。在下面的示例中“Hello World”的文字。
PROCEDURE DIVISION.
DISPLAY 'Hello World'.
有两种类型的文字:
字母数字文字
字母数字文字都包含在引号或单引号。长度可以长达160个字符。单引号或引号可以是文字,只有当它配
示例
下面的例子展示了有效和无效的字母数字字面值:
Valid:
‘This is valid’
"This is valid"
‘This isn’’t invalid’

Invalid:
‘This is invalid”
‘This isn’t valid’
数字文本
数字文字是数字从0到9,+, - 或小数点的组合。长度可以长达18个字符。符号不能是最右边的字符。小
示例
下面的例子展示了有效和无效的数字文本:
Valid:
100
10.9
-1.9

Invalid:
1,00
10
10.9-
COBOL词
COBOL词是可以保留字,或者用户自定义的字符串。长度可以长达30个字符。
用户自定义
用户定义的词被用于命名的文件,数据,记录,段落名称和段。字母,数字和连字符被允许在形成用户定
保留字
保留字是在COBOL语言预定义的词。不同类型于我们经常使用如下所示的保留字:

关键字如 ADD, ACCEPT, MOVE等


特殊字符的词如 +, -, *, <, <=, 等
形象化的常数是恒定值,例如ZERO, SPACES等象征常量的所有恒定值被输入的下表中:
形象常量
象征常量 描述

一个或多
个字符,
HIGH- 在最高的
VALUES 位置以降

一个或多
LOW- 个字符在
VALUES 二进制表
示的零

一个或多
ZERO/ZERO 个零取决
ES 于变量的
大小

一个或多
SPACES 个空格

单引号或
QUOTES 双引号

ALL 用文字填
literal 充数据项

原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yii
有一些任务需要执行一遍又一遍,如读取文件中的每个记录,直到结束为止。以下是在COBOL中使用的循

执行直通
执行直到
执行时间
进行时变
执行直通
完成直通所使用的序列在给第一个和最后一段的名字来执行一系列段落。执行最后一段控件后会返回。
一行进行
里面的PERFORM语句将直到结束,PERFORM达成执行。
语法
以下是语法在一行进行:
PERFORM
DISPLAY 'HELLO WORLD'
END-PERFORM.
多行执行
语句是在一个段中执行,然后控制被转移到其他段或部分。
语法
以下是多行执行的语法:
PERFORM PARAGRAPH1 THRU PARAGRAPH2
例子
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
A-PARA.
PERFORM DISPLAY 'IN A-PARA'
END-PERFORM.
PERFORM C-PARA THRU E-PARA.
B-PARA.
DISPLAY 'IN B-PARA'.
STOP RUN.
C-PARA.
DISPLAY 'IN C-PARA'.
D-PARA.
DISPLAY 'IN D-PARA'.
E-PARA.
DISPLAY 'IN E-PARA'.
JCL以上COBOL程序执行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
当编译并执行上面的程序它会产生以下结果:
IN A-PARA
IN C-PARA
IN D-PARA
IN E-PARA
IN B-PARA
执行直到
在执行之前,段将被执行,直到给定的条件为真。与之前的测试是默认的状态,表示条件在一段语句执行
语法
以下是执行直到的语法:
PERFORM A-PARA UNTIL COUNT=5
PERFORM A-PARA WITH TEST BEFORE UNTIL COUNT=5

PERFORM A-PARA WITH TEST AFTER UNTIL COUNT=5


例子
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-CNT PIC 9(1) VALUE 0.
PROCEDURE DIVISION.
A-PARA.
PERFORM B-PARA WITH TEST AFTER UNTIL WS-CNT>3.
STOP RUN.
B-PARA.
DISPLAY 'WS-CNT : 'WS-CNT.
ADD 1 TO WS-CNT.
JCL以上COBOL程序执行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
当编译并执行上面的程序它会产生以下结果:
WS-CNT : 0
WS-CNT : 1
WS-CNT : 2
WS-CNT : 3
执行时期
在执行时期,段将被执行指定的次数。
语法
以下是执行时间的语法:
PERFORM A-PARA 5 TIMES.
例子
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
A-PARA.
PERFORM B-PARA 3 TIMES.
STOP RUN.
B-PARA.
DISPLAY 'IN B-PARA'.
JCL以上COBOL程序执行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
当编译并执行上面的程序它会产生以下结果:
IN B-PARA
IN B-PARA
IN B-PARA
执行时变
在执行不同的段会直到,直到短语变成真的条件来执行。
语法
以下是进行改变的语法:
PERFORM A-PARA VARYING A FROM 1 BY 1 UNTIL A=5.
例子
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-A PIC 9 VALUE 0.
PROCEDURE DIVISION.
A-PARA.
PERFORM B-PARA VARYING WS-A FROM 1 BY 1 UNTIL WS-A=5
STOP RUN.
B-PARA.
DISPLAY 'IN B-PARA ' WS-A.
JCL执行以上COBOL程序。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
当编译并执行上面的程序它会产生以下结果:
IN B-PARA 1
IN B-PARA 2
IN B-PARA 3
IN B-PARA 4
GO TO 语句
GO TO语句用于改变程序的执行流程。在GO TO语句传递仅在前进方向去。它用于退出该段。不同类型的G
无条件GO TO
GO TO para-name.
条件GO TO
GO TO para-1 para-2 para-3 DEPENDING ON x.
如果“x”等于1,那么控制将被传递到第一段和如果'x'是等于2,则控制将被转移到第二个段落等等。
例子
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-A PIC 9 VALUE 2.
PROCEDURE DIVISION.
A-PARA.
DISPLAY 'IN A-PARA'
GO TO B-PARA.
B-PARA.
DISPLAY 'IN B-PARA '.
GO TO C-PARA D-PARA DEPENDING ON WS-A.
C-PARA.
DISPLAY 'IN C-PARA '.
D-PARA.
DISPLAY 'IN D-PARA '.
STOP RUN.
JCL以上COBOL程序执行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
当编译并执行上面的程序它会产生以下结果:
IN A-PARA
IN B-PARA
IN D-PARA
原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yii
面加上的一段,由零个或多个句子/项。
束有一个时期。

鉴定程序。在此处程序唯一的ID是强制性的段落。程序ID指定的程序名称。程序名称可以由1〜30个字符组成。
始化每个程序开始执行时间。

在这个划分,段落和章节名称是user-defined。
用于调用它采用的是被称为程序的程序或退出程序。
链接:https://www.yiibai.com/cobol/cobol_program_structure.html#article-start
表。有关于编码片的每一行80个字符的位置。
000105
000105

000107

以是文字,只有当它配对的一部分。文字的开始和结尾都是一样的无论是单引号或引用。

不能是最右边的字符。小数点不应该出现在结尾。
字符被允许在形成用户定义的单词。但不能使用COBOL保留字

链接:https://www.yiibai.com/cobol/cobol_basic_syntax.html
下是在COBOL中使用的循环语句:
后一段控件后会返回。

表示条件在一段语句执行前检查。
退出该段。不同类型的GO TO语句是:

移到第二个段落等等。
链接:https://www.yiibai.com/cobol/cobol_loop_statements.html
1〜30个字符组成。

You might also like