前言
作为改变现代人类生活的85项重大发明之一,IBM大型机被广泛应用于金融、电信、交通、能源等支柱行业。我校拥有IBM新型的64位Z系列大型机一台,是“IBM主机系统大学合作项目”中唯一一所华南地区院校。目前IBM主机系统教育中心(广州)开设5门IBM大型机课程,分别是:《IBM主机系统和操作系统导论》、《CICS事务处理》、《COBOL语言》、《IBM zSeries DB2》、《大型主机系统管理》。这五门课程相关性大,完成所有课程的学生IBM公司将颁发主机教育Professional Certification证书,完成一门以上但未完成所有课程的学生颁发Specialist Certification证书。
这是我校《COBOL语言》课程介绍的全部内容。当初因为好奇选择了这一门课程,正式开课后没想到IBM的大型机的概念完全超出了脑内能够想象的范围。并且由于时代潮流等原因,大型机技术也逐渐出现了式微的态势,Professional Certification大概是想都不用想了。
课程要求所有的实验均在zSeries大型机上完成,原本以为这会是一种类似于UNIX的体验,结果发现IBM的整套理论完全与我们常见的UNIX-like或Windows不同。在这里给大家展示 Hello World 的过程,也算是一种“科普”吧。
我录制了一段带解说的视频,它展示了“登入-创建数据集-编写代码-提交作业-查看结果-登出”的整个流程,可以在下方直接播放。对于不喜欢Flash的读者,可以前往哔哩哔哩动画网观看,av号是av20649933;也可以前往YouTube网观看,这是链接。
全过程
连接至 System z10
课程提供了一份IBM的PCOM(Personal Communications)软件,但是PCOM仅能用于Windows操作系统。事实上我发现需要的是一款3270终端仿真器而已,于是我找到了tn3270 X,它可以在macOS上运行,虽然对于缩放完全不支持,但是体积小、功能全,是个很好的替代品。
连接到主机之后选择TSO,输入用户名和密码,进入TSO/ISPF(Time Sharing Option/Interactive System Productivity Facility)。
这就是我们与z/OS交互的工具。
创建两个数据集
接着创建两个数据集。那么什么是数据集(Data Set)呢?在IBM大型机的概念中,数据集是逻辑上相关的数据集合,顺序数据集类似于一个“文件”,分区数据集类似于一个“目录”。
首先创建一个用来存放代码的数据集。
同理创建一个LOADLIB
数据集存放生成的可执行模块。
编辑代码
COBOL
在COBOL.SOURCE
中新建一个成员,比如COBOL.SOURCE(LAB1)
,并且把代码写进去。这个编辑器的使用感受真是奇妙……
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOCOBOL.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
DISPLAY "HELLO COBOL!".
STOP RUN.
JCL
JCL(Job Control Language)是一种IBM大型机的脚本语言,它告诉系统应该如何运行一系列批处理作业。为了读取SCUT175.COBOL.SOURCE(LAB1)
的源码并把生成的目标输出到SCUT175.LOADLIB(LAB1)
,我们可以这么写JCL:
//COMP1 JOB 1,TF,CLASS=1,MSGLEVEL=(1,1),MSGCLASS=H,NOTIFY=&SYSUID
//STEP1 EXEC PROC=IGYWCLG
//COBOL.SYSIN DD DSN=SCUT175.COBOL.SOURCE(LAB1),DISP=SHR
//LKED.SYSMOD DD DSNAME=SCUT175.LOADLIB(LAB1),DISP=SHR
写完之后,在编辑器下方的Command
处执行SUBMIT
提交这个作业。作业的详情可以返回ISPF首页,然后进入SDSF(System Display and Search Facility)查看详情或者进行更多操作。
CALL
进入ISPF的3.4
,可以列出数据集,查看LOADLIB
中的成员列表,看到LOADLIB(LAB1)
已经出现了。在前面执行CALL
,运行这段程序。
登出
一路按F3
可以退出ISPF,它会问你如何处理操作日志。选择合适的选项,并且确认后就登出了ISPF。再输入并执行LOGOFF
也就登出了TSO,连接随之断开。