Linux系统安装Cobol语言及IBM大型机模拟软件Hercules

  COBOL(Common Business-Oriented Language)起源于50年代中期,是一种面向过程的高级程序设计语言,主要用于商业和数据处理领域。经过不断发展和标准化,已成为国际上应用最广泛的商业编程语言之一,在某red书上还有招聘COBOL程序员去日本的帖子,个人害怕噶腰子所以不推荐。COBOL语言具有结构化编程、面向业务处理、高度模块化、易于维护和移植以及强大的数据表示能力等特点,广泛应用于商业数据处理、金融领域以及大型企业应用开发,根据一些统计,例如IJARSCT的数据,43%的银行系统仍在使用COBOL,每天处理的交易额高达3万亿美元,其中包括美国95%的ATM交易和80%的信用卡交易。许多关键的政府系统是用COBOL编写的,这些系统可能涉及社会保障、税务、公共服务等多个方面。例如,美国多个州的失业保险系统就是使用COBOL编写的,面对大量申请时,这些系统需要紧急维护和更新。同时随着技术的发展,许多企业和机构可能希望将旧系统迁移到更现代的技术平台上。然而,由于COBOL编写的系统通常包含大量的业务逻辑和数据,迁移这些系统可能需要巨大的成本和时间投入。因此,许多企业和机构选择继续维护这些遗留系统,而不是完全替换它们。

安装Cobol 

GunCOBOL(也称为GnuCOBOL或OpenCOBOL)是一个开源的COBOL编译器,具有跨平台特性并支持多种操作系统,同时GnuCOBOL允许COBOL程序无缝地调用C语言编写的函数和库,从而增强了COBOL程序的功能和性能,GnuCOBOL可以直接访问所有C库,甚至是C++基础库。同时支持多种数据库和脚本语言的集成,如PostgreSQL、Firebird、ODBC、DB2、Ada、Guile、Lua、Rexx、Javascript、Python等。

sudo apt install gnucobol
cobc -v

安装成功: 

同时这里面会有个错误提示:

cobc: error: no input files

 这里表示cobc(GnuCOBOL 编译器)在运行时没有指定输入文件,在此只是验证安装是否成功,不必理会它。

安装VS Cde插件

安装插件 COBOL Language SupportCOBOL debugger

COBOL Language Support插件

作用

  1. 语法高亮与代码补全:提供COBOL语言的语法高亮功能,使得代码更加易读易懂。同时,支持代码自动补全,提高编写效率。
  2. 错误检查与提示:在编写COBOL代码时,插件能够实时检查语法错误,并提供错误提示,帮助开发者及时发现并修复问题。
  3. 文档与代码结构导航:可能支持快速导航到函数、变量等定义的位置,以及查看相关的文档说明,提升开发效率。
  4. 格式化代码:提供代码格式化功能,帮助开发者保持代码风格的统一和整洁。

COBOL debugger插件

作用

  1. 调试COBOL程序:允许开发者在VS Code中直接调试COBOL程序,无需切换到其他IDE或调试工具。
  2. 设置断点:支持在代码中的指定位置设置断点,当程序执行到断点时自动暂停,方便开发者观察程序的运行状态和变量的值。
  3. 单步执行与查看变量:提供单步执行(步入、步过、步出)等功能,以及查看和修改变量值的能力,帮助开发者深入理解程序的执行流程和逻辑。
  4. 调用栈与线程管理:可能支持查看当前程序的调用栈信息,以及管理多线程程序的调试。
  5. 性能分析:部分高级的COBOL debugger插件可能还具备性能分析功能,可以帮助开发者分析程序的性能瓶颈,优化代码执行效率。

 输出HELLO

 在编写代码前需要先注意一个COBOL语言的特点,就是在写代码之前需要先空5个空格,如下所示:

接下来逐行解析上述代码:

IDENTIFICATION DIVISION.

这一行标志着IDENTIFICATION DIVISION部分的开始,在COBOL程序中,IDENTIFICATION DIVISION用于提供程序的描述性信息,比如程序的名字、作者、日期等,这里啥也没写哈。

PROGRAM-ID. HELLO.

这一行指定了程序的名字为HELLOPROGRAM-IDIDENTIFICATION DIVISION中常用的一个段落,用于标识程序的唯一名称。

PROCEDURE DIVISION.

这一行标志着PROCEDURE DIVISION部分的开始。PROCEDURE DIVISION包含了程序的实际执行语句,即程序要执行的操作。

DISPLAY 'HELLO'.

这一行是程序的实际执行语句之一。DISPLAY是一个COBOL动词,用于在屏幕上显示信息。这里,它用于显示文本HELLO

