有人知道 MVS 和 JCL 吗?
是否可以向我解释 MVS 是什么?JCL 是用来做什么的?
稍微扩展一下 MVS 的名称:
MVS 在 1970 年代后期被添加到 OS/VS2 操作系统的名称中。它代表多个虚拟存储,指出在一台机器上使用虚拟存储概念运行许多任务的能力。最终 OS/VS2 被放弃了。
MVS 在 MVS/370、MVS/XA(eXtended Architecture,31 位)和 MVS/ESA(Enterprise Systems Architecture,数据空间)时期一直沿用此名称,直到 1990 年代中期操作系统更名为 OS /390,在 2000 年代初得到了 z/OS 的 64 位支持,该名称至今仍在使用。但是,在 IBM 文档中,核心操作系统组件仍称为 MVS。
有许多很好的 Internet 参考资料扩展了 IBM System/360 和后续操作系统的历史。
对于 JCL 作业控制语言
用于
它是一种真正通用的语言,可以控制您在大型机上可以执行的所有操作。
例如:使用 icetool 和 idcams 检查数据集是否为空,并使用 icetool 计算行数
000100 //CHKEMPTY JOB 12345,
000110 // 'CHECK EMPTY',
000120 // CLASS=A,
000130 // NOTIFY=&SYSUID
000200 //*
000210 // SET USER=YOURUSERNAME
000220 //* SELECT THE CC RETURN FOR ACTION
000300 //*****************************************************
000400 //*1 CHKEMP ICETOOL 2 COUNT ICETOOL 3 CHKEMP IDCAMS
000600 //*****************************************************
000610 //STEPSET EXEC PGM=IDCAMS
000620 //SYSPRINT DD SYSOUT=*
000630 //SYSOUT DD SYSOUT=*
000640 //SYSIN DD *
000650 SET MAXCC=2 <----SELECT OPTION YOU WANT TO TEST
000660 /*
000670 //*
000680 //*********************************************************************
000690 //* CHECK EMPTY WITH MAXCC=12 ICETOOL
000691 //*********************************************************************
000692 //*
000700 //STEP0001 EXEC PGM=ICETOOL,COND=(1,NE,STEPSET)
000900 //IN DD DSN=&USER..EMPTYDS,DISP=SHR <--- EMPTY DS FOR TEST
001010 //TOOLMSG DD SYSOUT=*
001100 //DFSMSG DD SYSOUT=*
001110 //TOOLIN DD DATA
001200 COUNT FROM(IN) EMPTY
001300 /*
001301 //*
001302 //*********************************************************************
001303 //* COUNT LINES WITH ICETOOL
001304 //*********************************************************************
001305 //*
001306 //STEP0002 EXEC PGM=ICETOOL,COND=(2,NE,STEPSET)
001307 //TOOLMSG DD SYSOUT=* <--- CONTAINS RECORD DATA
001308 //DFSMSG DD SYSOUT=*
001309 //IN DD DSN=&USER..COBOL(CBLPGM),DISP=SHR
001310 //TOOLIN DD DATA
001311 COUNT FROM(IN)
001312 /*
001313 //*
001314 //****************************************************
001315 //* CHECK EMPTY FILES USING IDCAMS MAXCC=4 EMPTY
001316 //****************************************************
001317 //*
001318 //STEP0003 EXEC PGM=IDCAMS,COND=(3,NE,STEPSET)
001319 //IN DD DSN=&USER..EMPTYDS,DISP=SHR <---- EMPTY DS FOR TEST
001320 //SYSPRINT DD SYSOUT=*
001330 //SYSIN DD DATA
001340 PRINT INFILE(IN) COUNT(1)
001350 /*
MVS是操作系统,有多种方式与操作系统交互。与 Windows 或 Linux 一样,一种方法是通过命令行。PC 型操作系统将其称为“终端”。在 MVS 上,它称为控制台。(不过,我不会在这里深入研究不同类型的控制台。)
另一种方法是通过脚本。 CLIST是 Command List 的简写,是 TSO(分时选项)中可用的一种较旧的脚本语言,它是一种交互式请求/响应类型的对话,它是更加用户友好的交互式系统生产力工具(也称为 ISPF)的基础。如今,REXX是 MVS 系统程序员中最流行的脚本语言。但近年来,Python等新的编程语言也已移植到大型机平台,并且可以像在非大型机平台上使用一样使用。
与操作系统交互的另一种方式是通过批处理作业。在这里,作业控制语言JCL发挥作用。它是一种特殊的语言,可用于描述批处理作业的一个(或多个)任务、其输入、要执行的实际程序及其输出。
JCL 作为一种告诉 Job Entry Subsystem JES需要什么资源的方法。另一方面,JES 确保这些资源可用(=已分配),以便作业可以成功运行。当所有资源都可用时,JES 启动作业,现在操作系统的任务是为其查找计算资源(CPU、内存、I/O)。此时,作业只是系统上运行的另一个进程。最后,当作业完成时,JES 处理其输出。它是怎么知道的?好吧,通过JCL。JCL 指定如何处理输出,是否应将其存储在数据集中,是否打印,或者例如是否保留在称为SPOOL的内存池中(同时在线外围操作)直到被用户或操作员清除。
实际上是“多个虚拟存储”。与早期版本的操作系统相反,“单一虚拟存储”。
区别在于每个作业是否有一个地址空间(今天的标准)或所有作业共享一个地址空间(计算机带有地址重定位硬件之前的标准)。
JCL - 它是一种作业控制语言,用于控制要运行的程序。
MVS - 多虚拟存储系统。