JCL------JobControlLanguage(作业控制语言)@JCL代表作业控制语言、JCL是一组控制语句,为需要处理的JOB提供必要的规范。@JCL每行80个字符,至今未变@JCL必须包括3个JCL基本语句作业语句(JOB):表示一个作业的开始,提供必要的运行参数执行语句(EXEC):标识一个作业步的开始,定义本作业步所要执行的程序或过程数据定义语句(DD):用于描述应用程序所需要的数据文件。@/*语句:表示流内数据结束或调用JES控制语句@//*语句:注释语句,从第4列到第80列写出注释内容@//语句:空语句,用以标识一个作业的结束@PROC语句:流内过程(IN-STREAMPROCEDURE)或编目过程(CATALOGEDPROCEDURE)的起始标记@PEND语句:表示一个流内过程的结束@Command语句:操作员用这个语句在输入流中写入操作命令@名字从第3行写,长度必须是1到8个字符@JOBLIB和STEPLIB的区别JOBLIB语句是放在JOB语句后面的,作用于所有的作业步,它不能放在编目过程里STEPLIB语句是放在EXEC语句后面的,只作用于本作业步,但是它可以放在编目过程里。@一个顺序文件有多少extents,VSAM?顺序文件为在一个卷上为16extents,VSAM文件为123@DISP=MOD既可以扩展一个顺序DATASET,也可以创建一个没有存在的DATASET,对于一个存在的DATASET,记录被追加到末尾。如果没存在系统将把MOD当成NEW看,提供一个没有使用的空间参数。如果空间参数使用过了,系统则终止JOB并且不创建DATASET,MOD可以被用来扩展一个DATASET的空间。经常用MOD为一个编目的DATASET指定CATLG的属性,既使它已经编目了,因此在编目中可以增加任何连续的空间来写记录。@DATASET怎么从一个STEP传递到另一个STEP?传递由DISP参数决定,使用DATASET只能被传递到下一个STEP@//YEARDATDDDSN=JAN.DATA,DISP=SHR//DDDSN=FEB.DATA,DISP=SHR//DDDSN=MAR.DATA,DISP=SHRDATASET怎么级联的?DATASET级联是通过先写一个一般的DD语句,然后加上一个没有DDNAME的DD语句,看读取顺序被级联。@在procs那些JCL语句不能命名在过程中不允许的JCL语句:1.JOB,分隔符(/*),或空语句2.JOBLIB或JOBCATDD语句3.DD*或DATA语句4.任何JES2或JES3控制语句@一个数据集的初次分配是什么数据集建立时的空间@一个数据集的主分配和从分配有什么区别从分配是当要求更多空间时所分配的@你如何创建一个临时数据集吗?在哪里可以使用它们?可以创建临时数据集通过不指定任何DSNAME或指定DSN=&&TEMP。我们把它们输出到在同意作业步上的工作。一旦作业完成,这个临时数据集就会被删除。@甚么是S0C4错误存储违反错误由多种原因决定,例,READING是一个美有打开的文件,??????@SD37,SB37,SE37abends是甚么表示磁盘空间不足SD37没有指定的从分配SB37终止卷,并且没有根多的卷被指定SE37已经分配到最大16extents@甚么是S322abend需要更多的CPU时间程序已经超过了默认的为该作业分配的CPU时间,陷入一个无限循环..@TIME参数的意思是甚么?TIME=1440表示甚么TIME当程序需要更多的CPU时间时用于克服S322abendsTIME=1440表示作业的运行没有时间限制,即24小时。@COND=EVEN即使先前作业步异常终止,本作业步都要执行@COND=ONLY只有先前作业步异常终止,本作业步才执行@如何在一个JCL中检查是否有语法错误在JOB过程中,TYPERUN=SCAN或JSCAN.@在PROC中的流数据可以编码吗No如何解决这个限制呢在PROC内编写SYSINDDDUMMY,然后从JCL用流数据覆盖它@当一个JCL中既定义了JOBLIB,又定义了STEPLIB,则会怎样JOBLIB被忽略@在JCL里寻找库的顺序是什么?首先在STEPLIB或JOBLIB指定的库中找,然后再系统库中找,例如SYS1。LINKLIB。系统库在连接表中指定。@DCB关键字是什么意思,与它相关的一些关键字有哪些?DCB是在DD语句中用来描述DATASET的关键字,与其相关的关键字有BLKSIZE,DEN,LRECL。@BLKSIZE和LRECL有什么不同?LRECL是指逻辑记录长度。BLKSIZE指多个记录长度。@实用程序介绍:IEFBR14:什么也不做,返回码0.例如:DD语句中创建数据集IEBGENER:建立顺序数据集,PDS。打印顺序数据集IEBCOPY:拷贝或合并分区数据集和扩展分区数据集COBOL&COBOLIIQ2)WhatarethedifferentdatatypesavailableinCOBOL?Q:COBOL有哪些可用的数据类型A:字符型(这里指的是包含字母和数字),字母型,数字型Q3)WhatdoestheINITIALIZEverbdo?-GSQ:INITIALIZE这个词做了些什么A:将字母,字符,数字区域都置成空格(置空),将数字区置0,FILLER和OCCURSDEPENDINGON项不处理Q4)Whatis77levelusedfor?Q:77层有什么作用A:基本层数据项,不能用做细分别的层,也不能被细分Q5)Whatis88levelusedfor?Q:88层有什么作用A:条件逻辑层Q6)Whatislevel66usedfor?Q:66层有什么作用A:重命名层Q7)WhatdoestheISNUMERICclauseestablish?Q:ISNUMERIC这个子句怎么确定(也就是说确定句子的真值)A:ISNUMERIC用在字符项,带符号数字,浮点数,不带符号数。如果目标项只含0~9则返回TRUE。但是,如果待测项目是个带符号数,那么他就含有0-9还有+和-Q8)Howdoyoudefineatable/arrayinCOBOL?A8)ARRAYS.05ARRAY1PICX(9)OCCURS10TIMES.05ARRAY2PICX(6)OCCURS20TIMESINDEXEDBYWS-INDEXQ:COBOL中怎么建表/数组A:如上.Q:OCCURS子句能用在第一层吗A:不能Q10)Whatisthedifferencebetweenindexandsubscript?-GSQ:索引和下标有什么区别A:下标可以指定数组中任意中位置的元素(只要知道其下标),下标只能是数字型常量或者数字型变量(但是不能在指定的时候修改,如:A(K+1)这样是不行的,要修改的话要在指定的外部改,如:ADD1TOK,而索引的话是从表头/数组头开始检索(以BYN的指定检索规律往后滚)再者,索引只能通过PERFORM,SEARCH和SET来修改,如果要在一个表中使用SEARCH,SEARCHALL,那这个表就要有索引(因为SEARCH,SEARCHALL的参数中指定索引,所以即使其有很多限制还是得用它)Q11)WhatisthedifferencebetweenSEARCHandSEARCHALL?-GSQ:SERACH和SERACHALL有什么区别A:SEARCH是顺序查找SERACHALL是2叉查找(相信数据结构学过2叉树的都不会陌生),在使用SEARCHALL前表必须有一个递增/递减的KEY,并且表已经按照其KEY值排序了,这样才能使用SEARCHALLQ12)WhatshouldbethesortingorderforSEARCHALL?-GSQ:为了使用SEARCHALL,存贮顺序是怎么样的A:他必须是递增或者是递减的,默认地政。如果你想在一个递减顺序存贮的表/数组使用搜索的话,那么当定义表/数组的时候你应该加一个DESCENDINGKEY子句(这之前表要已经按指定的顺序排序了)Q14)Myprogramhasanarraydefinedtohave10items.Duetoabug,Ifindthateveniftheprogramaccessthe11thiteminthisarray,theprogramdoesnotabend.Whatiswrongwithit?Q:我的程序有个数组定义了10项。因为有个BUG,我发现即使访问第11项,程序也不异常终止。那是出了什么问题A:必须使用编译器的一个选项SSRANGE,如果你想检查数组的超界问题。默认是NOSSRANGEQ18)WhatistheuseofEVALUATEstatement?-GSQ:EVALUATE语句有什么作用A:EVALUATE就象个CASE语句(多重开关语句,学过C的总知道吧),不同点在于EVALUATE不需要BREAK,一旦匹配就跳出EVALUATE语句了Q20)HowdoyoucomeoutofanEVALUATEstatement?-GSQ:怎么跳出一条EVALUATE语句A:象18题目说的那样,一旦匹配了某一个“WHEN“语句就自动跳出了,不需要什么额外的代码来跳出Q21)InanEVALUATEstatement,canIgiveacomplexconditiononawhenclause?Q:在一个EVALUATE语句的某个WHEN分支中能否再插入复杂的情况(也就是嵌套)A:当然可以,当多个参数作为控制变量的时候1个WHEN内部可以嵌套更多的情况Q22)Whatisascopeterminator?Giveexamples.Q:什么是结束终止符A:结束终止符是搭配一些范围指令的,也就是标识一些范围指令的结束。如:EVALUATE,END-EVALUATE;IF,END-IF如果没有该结束符,该条语句将终止不了Q23)Howdoyoudoin-linePERFORM?-GSQ:怎么使用内嵌的PERFORMA:PERFORM...UNTIL...sentencesEND-PERFORM所谓内嵌也就是PERFORM被嵌在某些比如循环语句中担当执行主体,同时通过UNTIL来指定结束判定Q24)Whenwouldyouusein-lineperform?Q:什么时候使用内嵌式PERFORMA:当该段PERFORM的内容不被其他段用到,只在某些局部代码中(当然PERFORM的主体所用到的参数也都是局部的,例如循环)使用,如果PERFORM主体的代码是一般的(用到了别的程序段的变量),还是使用PERFORMParaname这样的形式比较好(也就是相对与内于PERFORM的外部PERFORM)。Q25)WhatisthedifferencebetweenCONTINUE&NEXTSENTENCE?Q:CONTINUE和NEXTSENTENCE有什么不同A:两者比较相似,都是将程序控制权交给下一句,但是用NEXTSENTENCE的时候,只有当碰到句结束符(就是句末的‘.’)才会将执行下句这道题我用了2个例子测试了一下:1:IFTEST-NUMERIC0THENNEXTSENTENCEEND-IFDISPLAY'LINE1'DISPLAY'LINE2'.DISPLAY'LINE3'.(请注意代码中的‘.’号)结果输出:LINE32:IFTEST-NUMERIC0THENCONTINUEEND-IFDISPLAY'LINE1'DISPLAY'LINE2'.DISPLAY'LINE3'.结果输出:LINE1LINE2LINE3相信已经区别已经比较明显了,NEXTSENTENCE是靠句末的结束符(也就是‘.‘)来判断下一句的,而CONTINUE是通过句头的保留字(这例中是DISPLAY)来判断下一句的Q26)WhatdoesEXITdo?Q:EXIT语句有什么作用A:什么都不做,如果用到的话,肯定是作为一段的唯一的一句话