STOP RUN.

这一行是程序的最后一条执行语句。STOP RUN是一个COBOL动词,用于终止程序的执行。在这个简单的示例中,程序在显示HELLO之后就会停止运行。

以下是完整版代码:

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

编译并运行程序 

cobc -x hello.cob -o hello 
./hello

COBOL语言的类概念

这里定义了一个建议的银行小程序,具有初始化账户信息和显示账户信息的功能: 

       IDENTIFICATION DIVISION.  PROGRAM-ID. BankAccount.DATA DIVISION.WORKING-STORAGE SECTION.01 BankAccount.  05 AccountNumber    PIC 9(10).  05 AccountName      PIC X(25).  05 AccountBalance   PIC 9(7)V99.  PROCEDURE DIVISION.  BEGIN.  PERFORM InitializeAccount  PERFORM DisplayAccountInfo  STOP RUN.  InitializeAccount.  MOVE 1234567890 TO accountNumber  MOVE "GGBond" TO accountName  MOVE 1000.00 TO accountBalance.  DisplayAccountInfo.  DISPLAY "Account Number: " accountNumber  DISPLAY "Account Name: " accountName  DISPLAY "Account Balance: $" accountBalance.

代码运行结果如下: 

代码主要分为五个部分: 

标识部分(IDENTIFICATION DIVISION)

PROGRAM-ID. BankAccount. * 定义程序的标识符为BankAccount。

 在COBOL语言中 * 是单行注释 ,*> 和 <* 之间是多行注释

定义程序的标识符为BankAccount

数据部分(DATA DIVISION)

WORKING-STORAGE SECTION. * 定义工作存储区,用于存储程序运行期间所需的数据。
01 BankAccount. * 定义一个名为BankAccount的记录结构。
05 AccountNumber PIC 9(10). * 定义账户号码,为10位数字。
05 AccountName PIC X(25). * 定义账户名称,为最多25个字符的字符串。
05 AccountBalance PIC 9(7)V99. * 定义账户余额,为最多7位整数和2位小数的数值。

过程部分(PROCEDURE DIVISION)

BEGIN. * 程序开始。
PERFORM InitializeAccount * 调用InitializeAccount段落,用于初始化账户信息。
PERFORM DisplayAccountInfo * 调用DisplayAccountInfo段落,用于显示账户信息。
STOP RUN. * 程序结束。

初始化账户信息(InitializeAccount)

MOVE 1234567890 TO accountNumber * 将账户号码设置为1234567890。
MOVE "GGBond" TO accountName * 将账户名称设置为"GGBond"。
MOVE 1000.00 TO accountBalance. * 将账户余额设置为1000.00。

显示账户信息(DisplayAccountInfo)

DISPLAY "Account Number: " accountNumber * 显示账户号码。
DISPLAY "Account Name: " accountName * 显示账户名称。
DISPLAY "Account Balance: $" accountBalance. * 显示账户余额。

使用COBOL做一个四则运算计算器

       IDENTIFICATION DIVISION.  PROGRAM-ID. Calculator.  DATA DIVISION.  WORKING-STORAGE SECTION.  01 Num1 PIC 9(5)V9(2).  01 Num2 PIC 9(5)V9(2).  01 Result PIC 9(6)V9(2).  01 Operator PIC X.  PROCEDURE DIVISION.  Main-Procedure.  DISPLAY "Enter the first number: ".  ACCEPT Num1.  DISPLAY "Enter the operator (+, -, *, /): ".  ACCEPT Operator.  DISPLAY "Enter the second number: ".  ACCEPT Num2.  EVALUATE TRUE  WHEN Operator = "+"  ADD Num1 TO Num2 GIVING Result  DISPLAY "The result is: ", Result  WHEN Operator = "-"  SUBTRACT Num2 FROM Num1 GIVING Result  DISPLAY "The result is: ", Result  WHEN Operator = "*"  MULTIPLY Num1 BY Num2 GIVING Result  DISPLAY "The result is: ", Result  WHEN Operator = "/"  IF Num2 <> 0 THEN  DIVIDE Num1 BY Num2 GIVING Result  DISPLAY "The result is: ", Result  ELSE  DISPLAY "Error: Division by zero is not allowed."  END-IF  WHEN OTHER  DISPLAY "Error: Invalid operator."  END-EVALUATE.  STOP RUN.

安装Hercules和x3270

 Hercules:是一个开源软件项目,实现了IBM的大型主机体系结构,包括System/370、ESA/390以及最新的64位z/Architecture,Hercules能够精确地模拟各种大型机指令集,并提供详细的系统状态反馈,使得用户能够在本地环境中复现大型机应用,适用于需要进行旧系统迁移测试、教学演示或希望在本地环境下复现大型机应用的场景。

x3270: 一款强大的终端模拟器,它使得用户能够通过个人电脑连接到IBM Mainframe系统,进行远程操作和数据交互,x3270是处理与IBM Mainframe系统相关的任务时的理想工具。它提供了一个高效且便捷的解决方案,使得用户能够轻松地连接到Mainframe系统,执行各种关键业务应用和数据交互操作。

先更新列表 

sudo apt update
sudo apt upgrade

安装 Hercules

sudo apt install hercules

 安装X3270

sudo apt install x3270

找到配置文件路径 

 sudo find / -name hercules.cnf

运行配置文件模拟大型机: 

hercules -f hercules.cnf

hercules 运行成功

可以根据自己需求来修改hercules的配置文件,以下是初始版本的配置文件:

#
#       Sample configuration file for Hercules ESA/390 emulator
##------------------------------------------------------------------------------
#       CPU Configuration
#------------------------------------------------------------------------------CPUSERIAL 002623              # CPU serial numberCPUMODEL  3090                # CPU model numberMODEL     EMULATOR            # STSI returned modelPLANT     ZZ                  # STSI returned plantMANUFACTURER HRC              # STSI returned manufacturerLPARNAME  HERCULES            # DIAG 204 returned lparnameCPUVERID  FD                  # CPU Version IdentificationMAINSIZE  64                  # Main storage size in megabytesXPNDSIZE  0                   # Expanded storage size in megabytesNUMCPU    1                   # Number of CPUs
# NUMVEC    1                   # Number of Vector ProcessorsMAXCPU    8                   # Maximum number of CPUsARCHMODE  ESA/390             # Architecture mode S/370, ESA/390 or z/ArchALRF      DISABLE             # ASN-and-LX-Reuse facilityECPSVM    NO                  # VM Assist : NO or Level (20 recommended)#------------------------------------------------------------------------------
#       OS Tailoring
#------------------------------------------------------------------------------LOADPARM  0120....            # IPL parameterOSTAILOR  LINUX               # OS tailoringSYSEPOCH  1900                # Base year for initial TOD clock
# TZOFFSET  0                   # Using UTC (GMT)#------------------------------------------------------------------------------
#       Hercules Service Processor and Hercules Application Window
#------------------------------------------------------------------------------# MODPATH   /usr/local/lib/hercules     # Where to search for modules
# LDMOD     dyninst tcpip               # Modules to be loaded#------------------------------------------------------------------------------
#       Hercules Service Processor and Hercules Application Window
#------------------------------------------------------------------------------CODEPAGE  default                     # CodePage conversion tableDIAG8CMD  disable                     # OS may not issue commands via DIAG 8HTTPPORT  8081 noauth userid password # HTTP server port
# HTTPROOT  /usr/local/share/hercules/  # HTTP root directoryPANRATE   FAST                        # Panel refresh rate#-------------------------------------------------------------------------------
#       Advanced Hercules Performance Tailoring
#
#       +----------------------------------------------------------------+
#       | Caution:  Modification of these parameters may adversely       |
#       |           affect the performance of the host system            |
#       |           and/or Hercules.                                     |
#       +----------------------------------------------------------------+
#-------------------------------------------------------------------------------# HERCPRIO    0                 # Hercules process runs at Normal priority
# CPUPRIO    15                 # CPU thread(s) run at Low priority
# DEVPRIO     8                 # Device thread(s) run at Below Normal priority
# TODPRIO   -20                 # TOD Clock and timer thread are Time Critical#-------------------------------------------------------------------------------
#       Integrated Hercules I/O Controller
## DEVTMAX      0                # Device threads, 8 on Windows, else unlimitedCNSLPORT  3270                # TCP port number to which consoles connect
# SHRDPORT  3990                # TCP port number for sharing DASD images on# this instance of Hercules (inactive)#   .-----------------------Device number
#   |     .-----------------Device type
#   |     |       .---------File name and parameters
#   |     |       |
#   V     V       V
# ----    ----    --------------------0009    3215-C  / noprompt000C    3505    ./util/zzsacard.bin000D    3525    punch00d.txt ascii000E    1403    print00e.txt crlf001F    3270
#         The following statements are examples. Some of them require
#         user tailoring before being used.
# 0580    3420    ickdsf.ipl
# 0120    3380    mvsv5r.120
# 0121    3380    mvsv5d.121
# 0122    3380    mvswk1.122
# 0140    9336    dosres.140
# 0141    9336    syswk1.141
#
#         The following statement defines 3 3270 devices starting
#             at address 0200
# 0200.3  3270
#
#         The following statement defines 3480 devices
#             at addresses 0280 to 028F
# 280-28F 3480
#
#         The following statement defines 3420 devices
#             at addresses 02C0 & 02C2
# 2C0,2C2 3420
# 0300    3370    sysres.300
#
#         The following statements define 3380 Devices
#             with the CUU substituted in the device file name
#             device file names will be
#                  400.3380, 401.3380, 402.3380 and 403.3380
# 400-403 3380   $(CUU).3380
#
#         CCUU may also be used to define a 4 digit device address
#                 in the name
#                 device file names will be
#                 0480.3380, 0481.3380, 0482.3380 and 0483.3380
# 480-483 3380   $(CCUU).3380
#
# 0700    3270

