- COBOL 教程
- COBOL - 首页
- COBOL - 概述
- COBOL - 环境设置
- COBOL - 程序结构
- COBOL - 基本语法
- COBOL - 数据类型
- COBOL - 基本动词
- COBOL - 数据布局
- COBOL - 条件语句
- COBOL - 循环语句
- COBOL - 字符串处理
- COBOL - 表格处理
- COBOL - 文件处理
- COBOL - 文件组织
- COBOL - 文件访问模式
- COBOL - 文件处理动词
- COBOL - 子程序
- COBOL - 内部排序
- COBOL - 数据库接口
- COBOL 有用资源
- COBOL - 问答
- COBOL - 快速指南
- COBOL - 有用资源
COBOL - 程序结构
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 -----| .
部分(Divisions)
COBOL 程序由四个部分组成。
标识部分(Identification Division)
它是每个 COBOL 程序的第一个也是唯一必须的部分。程序员和编译器使用此部分来识别程序。在此部分中,PROGRAM-ID 是唯一必须的段落。PROGRAM-ID 指定程序名称,该名称可以包含 1 到 30 个字符。
尝试使用在线的实时演示选项尝试以下示例。
实时演示IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. PROCEDURE DIVISION. DISPLAY 'Welcome to Tutorialspoint'. STOP RUN.
以下是执行上述 COBOL 程序的JCL。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
编译并执行上述程序后,将产生以下结果:
Welcome to Tutorialspoint
环境部分(Environment Division)
环境部分用于向程序指定输入和输出文件。它包含两个节:
配置节(Configuration section) 提供有关编写和执行程序的系统的信息。它包含两个段落:
源计算机 - 用于编译程序的系统。
目标计算机 - 用于执行程序的系统。
输入输出节(Input-Output section) 提供有关程序中要使用的文件的信息。它包含两个段落:
文件控制 - 提供程序中使用的外部数据集的信息。
I/O 控制 - 提供程序中使用的文件的信息。
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.
数据部分(Data Division)
数据部分用于定义程序中使用的变量。它包含四个节:
文件节(File section) 用于定义文件的记录结构。
工作存储节(Working-Storage section) 用于声明程序中使用的临时变量和文件结构。
局部存储节(Local-Storage section) 与工作存储节类似。唯一的区别是每次程序开始执行时都会分配和初始化变量。
连接节(Linkage section) 用于描述从外部程序接收的数据名称。
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.
执行上述 COBOL 程序的JCL如下:
//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
过程部分(Procedure Division)
过程部分用于包含程序的逻辑。它使用数据部分中定义的变量包含可执行语句。在此部分中,段落和节名称是用户定义的。
过程部分中必须至少有一个语句。此部分中结束执行的最后一个语句是STOP RUN(用于调用程序)或EXIT PROGRAM(用于被调用程序)。
实时演示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 'TutorialsPoint' TO WS-NAME. DISPLAY "My name is : "WS-NAME. DISPLAY "My ID is : "WS-ID. STOP RUN.
执行上述 COBOL 程序的JCL:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
编译并执行上述程序后,将产生以下结果:
Hello World My name is : TutorialsPoint My ID is : 12345