Chinaunix

标题: 关于OS390的JCL操作语言理解 [打印本页]

作者: wyvern050    时间: 2006-11-27 13:26
标题: 关于OS390的JCL操作语言理解
经过这几天对OS390的理解,基本上熟悉了JCL语言. JCL语言是JOB CTRL Language,顾名思义,也就是说,OS390中的COBOL语言不能自己去实现本身的功能.需要JCL语言对它进行操作. JCL语言中可以分为3大部分,JOB的声明:
XXXXXXA JOB CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),NOTIFY=&SYSUID
其中XXXXXXA为JOB的名字, JOB的名字可以随便去起,但是一般情况下是用你的USERID+一个字付,因为你需要看你返回的LOG , JOB为声明用,就好比INT I; 声明一个I变量一样,CLASS=A为设置JOB的优先级,CLASS=(A~Z AND 0~9)  MSGCLASS=H设置MSG的优先级,范围同CLASS一样, NOTIFY=&SYSUID设置信息返回的用户. 你想把完成后的信息返回给谁,就在这添上他的USERID 如果添上&SYSUID系统莫认为当前用户,
EXEC的应用:
STEP1  EXEC PGM=IEFBR14
一般在JCL中我们所编辑的功能需要用到系统的程序,以及所用到的"接口(我是这么理解的)",所以这里需要声明我们所用到的程序名为IEFBR14 STEP1为程序实行的步,  每一个EXEC为一个步骤.
DD的应用:
//DD1       DD DSN=WANGZX.FILE.SOURCE,                        
//             DISP=(NEW,CATLG,DELETE),                        
//             SPACE=(TRK,(10,10,6)),                          
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920)
上面是建立一个PDS的语句.   其中DD1是程序IEFBR14中声明的外部连接的一个变量.弄过COBOL的朋友都知道 SELECT  F1  ASSIGN  TO XXXX
这个XXXX就是JCL中的DD1  我想我这么说应该是有人明白,这里我不知道怎么去用语言组织.起明白的朋友帮我完善.........
DSN=(DATA SET 名字)     DISP=(建立文件,CATLG,DELETE) SPACE=(TRK(初始大小"10TRK",增长大小"10TRK",包含的MENBER数"6的5倍")  DCB=文件属性,(这里我不是弄的特别明白,但是我知道是这么写,里面写的是建立文件时的属性)
SYSPRINT DD SYSOUT=*   SYSPRINT 是系统所用到的,我们主要说说后面  SYSOUT=*  就是说把MSG输出到后台中 ,"*"就是指后台,A 就是打印机  下面我发下HELLO WORLD 程序的代码:
COBOL文件中
           IDENTIFICATION            DIVISION.
                PROGRAM-ID.                 TEST1.
                ENVIRONMENT               DIVISION.
                DATA                              DIVISION.
                PROCEDURE                   DIVISION.
                         DISPLAY 'HELLO WORLD!'.
                         STOP RUN.
JCL中
//WANGZXA   JOB CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),NOTIFY=WANGZX
//STEP1     EXEC PROC=IGYWCLG                                   
//COBOL.SYSIN DD DSN=WANGZX.COBOL.SOURCE(TEST1),DISP=SHR        
//GO.SYSOUT DD SYSOUT=*                                         
//SYSPRINT  DD SYSOUT=*                                         
//*
作者: wyvern050    时间: 2006-11-27 13:33
续:::::::
当写完JCL语句时.  在命令输入行输入SAVE 保存下,  在输入SUB   SUB为提交, 然后回车, 如果返回的MACXX = 0 代表成功,  0以上为错误
查看执行后的MSG    在命令输入行输入  TSO SDSF H   回车.  回发现你的JOB名开头的MSG  在MSG前面输入"?"  回车,  在里面会看到有个SYSOUT 的MSG  在这个MSG前面输入"S"   则看到了HELLO WORLD
作者: wyvern050    时间: 2006-11-27 13:37
以上为HELLO WORLD的COBOL形式..  想要输出HELLO WORLD 还有另外一个形式.   在一个MENBER中建立一个文件,   在文件中输入HELLO WORLD   保存,退出,  在JCL中这样写
//WANGZXA  JOB CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),NOTIFY=WANGZX  
//STEP1    EXEC PGM=IEBGENER                                    
//SYSUT1   DD DSN=WANGZX.FILE.SOURCE(TEST2),DISP=SHR            
//SYSUT2   DD SYSOUT=*                                          
//SYSIN    DD DUMMY                                             
//SYSPRINT DD SYSOUT=*     
其中DSN后面的为MENBER的位置.  DISP=SHR 为共享式的访问..
在JCL中SUB  就能够实现了...
作者: helloabc    时间: 2006-11-28 13:22
标题: 回复 3楼 wyvern050 的帖子
不太懂JCL,顶一下
作者: wyvern050    时间: 2006-11-28 15:04
续::::::
JCL语言和AS400中的CL语言差不多,都是属于工作控制语句,  如果你想让某个程序按照你的方式运行起来就需要JCL语言的控制,  也就是说在OS390中  COBOL 语言系统是不识别的,需要把它的代码翻译成系统能够识别的代码,   这样程序才能运行, 然而JCL语言又不能自主的把COBOL原代码变成计算机识别的代码,就需要借助系统的一些工具, 就是上面说的   STEP EXEC PGM=XXXX  这里的XXXX就是系统的工具,

我们也可以这样理解
         源代码->JCL->系统工具->目标代码->JCL->运行
这就是一个简单的工作执行的方式.
作者: just a kid    时间: 2006-11-28 19:24
JCL是在MVS里用来处理批处理作业的吧,类似400下的SBMJOB,功能强大的多哦,交互式的使用TSO SHELL,由于没有什么提示和回显,一般SYSTEM PROGRAMMER都用ISPF这个工具去做交互式的作业.类似于400ER在绿屏下的操作.这么写,400ER应该能看的懂些,顶的人可能也会多点点啦~~
作者: wyvern050    时间: 2006-11-29 13:56
等我把每一个操作图都截下来给你们看  等待整理...........
作者: shanggege    时间: 2007-07-22 15:07
标题: 你好
能不能把以上问题的答案给出来呢?或者是哪里有OS390的相关资料,急!!!!!!!!!!
作者: feilly    时间: 2008-05-06 14:48
讲的很详细也 喜欢
哥哥能不能发一些中文的资料给我学习下,现在正在实践用中,发在我的邮箱里 谢谢
feilly66726344@sina.com
作者: feilly    时间: 2008-05-06 14:49
整理好了发给我一份好吗?万分感谢! o(∩_∩)o...
作者: sing0319    时间: 2008-05-09 16:02
好东西 顶!
作者: YTHTdeWo    时间: 2011-03-23 22:06
想问问如果个人想学习一下JCL,那么有没有什么学习环境呢?
又不可能去买个大机吧

作者: va909    时间: 2011-06-08 15:34
更正下,现在OS/390基本退役了,新一代大型机都是在z/OS系列了。不过软件没大的改动。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2