在保持Hercules模拟运行的同时,新建终端并运行运行命令来启动x3270(必须是在图形界面)

x3270

点击连接,可以使用127.0.0.1作为ip,3270作为端口(比如127.0.0.1:3270)

连接成功:

 右上角还有个小键盘嘞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows Server搭建局域网NTP时间服务器与客户端通实现

1.服务器环境&#xff1a; win11更改注册表 winR输入regedit win11更改注册表 winR输入regedit 2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config&#xff0c;找到Config目录&#xff0c;双击Config目录下的AnnounceFlags&#xff0c;设为5。 3.HKEY_L…

Nginx 配置与优化:常见问题全面解析

文章目录 Nginx 配置与优化:常见问题全面解析一、Nginx 安装与配置问题1.1 Nginx 安装失败问题描述解决方法1.2 Nginx 配置文件语法错误问题描述解决方法二、Nginx 服务启动与停止问题2.1 Nginx 无法启动问题描述解决方法2.2 Nginx 服务无法停止问题描述解决方法三、Nginx 性能…

Http 和 Https 的区别(图文详解)

在现代网络通信中&#xff0c;保护数据的安全性和用户的隐私是至关重要的。HTTP&#xff08;Hypertext Transfer Protocol&#xff09;和 HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是两种常见的网络通信协议&#xff0c;但它们在数据保护方面的能力存在…

snkemake入门

一、背景介绍 snakemake是一种用于自动化流程的开源工具&#xff0c;是一款基于python3的软件。在生物信息学、高通量测序数据分析、大规模数据处理等领域非常流行。 snakemake的官网&#xff1a;Snakemake | Snakemake 8.16.0 documentationhttps://snakemake.readthedocs.i…

自监督学习概述(Self-Supervised Learning,SSL)

自监督学习&#xff08;Self-Supervised Learning&#xff0c;SSL&#xff09;是一种机器学习方法&#xff0c;旨在利用未标记数据进行训练。这种方法通过从数据本身生成伪标签&#xff0c;来创建监督信号&#xff0c;使得模型能够学习有效的数据表示。自监督学习在深度学习领域…

C++ | Leetcode C++题解之第283题移动零

题目&#xff1a; 题解&#xff1a; class Solution { public:void moveZeroes(vector<int>& nums) {int n nums.size(), left 0, right 0;while (right < n) {if (nums[right]) {swap(nums[left], nums[right]);left;}right;}} };

MathType 7.8中文直装版2024年最新图文安装破解教程

MathType公式编辑器 v7.8中文破解版是一款适用于Windows和Macintosh的便捷交互式公式编辑器&#xff0c;可帮助您进行文字处理、网页、桌面设计、演示文稿制作、学习TeX、LaTeX和MathML文档创建。 MathType 7.8这个工具允许用户创建、修改公式和插入多个文档。有了这个软件&…

​CSS技巧专栏:一日一例 13 -纯CSS实现晃晃悠悠背景不停滚动的按钮特效​

CSS技巧专栏:一日一例 13 -纯CSS实现晃晃悠悠背景不停滚动的按钮特效​ 大家好,本篇文章给大家带来一个可爱的按钮,像个小宠物等待你抚摸和奖励,不知道它会不会引起你的关注呢?页面上这样的一个按钮,会不会让你忍不住把鼠标移动过去点一下呢? 本例图片 案例分析 这个…

机械学习—零基础学习日志(高数12——反三角函数)

零基础为了学人工智能&#xff0c;真的开始复习高数 反三角函数很困难&#xff0c;但是当建立了逻辑链条&#xff0c;还是能快速理解的。这个办法就是笛卡尔坐标系。 三角函数与反三角函数的个人理解 sinx与cosx&#xff0c;tanx&#xff0c;secx&#xff0c;其实都可以放在…

