COBOL 程序结构

news/2023/12/5 22:35:47

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 DDNAMEORGANIZATION 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 FILEN01 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
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO

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

Hello World
My name is : TutorialsPoint
My ID is : 12345

http://www.ppmy.cn/news/75329.html

相关文章

办公室想装修?玻璃隔断让你的办公区域成为艺术品!

玻璃隔断是现代办公室装修中非常受欢迎的设计元素。它们不仅可以实现空间区分,还能为办公区带来现代感和艺术气息。 玻璃隔断的优点 1. 明亮:玻璃隔断可以让自然光线进入整个房间,使空间变得更加明亮,有益于工作效率和员工的情绪健…

android/ios 一键抽取硬编码字符串

由于老项目 做国际化困难,抽取繁琐 最终实在蛋疼 最终开发插件来解决 android studio 插件 一键抽取硬编码字符串 xcode 一键抽取硬编码字符串 环境配置android studio ,appcode idea 环境类似1.安装插件 插件下载点击 2. 配置生成文件路径 android 就是string.xml ios Loca…

Springcloud1----->Hystrix

目录 雪崩问题服务降级原理实践order降级处理user降级处理 服务熔断原理实践 hystrix,英文意思是豪猪,全是是刺,一种保护机制,即熔断器。 主页:https://github.com/Netflix/Hystrix/ 雪崩问题 在微服务中,…

GoLand 2023 Crack函数的支持

GoLand 2023 Crack函数的支持 增加了对“MIN_BY”和“MAX_BY”函数的支持。 更新了Prisma插件previewFeatures以包含jsonProtocol。 改进了与角度相关的符号的文档-添加了更多关于管道、特性和指令的文档。当您将鼠标悬停在符号上或调用显示文档完成时(F1/CtrlQ),您…

SVN 修改URL路径-使用重新定位(relocate)命令和找不到问题解决

当svn服务器url发生变更,又不想在本地重新进行checkout操作,这时候可以使用svn relocate命令进行url的重新定位; 在windows下以TortoiseSVN为例,在仓库文件夹上右键,TortoiseSVN-(重新定位)relocate, 1、Windows TortoiseSVN客户端: 在工作复本的根目录上右键->TortoiseSV…

是面试官放水,还是公司实在是太缺人?这都没挂,华为原来这么容易进...

华为是大企业,是不是很难进去啊?” “在华为做软件测试,能得到很好的发展吗? 一进去就有9.5K,其实也没有想的那么难” 直到现在,心情都还是无比激动! 本人211非科班,之前在字节和腾…

【笔试强训选择题】Day17.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 前言 目…

深度学习实战项目(一)-基于cnn和opencv的车牌号识别

深度学习实战项目(一)-基于cnn和opencv的车牌号识别 网上大部分是关于tensorflow,使用pytorch的比较少,本文也在之前大佬写的代码的基础上,进行了数据集的完善,和代码的优化,效果可比之前的pytorch版本好一点。 数据…

SpringMVC学习总结(路由映射、参数传递、转发和重定向...)

目录 1. MVC简介 2. SpringMVC简介 3. 路由映射注解 3.1 RequestMapping 3.2 GetMapping与PostMapping 4. 接收前端传递参数 4.1 接收单/多个参数 4.2 接收对象 4.3 接收JSON对象 4.4 后端参数重命名/映射 4.5 设置参数必传/非必传 4.6 获取URL中的参数 4.7 获取文…

PHP程序员的工作内容复杂吗?如何更快完成交代的任务?

我们城里人大部分都是高富帅 ,你看那些想进入程序员行业的人,哪个不是冲着高薪而来的。互联网已经深入到我们生活的方方面面,比如你去购物啊,聊天啊,你玩游戏啊,哪个不是我们程序员经历过多少日日夜夜加班给…

mybatis的一对一与一对多

我现在有两个表,是一对多的关系,CREATE TABLE repayment_plan ( ,针对一个还款计划可多次进行还款; 下面请帮我映射成两个bean对象 ID bigint(20) NOT NULL COMMENT 主键, CONSUMER_ID bigint(20) DEFAULT NULL COMMENT 发标人用户标识, USER_NO varchar(50) DEFAULT NULL …

【leetcode】1373. 二叉搜索子树的最大键值和

二叉搜索子树的最大键值和 问题描述问题简单分析提交之旅第一次提交-失败第二次提交-失败第三次提交-成功 问题描述 二叉搜索子树的最大键值和 给你一棵以 root 为根的 二叉树 ,请你返回 任意 二叉搜索子树的最大键值和。 二叉搜索树的定义如下: 任意节…

接口测试的流程?怎么设计接口测试用例?两张图给你讲的明明白白

目录 一、简介 二、接口测试的流程 三、为什么要写用例 四、接口用例设计 一、简介 在开始接口测试之前,我们想一下,接口测试的流程是什么?说到这里,有些人就会产生好奇和疑问,心里mmp:接口测试要什么流…

Android Qcom USB Driver学习(十一)

该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) 基于TI的Firmware Update固件升级的流程分析usb appliction layers的数据 USB Protocol Package ①/② map to check password correct Package Format: Byte[0] Report Id Byte[1] Valid L…

阿里三面过了,却无理由挂了,HR反问一句话:为什么不考虑阿里?

进入互联网大厂一般都是“过五关斩六将”,难度堪比西天取经,但当你真正面对这些大厂的面试时,有时候又会被其中的神操作弄的很是蒙圈。 近日,某位测试员发帖称,自己去阿里面试,三面都过了,却被…

IEEE独立出版 | 第七届计算机科学与智能控制国际会议(ISCSIC 2023)

会议简介 Brief Introduction 第七届计算机科学与智能控制国际会议(ISCSIC 2023) 会议时间:2023年10月27日-29日 召开地点:中国南京 大会官网: ISCSIC 2023-2023 7th International Symposium on Computer Science and Intelligent Control(I…

20230520查找中国移动的APP在RK3566下调用UVC摄像头出错

20230520查找中国移动的APP在RK3566下调用UVC摄像头出错 2023/5/20 23:34 SDK:Android12RK3566平台 android12 UVC camera 没插摄像头,但是/dev/video0-13标号被占用,是啥原因导致的 板子上也没有摄像头 【板子没有接CSI/MIPI接口的I2C通道…

如何快速搭建springboot项目

在IntelliJ IDEA中,可以按照以下步骤快速创建一个Spring Boot项目: 1. 打开 IntelliJ IDEA,点击欢迎界面上的"Create New Project"或者从菜单栏选择"File" -> "New" -> "Project"。 2. 在创…

C++ CS留学生期末答疑2

#include <iostream>using namespace std;int main() {int i 0;while (i < 10) {if (i % 2 0) {continue;}printf("%d", i);i i 1;}return 0; }#include <iostream>这是一个预处理指令&#xff0c;用于包含输入输出流库&#xff0c;使我们可以使用…

shell——免交互

一、Here Document 免交互 概述 常用的交互程序&#xff1a;read&#xff0c;ftp&#xff0c;passwd&#xff0c;su&#xff0c;sudo。 cat也可配合免交互的方式重定向输出到文件。 作用&#xff1a; 使用I/O重定向的方式将命令列表提供给交互式程序&#xff1b;标准输入的…
最新文章