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

    一个 COBOL 程序由四个部分组成。

    鉴定科

    它是每个 COBOL 程序的第一个也是唯一一个强制划分。程序员和编译器使用这个划分来识别程序。在这个部分中,PROGRAM-ID 是唯一的强制性段落。PROGRAM-ID 指定可以包含 1 到 30 个字符的程序名称。
    
    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO.
    PROCEDURE DIVISION.
    DISPLAY 'Welcome to Jc2182'.
    STOP RUN.
    
    下面给出的是JCL执行上述 COBOL 程序。
    
    //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
    //STEP1 EXEC PGM = HELLO
    
    当您编译并执行上述程序时,它会产生以下结果 -
    
    Welcome to Jc2182
    

    环境科

    环境划分用于指定程序的输入和输出文件。它由两部分组成 -
    • Configuration section提供有关编写和执行程序的系统的信息。它由两段组成 -
      • 源计算机 - 用于编译程序的系统。
      • 对象计算机 - 用于执行程序的系统。
    • Input-Output section提供有关要在程序中使用的文件的信息。它由两段组成 -
      • 文件控制 - 提供程序中使用的外部数据集的信息。
      • IO 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.
    

    数据部

    数据除法用于定义程序中使用的变量。它由四个部分组成 -
    • File section用于定义文件的记录结构。
    • Working-Storage section用于声明程序中使用的临时变量和文件结构。
    • Local-Storage section类似于 Working-Storage 部分。唯一的区别是每次程序开始执行时都会分配和初始化变量。
    • Linkage section用于描述从外部程序接收到的数据名称。
    COBOL Program
    
    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
    

    手续科

    程序划分用于包含程序的逻辑。它由使用数据划分中定义的变量的可执行语句组成。在此划分中,段落和节的名称是用户定义的。
    程序部分中必须至少有一个语句。结束此部门执行的最后一条语句是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 'Jc2182' 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 : Jc2182
    My ID is : 12345