白嫖游戏指南,Epic喜加一:《暗影火炬城》

前言 Epic喜加一&#xff1a;《暗影火炬城》《暗影火炬城》简介&#xff1a; 前言 接下来有时间会分享一些游戏相关可以白嫖的资源&#xff0c;包括游戏本体、游戏素材资源等等。 有需要的小伙伴可以关注这个专栏&#xff0c;不定期更新哦&#xff01; 专栏&#xff1a;白嫖…

数据库系统概述

文章目录 数据库基本概念内容重点数据库定义计算机三大主要应用领域 数据管理基础数据与信息数据处理与数据管理 数据库技术的产生、发展数据库系统的组成优势组成部分 数据模型概念类型 数据库三级模式和二级映射目的组成部分 数据库系统设计步骤小结 数据库基本概念 内容 信…

羊大师:夏夜贪凉,但为啥肚子还要‘保暖计划’?

在这个夏夜&#xff0c;当空调与风扇齐飞&#xff0c;冰镇西瓜与凉面共舞之时&#xff0c;你是否也曾有过这样的疑惑&#xff1a;明明热得汗流浃背&#xff0c;为啥老一辈总念叨着“睡觉再热也要给肚子盖被子”&#xff1f;这背后&#xff0c;藏着的可不仅仅是老一辈的固执&…

链路聚合加单臂路由

一、实验目的及拓扑 实验目的&#xff1a;在路由器及交换机之间建立链接聚合&#xff0c;交换机接入两台主机并通过路由器子接口自动分配IP地址&#xff0c;通过单臂路由实现两台主机互联 二、基本配置 1、交换机配置 [S1]vlan batch 10 20 [S1-Eth-Trunk1]dis th # interf…

小型内衣裤洗衣机哪个牌子好?五款万分翘楚机型任你挑选!

在日常生活中&#xff0c;内衣洗衣机已成为现代家庭必备的重要家电之一。选择一款耐用、质量优秀的内衣洗衣机&#xff0c;不仅可以减少洗衣负担&#xff0c;还能提供高效的洗涤效果。然而&#xff0c;市场上众多内衣洗衣机品牌琳琅满目&#xff0c;让我们往往难以选择。那么&a…

AI复活,让老照片动起来【数字永生】

✅ 适宜人群&#xff1a;关注 AI 复活缅怀逝者或以此变现的人群 内容出品人&#xff1a;领航猿1号 更多AI知识分享&#xff1a;https://www.yuque.com/lhyyh/ai/readme?singleDoc 1、前言 AI“复活”实质上是利用人工智能技术&#xff0c;通过对人物已有“形象、声音、语言、…

用Python实现Cmpp协议的教程

引言&协议概述 &#xff08;CMPP&#xff09;是中国移动为实现短信业务而制定的一种通信协议&#xff0c;用于在客户端&#xff08;SP&#xff0c;Service Provider&#xff09;和中国移动短信网关之间传输短消息&#xff0c;有时也叫做移动梦网短信业务。CMPP3.0是该协议…

嵌入式Linux学习: 设备树实验

设备树&#xff08;DeviceTree&#xff09;是一种硬件描述机制&#xff0c;用于在嵌入式系统和操作系统中描述硬件设备的特性、连接关系和配置信息。它提供了一种与平台无关的方式来描述硬件&#xff0c;使得内核与硬件之间的耦合度降低&#xff0c;提高了系统的可移植性和可维…

立创梁山派--移植开源的SFUD和FATFS实现SPI-FLASH文件系统

本文主要是在sfud的基础上进行fatfs文件系统的移植&#xff0c;并不对sfud的移植再进行过多的讲解了哦&#xff0c;所以如果想了解sfud的移植过程&#xff0c;请参考我的另外一篇文章&#xff1a;传送门 正文开始咯 首先我们需要先准备资料准备好&#xff0c;这里对于fatfs的…

【ESP32 IDF 软件模拟SPI驱动 W25Q64存储与读取数组】

目录 SPISPI介绍SPI时序代码编写&#xff08;spi&w25q64&#xff09; 代码调试 SPI SPI介绍 SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外围设备接口&#xff09;是一种高速、全双工、同步的串行通信总线&#xff0c;常用于微控制器与各种外围设备&…

苍穹外卖浏览器前端界面修改

背景&#xff1a; 客户原始方案是期望做一个Spring Boot Vue的饿了么系统&#xff0c;但时间上太仓促&#xff0c;所以建议选择开源的苍穹外码目作为作业提交。 客户接受了建议的方案后&#xff0c;期望对前端页面做一些个性化的定制修改。 过程&#xff1a; 苍穹外卖简单介…