前言背景

现在程序员行业挺抢手,Java, Python 等等程序语言各大公司都有很大的需求,当中有一个行业,其实比较容易忽略,就是银行的程序员。银行系统其实有各种程序员需要,无论 Java, Python, 还是 Cobol 都很需要人手的。可是刚毕业的宝宝们大多选 Java,Python 这些,Cobol 却没啥人问津,加上刚毕业学生其实也不知道如何学 Cobol。

开始之前先简单比较一下:主机程序员 跟 Java 程序员

主机程序员 Java 程序員
流行程度 非常不流行 非常流行
行业 银行,大型保险公司,政府 各种公司都需要
工资 100+30% 100%
竞争 没啥人会,抢的人不多 大多人都会,很多人跟你抢
技术 基本 Cobol,JCL,DB2 除了基本Java,要求使用多种框架技术 e.g. Spring, MyBatis, Hibernate, Database
前景

10-20年,只要系统没更换,平常比较稳定

比较长远

今天老程序员在这里分享一下,如何自己搭建一个学习主机开发的环境。

安装前规划

安装 z/OS 其实有很多选择

可以安装在虚拟器,也可以装在实体机器上

可以在 Windows 上安装,也可以在 Linux 上安装

z/OS 是操作系统,有不同版本,MVS -> OS380 -> OS390 -> z/OS

MVS 是开源可以免费取得的,一般公司使用的是 IBM z/OS 最新版本 z/OS V2R4

普通学习机用 z/OS V1R10 也足够

(如果是学习资金非常充足的,可以到 IBM 官网申请 zPDT 个人版学习系统,也是 Linux)

这里示范的是用实体机器 Ubuntu 系统,自行编译 hercules,再跑 z/OS V1R10

实体机器: Xeon E3 1240 V2 老 CPU + 32GB RAM + 120GB SSD + Ubuntu 20.04 LTS

实体机器 IP: 192.168.50.15

