codecamp

COBOL 程序结构

COBOL程序结构由部(division)组成,如下图所示:

程序结构

这些部简介如下:

  • Sections(节)是程序逻辑的逻辑细分。节是段落的集合。

  • Paragraphs(段)是一个节或部的细分。它可以是用户定义或预定义的名称,后面跟一个句点,由零个或多个句子/条目组成。

  • Sentences(句子)是一个或多个声明的组合。句子只出现在过程部(Procedure division)。一个句子必须以句点结束。

  • 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  -----|
.

部(Division)

COBOL程序包括四个部。

标识部(Identification Division)

这是每一个COBOL程序的第一个也是唯一强制要求的部。程序员和编译器使用这个部来识别该程序。在这个部中,PROGRAM-ID是唯一强制要求的段落。PROGRAM-ID指定的程序名可包含1至30个字符。

试试下面的例子。

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY 'Welcome to Tutorialspoint'.
STOP RUN.

下面是JCL执行上面的COBOL程序。

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO

当你编译和执行上面的程序时,会产生以下结果:

Welcome to Tutorialspoint

环境部(Environment Division)

环境部用于指定程序的输入和输出文件。它由两个节组成:

  • 配置节(Configuration section)可提供有关编写和执行程序的系统信息。它由两个段组成:

    源计算机(source computer):用于编译程序的系统。

    对象计算机(object computer):用于执行程序的系统。

  • 输入输出节(Input-Output section)提供有关程序中要使用的文件的信息。它由两个段组成:

    文件控制(file control):提供在程序中使用的外部数据集的信息。

    IO控制(I-O control):提供在程序中使用的文件的信息。

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.

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

过程部(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.

JCL执行上述COBOL程序:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO

当你编译和执行上面的程序时,会产生以下结果:

Hello World
My name is : TutorialsPoint
My ID is : 12345
COBOL 环境设置
COBOL 基本语法
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

COBOL 资源

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }