什么是MVS和JCL?

时间:2012-05-10 20:52:50

标签: mainframe jcl mvs

有没有人对MVS和JCL有所了解?

有可能向我解释一下MVS是什么吗? JCL用于什么?

5 个答案:

答案 0 :(得分:17)

我相信你指的是MVSJCL

MVS 是IBM大型机系统的操作系统, JCL 是大型机的作业控制语言。例如,您可以将 MVS 与Linux和 JCL 关联到Bash。

AS / 400 / iSeries / IBM i / i5被认为是中端机器。它的操作系统最近被称为OS / 400或更多i5 / OS。

答案 1 :(得分:14)

稍微扩展名称MVS:

在20世纪70年代后期,MVS被添加到OS / VS2操作系统的名称中。它代表多虚拟存储,指出了在一台机器上使用虚拟存储概念运行许多任务的能力。最终OS / VS2被删除了。

MVS通过MVS / 370,MVS / XA(扩展架构,31位)和MVS / ESA(企业系统架构,数据空间)期间保持名称,直到20世纪90年代中期,当时的操作系统更名为OS / 390,后来在21世纪初由z / OS提供64位支持,这个名称至今仍在使用。但是,在IBM文档中,核心操作系统组件仍称为MVS。

有许多优秀的Internet引用可以扩展IBM System / 360和后续操作系统的历史。

答案 2 :(得分:1)

“多个虚拟存储”,实际上。与早期版本的操作系统“单一虚拟存储”相反。

区别在于每个作业(当前的标准)是否存在一个地址空间,还是所有作业共享一个地址空间(计算机带有地址重定位硬件之前的标准)。

答案 3 :(得分:1)

对于JCL作业控制语言

用于

  • 编译COBOL,C ..等
  • 对数据集进行排序
  • 创建VSAM,生成数据集
  • 级联
  • 格式INREC OUTREC ..

它是一种多功能语言,可以控制您在大型机上可以执行的所有操作。

Ex:使用icetool和idcams&检查DataSet是否为空使用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 /*    

答案 4 :(得分:1)

MVS 是操作系统,可以通过多种方式与操作系统进行交互。与Windows或Linux一样,一种方法是通过命令行。 PC型操作系统将其称为“终端”。在MVS上,它称为控制台。 (不过,我在这里没有研究不同类型的控制台。)

另一种方法是通过脚本。 CLIST (命令列表的简称)是TSO(时间共享选项)中提供的一种较旧的脚本语言,它是一种交互式请求/响应对话框,是更加友好的交互式系统生产力的基础设施,也称为ISPF。如今, REXX 是MVS系统程序员中最流行的脚本语言。但是近年来, Python 之类的新编程语言也已移植到大型机平台,并且可以像在非大型机平台上使用一样使用。

与操作系统交互的另一种方法是通过批处理作业。作业控制语言 JCL 在这里开始发挥作用。这是一种特殊的语言,可用于描述批处理作业的一个或多个任务,其输入,要执行的实际程序及其输出。

JCL充当一种手段来告知工作录入子系统 JES 。另一方面,JES确保使这些资源可用(=已分配),以便作业可以成功运行。当所有资源都可用时,JES会启动该作业,现在,操作系统的任务是为其查找计算资源(CPU,内存,I / O)。在这一点上,工作只是系统上正在运行的另一个进程。最后,当作业完成时,JES处理其输出。它怎么知道的?好吧,通过JCL。 JCL指定如何处理输出,是否应将其存储在数据集中,是否进行打印,或者例如是否将其保留在名为 SPOOL 的内存池中(在-line),直到被用户或操作员清除。