kazuya@ubuntu: ~
$ uname -a
Linux ubuntu 5.4.0-81-generic #91-Ubuntu SMP Thu Jul 15 19:09:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
kazuya@ubuntu: ~
$ ifconfig
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.50.15  netmask 255.255.255.0  broadcast 192.168.50.255inet6 fe80::76d0:2bff:fe28:c17f  prefixlen 64  scopeid 0x20<link>ether *****************  txqueuelen 1000  (Ethernet)RX packets 310  bytes 39339 (39.3 KB)RX errors 0  dropped 59  overruns 0  frame 0TX packets 203  bytes 26107 (26.1 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0device interrupt 20  memory 0xf7400000-f7420000  lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 27  bytes 3059 (3.0 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 27  bytes 3059 (3.0 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

另外,还要自己定2个 IP 用来给 Ubuntu 和 z/OS 之间内部联系,可以随便选,按 Hercules 官网教学,定为

192.168.200.1  (这个给 z/OS 用)

192.168.200.2 (这个给 Ubuntu 用)

Ubuntu 要连去 z/OS,连 192.168.200.1 就可以

例如: 在 Ubuntu 里要连去 z/OS ftp

kazuya@ubuntu: ~
$ ftp 192.168.200.1

虽然 192.168.200.1/2 是内部联系,如果有另外一个机器,例如,另一台实体机器 Mac (IP 192.168.50.11),要连到 Ubuntu 内的 z/OS,也可以容易配置

下一步就是取得所需的 z/OS,这个自己发灰,下面是 z/OS V1R10 v1.10 版本

包括了 DB2, WAS, IMS, Java 等等,可以挺全面的学习

网上大多数是带副档名 e.g. .CCKD 有没有都是一样

这些劵,下了在 Linux 或 Windows 都是通用的

最底下的 hercules.cnf 是 Hercules 的配置档,是灵魂

而 UAPP01, USRG01, UTMP01 是自己建立的劵, 用来在 z/OS 放自己的东西

UAPP01 一会用来放 HFS 新版的 Java SDK J8.0

USRG01 放自己写的 Program, Script 等等

UTMP01 用来放暂存,例如解压档暂存

SYSCPK 是額外的編譯工具劵,例如學習 RPG 等等

可以用 hercules 自带的工具 dasdinit 来建立新的劵

例如:建立 USRG01 3390 是劵的格式带不同格式,3390 大概可以装 900MB 东西

dasdinit -a /home/kazuya/zos/USRG01 3390 USRG01

zzsacard.bin 是一个还原小工具,Hercules 里自带的,hercules.cnf 里面要配置,所以,复制出来,.cnf 统一指向本地目录

kazuya@ubuntu: ~/zos
$ pwd
/home/kazuya/zos
kazuya@ubuntu: ~/zos
$ ls -l | grep kazuya
-rwxrwxrwx 1 kazuya kazuya  529743872 Aug 22 22:08 SARES1
-rwxrwxrwx 1 kazuya kazuya   30970765 Aug 22 22:08 SYSCPK
-rwxrwxrwx 1 kazuya kazuya  226248596 Aug 22 22:08 ZACIC1
-rwxrwxrwx 1 kazuya kazuya  170905505 Aug 22 22:08 ZADB81
-rwxrwxrwx 1 kazuya kazuya  308625683 Aug 22 22:08 ZADB82
-rwxrwxrwx 1 kazuya kazuya 1111670784 Aug 22 22:08 ZADB83
-rwxrwxrwx 1 kazuya kazuya 1107853312 Aug 22 22:08 ZADB84
-rwxrwxrwx 1 kazuya kazuya  201001999 Aug 22 22:08 ZADB91
-rwxrwxrwx 1 kazuya kazuya  835317373 Aug 22 22:08 ZADB92
-rwxrwxrwx 1 kazuya kazuya  565875480 Aug 22 22:08 ZADIS1
-rwxrwxrwx 1 kazuya kazuya  459112448 Aug 22 22:08 ZADIS2
-rwxrwxrwx 1 kazuya kazuya  288735232 Aug 22 22:08 ZADIS3
-rwxrwxrwx 1 kazuya kazuya  801079296 Aug 22 22:08 ZADIS4
-rwxrwxrwx 1 kazuya kazuya  690978816 Aug 22 22:08 ZADIS5
-rwxrwxrwx 1 kazuya kazuya  933675008 Aug 22 22:08 ZADIS6
-rwxrwxrwx 1 kazuya kazuya  242821373 Aug 22 22:08 ZAIMS1
-rwxrwxrwx 1 kazuya kazuya  878364452 Aug 22 22:08 ZAPRD1
-rwxrwxrwx 1 kazuya kazuya  716280541 Aug 22 22:08 ZAPRD2
-rwxrwxrwx 1 kazuya kazuya  968475738 Aug 22 22:08 ZAPRD3
-rwxrwxrwx 1 kazuya kazuya      34307 Aug 22 22:08 ZAPRD4
-rwxrwxrwx 1 kazuya kazuya  564331245 Aug 22 22:08 ZARES1
-rwxrwxrwx 1 kazuya kazuya  403303341 Aug 22 22:08 ZARES2
-rwxrwxrwx 1 kazuya kazuya   94654623 Aug 22 22:08 ZASYS1
-rwxrwxrwx 1 kazuya kazuya  682986497 Aug 22 22:08 ZAUSS1
-rwxrwxrwx 1 kazuya kazuya 1296174118 Aug 22 22:08 ZAWAS1
-rwxrwxrwx 1 kazuya kazuya 1520287744 Aug 22 22:08 ZAWAS2
-rwxrwxrwx 1 kazuya kazuya 1691123712 Aug 22 22:08 ZAWAS3-rwxrwxr-x 1 kazuya kazuya       2997 Aug 22 09:37 hercules.cnf
-rw-rw-r-- 1 kazuya kazuya      29520 Aug 21 21:47 zzsacard.bin
-rwxrwxrwx 1 kazuya kazuya  949663232 Aug 22 22:02 UAPP01
-rwxrwxrwx 1 kazuya kazuya  949663232 Aug 22 10:13 USRG01
-rwxrwxrwx 1 kazuya kazuya  949663232 Aug 22 22:02 UTMP01

编译 hercules

Hercules 是一个模拟器,装了可以跑不同的 z/OS 操作系统,就像在 Windows 上要跑 Linux,可以装 VMWare Player, Virtual Box 或自带的 Windows Hyper-V。

目前 Hercules 带2个版本,官网的 Hercules 已经没更新了,不过还是可用的,最新是 3.13。

http://www.hercules-390.eu

建议使用由 SDL 维护的版本,名字叫 hyperion,SDL 全名叫 Software Development Laboratories 是一个叫 David 的人维护,SDL 也开发 GUI 版本 Windows 程序和 CTCI-Win (用来在 Windows 上主客联网的工具),SDL 的工具是收费的,但可以试用,而且是不限时,不限功能。

https://github.com/SDL-Hercules-390/hyperion

首先,git clone 把 hyperion 下载回来

kazuya@ubuntu: ~/tmp
$ pwd
/home/kazuya/tmp
kazuya@ubuntu: ~/tmp
$ git clone https://github.com/SDL-Hercules-390/hyperion.git

然后给 ubuntu apt update upgrade 和安装基本编译工具

sudo apt update
sudo apt upgrade
sudo apt install m4 make autoconf automake cmake flex build-essential regina-rexx libbz2-dev libregina3-dev zlib1g-dev unzip c3270 ncat

然后切换到 hyperion 目录,先跑 bldlvlck 来检查一下系统编译需求是否满足,然后,再 make,-j8 可以根据实际机器 CPU core 核心数来设,这样编译快一点,例如 Xeon E3 1240 V2 是4核,支援超线程,所以,4x2,设为 8

cd /home/tmp/hyperion
./util/bldlvlck
./configure
make clean
make -j8sudo make install

编译好了,建议 make install 把 hercules 安装到用户程序目录,像下面

这样运行 hercules 也不用输完整路径 /home/tmp/hyperion/hercules,直接 hercules 就可以

kazuya@ubuntu: /usr/local/bin
$ ls -ltr
total 24216
-rwxr-xr-x 1 root root  15347 Aug 21 21:32 voldsext.cmd
-rwxr-xr-x 1 root root   1376 Aug 21 21:32 dasdlist
-rwxr-xr-x 1 root root 627576 Aug 21 21:32 cckdcdsk
-rwxr-xr-x 1 root root 627128 Aug 21 21:32 cckdcomp
-rwxr-xr-x 1 root root 663696 Aug 21 21:32 cckddiag
-rwxr-xr-x 1 root root 627320 Aug 21 21:32 cckdswap
-rwxr-xr-x 1 root root 627608 Aug 21 21:32 cckdcdsk64
-rwxr-xr-x 1 root root 627160 Aug 21 21:32 cckdcomp64
-rwxr-xr-x 1 root root 664376 Aug 21 21:32 cckddiag64
-rwxr-xr-x 1 root root 627344 Aug 21 21:32 cckdswap64
-rwxr-xr-x 1 root root 658768 Aug 21 21:32 convto64
-rwxr-xr-x 1 root root 654704 Aug 21 21:32 cckdmap
-rwxr-xr-x 1 root root 650872 Aug 21 21:32 dasdcat
-rwxr-xr-x 1 root root 679056 Aug 21 21:32 dasdconv
-rwxr-xr-x 1 root root 675272 Aug 21 21:32 dasdcopy
-rwxr-xr-x 1 root root 630056 Aug 21 21:32 dasdinit
-rwxr-xr-x 1 root root 678472 Aug 21 21:32 dasdconv64
-rwxr-xr-x 1 root root 678352 Aug 21 21:32 dasdcopy64
-rwxr-xr-x 1 root root 630072 Aug 21 21:32 dasdinit64
-rwxr-xr-x 1 root root 642944 Aug 21 21:32 dasdisup
-rwxr-xr-x 1 root root 914056 Aug 21 21:32 dasdload
-rwxr-xr-x 1 root root 914064 Aug 21 21:32 dasdload64
-rwxr-xr-x 1 root root 669040 Aug 21 21:32 dasdls
-rwxr-xr-x 1 root root 637504 Aug 21 21:32 dasdpdsu
-rwxr-xr-x 1 root root 699008 Aug 21 21:32 dasdseq
-rwxr-xr-x 1 root root 625656 Aug 21 21:32 dasdser
-rwxr-xr-x 1 root root 621088 Aug 21 21:32 dmap2hrc
-rwxr-xr-x 1 root root 627176 Aug 21 21:32 hercules
-rwxr-xr-x 1 root root 647480 Aug 21 21:32 hetget
-rwxr-xr-x 1 root root 627640 Aug 21 21:32 hetinit
-rwxr-xr-x 1 root root 675928 Aug 21 21:32 hetmap
-rwxr-xr-x 1 root root 654136 Aug 21 21:32 hetupd
-rwxr-xr-x 1 root root 672040 Aug 21 21:32 maketape
-rwxr-xr-x 1 root root 712560 Aug 21 21:32 tapecopy
-rwxr-xr-x 1 root root 637256 Aug 21 21:32 tapemap
-rwxr-xr-x 1 root root 639744 Aug 21 21:32 tapesplt
-rwxr-xr-x 1 root root 805480 Aug 21 21:32 vmfplc2
-rwxr-xr-x 1 root root 622440 Aug 21 21:32 hercifc
-rwxr-xr-x 1 root root 624112 Aug 21 21:32 herclin
lrwxrwxrwx 1 root root     10 Aug 21 21:32 fba2cfba -> ./dasdcopy
lrwxrwxrwx 1 root root     10 Aug 21 21:32 ckd2cckd -> ./dasdcopy
lrwxrwxrwx 1 root root     10 Aug 21 21:32 cfba2fba -> ./dasdcopy
lrwxrwxrwx 1 root root     10 Aug 21 21:32 cckd2ckd -> ./dasdcopy
lrwxrwxrwx 1 root root     12 Aug 21 21:32 fba2cfba64 -> ./dasdcopy64
lrwxrwxrwx 1 root root     12 Aug 21 21:32 ckd2cckd64 -> ./dasdcopy64
lrwxrwxrwx 1 root root     12 Aug 21 21:32 cfba642fba -> ./dasdcopy64
lrwxrwxrwx 1 root root     12 Aug 21 21:32 cckd642ckd -> ./dasdcopy64
kazuya@ubuntu: /usr/local/bin
$

然后,修改一下 vi ~/.profile,把 /usr/loca/lib/hercules library 路径加上 LD_LIBRARY_PATH

这样运行 hercules,才可找到所需的 library

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022# if running bash
if [ -n "$BASH_VERSION" ]; then# include .bashrc if it existsif [ -f "$HOME/.bashrc" ]; then. "$HOME/.bashrc"fi
fi# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; thenPATH="$HOME/bin:$PATH"
fi# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; thenPATH="$HOME/.local/bin:$PATH"
fiexport LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/local/lib/hercules
#setleds -D +num
~                                                                                                                                                                                                                           ~
~
~
".profile" 30L, 901C                           

配置 z/OS

z/OS 配置挺简单就是修改 hercules.cnf,下面以超线程8核为例子,/home/kazua/zos 改为自己机器的路径

#
# Hercules Emulator Control file...
#
# Description:
# MaxShutdownSecs:   15
# LoadUnit:          0A80
# RCFile:
# LogoFile:
# IgnoreParseErrors: 0
# HercGUI Version:   1.17.0.5541
##  System parametersARCHLVL              z/ArchMAXCPU               8
ENGINES              CP,CP,CP,CP,CP,CP,CP,CP
NUMCPU               8AUTO_SCSI_MOUNT      NO
CNSLPORT             3270
CONKPALV             (3,1,10)
CODEPAGE             default
CPUMODEL             3090
CPUSERIAL            012345
CPUVERID             FD
DEVTMAX              8
DIAG8CMD             ENABLE NOECHO
ECPSVM               YES TRAP
HTTP                 PORT 80 NOAUTH
MODPATH              /usr/local/lib/hercules
LEGACYSENSEID        DISABLE
NETDEV               /dev/net/tun
LOADPARM             0A95DCM1
#LOADPARM             0A82CS
LPARNUM              01
LPARNAME             HERCULES
MAINSIZE             8192
MANUFACTURER         HRC
MODEL                EMULATOR "" "" ""
MOUNTED_TAPE_REINIT  DISALLOW
OSTAILOR             Z/OS
PANOPT               FULLPATH
PANOPT               RATE=500
PANOPT               TITLE=z/OS
PGMPRDOS             LICENSED
PLANT                ZZ
SHCMDOPT             DISABLE NODIAG8
SYSEPOCH             1900
TIMERINT             50
TRACEOPT             TRADITIONAL
TZOFFSET             +0800
XPNDSIZE             0
YROFFSET             0#  Card Readers000C    3505    /home/kazuya/zos/zzsacard.bin#  Card Punches000D    3525    /home/kazuya/zos/punch00d.txt ascii#  Line Printers000E    1403    /home/kazuya/zos/print00e.txt crlf#  Console Printers0009    3215-C  / noprompt#  Display Terminals0700.5  3270#  Disk Drives0A80    3390    /home/kazuya/zos/ZARES1
0A81    3390    /home/kazuya/zos/ZARES2
0A82    3390    /home/kazuya/zos/SARES1
0A83    3390    /home/kazuya/zos/ZADB81
0A84    3390    /home/kazuya/zos/ZADB82
0A85    3390    /home/kazuya/zos/ZADB83
0A86    3390    /home/kazuya/zos/ZADB84
0A87    3390    /home/kazuya/zos/ZADB91
0A88    3390    /home/kazuya/zos/ZADB92
0A89    3390    /home/kazuya/zos/ZACIC1
0A8A    3390    /home/kazuya/zos/ZADIS1
0A8B    3390    /home/kazuya/zos/ZADIS2
0A8C    3390    /home/kazuya/zos/ZADIS3
0A8D    3390    /home/kazuya/zos/ZADIS4
0A8E    3390    /home/kazuya/zos/ZADIS5
0A8F    3390    /home/kazuya/zos/ZADIS6
0A90    3390    /home/kazuya/zos/ZAIMS1
0A91    3390    /home/kazuya/zos/ZAPRD1
0A92    3390    /home/kazuya/zos/ZAPRD2
0A93    3390    /home/kazuya/zos/ZAPRD3
0A94    3390    /home/kazuya/zos/ZAPRD4
0A95    3390    /home/kazuya/zos/ZASYS1
0A96    3390    /home/kazuya/zos/ZAUSS1
0A97    3390    /home/kazuya/zos/ZAWAS1
0A98    3390    /home/kazuya/zos/ZAWAS2
0A99    3390    /home/kazuya/zos/ZAWAS3
0A9A    3390    /home/kazuya/zos/USRG01
0A9B    3390    /home/kazuya/zos/SYSCPK
0A9C    3390    /home/kazuya/zos/UAPP01
0A9D    3390    /home/kazuya/zos/UTMP01#  Communication Devices0E20.2  CTCI    192.168.200.1   192.168.200.2

z/OS 开机可以选择要起动的不同程序,在 LOADPARM 设置,下面 0A95DCM1,是指到 0A95,DCM1,冷起动包括 DB2, CICS, WAS,就是大部分学习要用到的东西,0A82CS 是最基本的起动,不起动 DB2, CICS, WAS 这些,LOADPARM 还有好多其他选择

LOADPARM             0A95DCM1
#LOADPARM             0A82CS0A95    3390    /home/kazuya/zos/ZASYS1

主机起动叫 IPL initial program load,就是开始程序加载,就是开机
起动主要分2种 COLD START 和 WARM START,我比较喜用冷起动 COLD START,就是每次起动都初始化例如 log 等等
在现实环境,大多数不会 COLD START,WARM START 起动比较快多了

起飞!!

hercules 要建立层网络管导,要用 sudo 来起动,在 Windows 也是要用 Administrator 来起的,不然 CTCI-WIN 起不了

kazuya@ubuntu: ~
$ sudo hercules -f /home/kazuya/zos/hercules.cnf

在真正 IPL 前,先在 ubuntu 再开一个 tty session 用 c3270 连上去,用来作 主控制台

kazuya@ubuntu: ~
$ c3270 localhost 3270

然后输入 IPL A80
A80 是指到 0A80 ZRES01

第一次起动会提示初启化 在 主控制台 输入 R 00,I
R 是 REPLY 回复提示码 00,回复值 I

IXC404I SYSTEM(S) ACTIVE OR IPLING: P390
IXC420D REPLY I TO INITIALIZE SYSPLEX ADCDPL, OR R TO REINITIALIZE XCFR 00,I

等一会起动就完成了

然后,ubuntu 再多开一个 tty session

kazuya@ubuntu: ~
$ c3270 localhost 3270

这里我们可以登陆 TSO 或 CICS

TSO 是 Time Sharing Option 就是一台机分享很多用使用,主机程序员就是用这个界面连到主机做日常开发,就像 Linux 用 ssh 或 putty 连一样
CICS 是 主机的 GUI 界面,用来接受用户输入输出,就像 网页 Browser 界面,或 C# GUI 程序

输入 l tso 然后按 Enter

输入 IBMUSER
系统自有一堆账号,平常用 IBMUSER 就可以

然后输入密码,预设 IBMUSER 或 SYS1

按 Enter

按 Enter 就可以去到 ISPF 互动界面,程序99%时间就是在这里编辑 Cobol 代码,操作主机等等

网络配置

z/OS V1R10 网络配置修改 PROF1 配置档就可以

在 ISPF Command => =2 进入 Edit Entry Panel 编辑界面
然后输入 ADCD.Z110.TCPPARMS(PROF1)

ISPF 里可以用 F7 F8 往上下翻,在左边命令输入 i 可加行,d 可以删行
编辑完 在 Command => save 然后 F3 或 exit 可以退出

网络配置我们给 z/OS 定义个 CTCA 和 CTCI 设备

然后定义 z/OS 本机 IP HOME 192.168.500.1

网关指向 192.168.500.2 Ubuntu

然后,START CTCA 设备就可以

路由方面 在 ubuntu 加个 tun0 和 路由把去 192.168.200.1 z/OS 的包路由到 tun0
这样,网络就通了,可以 ftp,ssh,web 取存 z/OS

如果 ubuntu 开了 ufw 防火墙,要让下面通过

如果有第三台机器要存取 Ubuntu 内的 z/OS,例如上面说的 Mac (IP 192.168.50.11),防火墙也要让其通过
内网本机学习的新手,可以先关 ufw

kazuya@ubuntu: ~
$ netstat -in
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eno1      1500    24814      0   4003 0         14691      0      0      0 BMRU
lo       65536     3542      0      0 0          3542      0      0      0 LRU
tun0      1500        0      0      0 0            14      0      0      0 PRU
kazuya@ubuntu: ~
$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.50.1    0.0.0.0         UG        0 0          0 eno1
192.168.50.0    0.0.0.0         255.255.255.0   U         0 0          0 eno1
192.168.200.1   0.0.0.0         255.255.255.255 UH        0 0          0 tun0
kazuya@ubuntu: ~
$ sudo ufw status
Status: activeTo                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
21/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
3270/tcp                   ALLOW       Anywhere
Anywhere                   ALLOW       192.168.200.1
Anywhere                   ALLOW       192.168.50.11
22/tcp (v6)                ALLOW       Anywhere (v6)
21/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
3270/tcp (v6)              ALLOW       Anywhere (v6)             Anywhere on tun0           ALLOW FWD   Anywhere on eno1
Anywhere on eno1           ALLOW FWD   Anywhere on tun0
Anywhere (v6) on tun0      ALLOW FWD   Anywhere (v6) on eno1
Anywhere (v6) on eno1      ALLOW FWD   Anywhere (v6) on tun0     kazuya@ubuntu: ~
$

第三台机器 例如 Mac IP 192.168.50.11 要想连到 Ubuntu 里面的 z/OS

在 Mac 里加个路由,把 192.168.200.X 去路由去 192.168.50.15 Ubuntu 机器就可以

/Users/kazuya
$ sudo route -n add -net 192.168.200.0/24 192.168.50.15
$ netstat -rn |grep "192.168.200"
Routing tablesInternet:
Destination        Gateway            Flags        Netif Expire
default            192.168.50.1       UGScg          en0
...
192.168.200        192.168.50.15      UGSc           en0       

这样其他机器就可以连上 z/OS,例如下面 Mac 连上 z/OS ftp,其他 ssh, 和 web 也可以

安装新版 Java SDK J8.0

z/OS 自带的 Java SDK 比较旧,可以到 IBM 官网下载最新版
SDK8_31bit_readme.txt 也要一并下载,里面有如何解压缩步骤

步骤是 先下到 Java J8.0 .PAX 压缩包
然后在 z/OS 加个新券,上面的 UAPP01 就是 HFS
HFS 在 z/OS 里改名为,例如 JVA800.HFS
然后,修改 USER.PARMLIB(BPXPRMDB)
从 ADCD.Z110.PARMLIB 里覆制到 USER.PARMLIB 修改
然后,挂上去,这样开机后,OMVS 就有 /usr/lpp/java 载点可放 Java SDK
UTMP01 HFS 也一并挂上去用来作解压缩暂存
然后,透过 ftp binary mode 上传

https://www.ibm.com/support/pages/java-sdk-products-zos

z/OS 关机

在生产环境 z/OS 是绝少关机,在学习环境,可以用以下步骤关机
关机指令要视乎开机 LOADPARM,开机起了什么,关机就要关上

首先,退出 ISPF IBMUSER TSO session 就是 按 F3 Exit 所有版面
回到 READY 提示,输入 logoff

然后,按 Ctrl+] 键退出返回 c3270 界面,再输入 exit 退出 c3270

然后,转入 c cicsa 关掉 CICS GUI 界面

然后,转入 -db9g stop db2 停了 DB2

然后,等 DB2 READY FOR START COMMAND,就可以输入 s shutall 来把其他服务例如 ftpd, sshd, httpd, mq 等等都停了

然后,回复 r 03,y, 回复 STOP ZFS

可以输入 D A,L 或按 F10 键更新画面

然后,输入 $p jes2,term 去把 JOB ENTRY SYSTEM 停了

然后,输入 f dlf,mode=drain

然后,输入 p dlf

最后,F10 等到只剩 00000,输入 z eod

最后,等到 HALT EOD SUCCESSFUL

然后,回到 hercules 界面

然后,回到 hercules 界面,在界面可以用 Esc 键互相切换 资源面页

然后,回到 hercules 命令界面,输入 exit 就可以

ubuntu 编译 hercules 主机安装 z/OS 教程相关推荐

  1. Ubuntu之apt-get系列--安装ssh--方法/教程

    原文网址:Ubuntu之apt-get系列--安装ssh--方法/教程_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何在Ubuntu下安装ssh. 安装步骤 简介 ubuntu默认没有安装ssh ...

  2. 【属性基加密】Ubuntu下CP-ABE库安装及调用教程详解

    目录 一.前言 二.CP-ABE 1.啥是CP-ABE 2.CP-ABE流程 三.CP-ABE库安装 1.下载 2.安装依赖项 3.gmp安装 4.pbc安装 5.libbswabe安装 6.cpab ...

  3. 大型主机(z/OS系统)编译运行第一个COBOL语言hello world(解决编译时返回码为12问题)

    1.创建一个分区数据集**.COBOL.SOURCE存放COBOL源程序,创建时的参数如下所示: 注意事项:Record format=FB  Record length=80 Data set na ...

  4. Linux Ubuntu编译内核错误,安装ubuntu以后,编译kernel出错

    安装ubuntu以后,编译kernel出错 qyy@qyy-virtual-machine:~/work/kernel$ make CHK     include/linux/version.h CH ...

  5. 虚拟主机安装php网站教程,虚拟主机简单安装wordpress教程

    相信很多刚接触WordPress的友友对于安装流程,都有点茫然,今天就为大家介绍下如何简单地安装WordPress到你的虚拟主机. 首先安装WordPress程序需要什么? 1)一个域名 2)一个支持 ...

  6. Ubuntu 18.04下载安装以及分区教程

    收藏一下写的超赞的博客: Ubuntu18.04安装教程--超详细的图文教程 安装Ubuntu Linux系统时硬盘分区最合理的方法ubuntu18.04分区设置 也安装过很多次ubuntu了,记录一 ...

  7. Ubuntu 16.04 中文版安装基础入门教程

    安装Ubuntu16.04 1.进入 live cd 桌面  1)安装盘下载地址:http://releases.ubuntu.com/16.04/,可以用硬盘启动,也可以刻成光盘启动 进入后找蓝色链 ...

  8. Ubuntu(20.04)中安装搜狗输入法详细教程

    一.下载搜狗输入法Linux版本. https://pinyin.sogou.com/linux/?r=pinyin 二.将下载好的搜狗输入法的安装包上传至ubuntu系统某个目录下(我放在了目录/o ...

  9. mac os 安装linux驱动,教程:Ubuntu 14.04安装Mac OS X主题

    安装MAC OS X 主题会帮助你的 Ubuntu 14.04 看起来更像MAC OS X.在这里我们介绍的Macbuntu安装包包含了GTK 主题,这些主题是专门为Ubuntu Unity定制的.图 ...

最新文章

  1. Java JDBC连接oracle、SQL server、My Sql数据库的驱动
  2. testNG安装一直失败解决方法
  3. 怎么复制黑苹果config配置_估计是最后一次折腾黑苹果,技嘉 Z490 Vision D 的 OC 配置分享...
  4. TextView使用实例
  5. 用最少的机器支撑万亿级访问,微博6年Redis优化历程
  6. hiho 1318 非法二进制数 dp
  7. 直播预告丨6 大趋势,5 种核心能力,证券业数字新基建趋势全面解读
  8. 工业以太网交换机常见故障排除的三种方法
  9. python读取音频文件_python 读取wav 音频文件的两种方式
  10. 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)...
  11. HDFS Archival Storage
  12. mysql 5个约束条件,Mysql入门第五课《外键约束》
  13. 安卓逆向015之JEB静态分析与动态调试(注册机)
  14. 【视频直播篇五】vue-cli3集成vue-aliplayer-v2
  15. 服务器连接电脑显示屏花屏怎么解决,电脑显示器花屏怎么办 电脑显示器花屏解决方法【详解】...
  16. 大唐移动骨干集体出走 TD人才考验大唐
  17. 论文笔记(5.16,文本抗击,defense)--Combating Adversarial Misspellings with Robust Word Recognition
  18. go 学习笔记之咬文嚼字带你弄清楚 defer 延迟函数
  19. 微信小程序实现手写签名(极简横版)
  20. vim下区块的复制与黏贴

热门文章

  1. 清华学霸组团的工业 AIoT 创企再获数千万融资:玩家应推动在边缘 AI 芯片上跑算法...
  2. 用 3 只“鸽子”,告诉你闪电网络如何改变加密消息传递方式!
  3. 上海正在夺回互联网 “失落的十年”
  4. 2020 年,Android 还有哪些新期待?
  5. 阿里程序员双11加班吃什么?
  6. 5G 会榨干手机的电池?
  7. @程序员,如何在五分钟内构建个人网盘服务?| 技术头条
  8. QQ 可注销版本上线;拼多多成立技术顾问委员会;董明珠:建议偷手机判 10 年 | 极客头条...
  9. ofo 回应甩卖办公桌;华为与袁隆平合作;罗永浩 1 亿股权遭冻结 | 极客头条
  10. “同一天生日”网络募捐被疑造假,为什么却成了程序员的锅?