COBOL经典面试题目_第1页
COBOL经典面试题目_第2页
COBOL经典面试题目_第3页
COBOL经典面试题目_第4页
COBOL经典面试题目_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JCL -Job Control Language(作业控制语言) JCL代表作业控制语言、JCL是一组控制语句,为需要处理的JOB提供必要的规范。 JCL每行80个字符,至今未变 JCL必须包括3个JCL基本语句 作业语句(JOB):表示一个作业的开始,提供必要的运行参数 执行语句(EXEC):标识一个作业步的开始,定义本作业步所要执行的程序或过程 数据定义语句(DD):用于描述应用程序所需要的数据文件。 /* 语句:表示流内数据结束或调用JES控制语句 /* 语句:注释语句,从第4列到第80列写出注释内容 / 语句:空语句,用以标识一个作业的结束 PROC 语句:流内过程(IN-STREA

2、M PROCEDURE)或编目过程(CATALOGED PROCEDURE)的起始标记 PEND 语句:表示一个流内过程的结束 Command 语句:操作员用这个语句在输入流中写入操作命令 名字从第3行写,长度必须是1到8个字符 JOBLIB 和 STEPLIB的区别 JOBLIB语句是放在JOB语句后面的,作用于所有的作业步,它不能放在编目过程里 STEPLIB语句是放在EXEC语句后面的,只作用于本作业步,但是它可以放在编目过程里。 一个顺序文件有多少extents,VSAM? 顺序文件为在一个卷上为16 extents,VSAM文件为123 DISP=MOD既可以扩展一个顺序DATASE

3、T,也可以创建一个没有存在的DATASET,对于一个存在的DATASET,记录被追加到末尾。如果没存在系统将把MOD当成NEW看,提供一个没有使用的空间参数。如果空间参数使用过了,系统则终止JOB并且不创建DATASET,MOD可以被用来扩展一个DATASET的空间。经常用MOD为一个编目的DATASET指定CATLG的属性,既使它已经编目了,因此在编目中可以增加任何连续的空间来写记录。 DATASET怎么从一个STEP传递到另一个STEP? 传递由DISP参数决定,使用DATASET只能被传递到下一个STEP /YEARDAT DD DSN=JAN.DATA,DISP=SHR / DD DS

4、N=FEB.DATA,DISP=SHR / DD DSN=MAR.DATA,DISP=SHR DATASET怎么级联的? DATASET级联是通过先写一个一般的DD语句,然后加上一个没有DDNAME的DD语句, 看读取顺序被级联。 在procs那些JCL语句不能命名 在过程中不允许的JCL语句: 1. JOB, 分隔符(/*), 或空语句 2. JOBLIB 或JOBCAT DD语句 3. DD * 或DATA语句 4. 任何 JES2 或 JES3 控制语句 一个数据集的初次分配是什么 数据集建立时的空间 一个数据集的主分配和从分配有什么区别 从分配是当要求更多空间时所分配的 你如何创建一个

5、临时数据集吗?在哪里可以使用它们? 可以创建临时数据集通过不指定任何DSNAME或指定DSN = &TEMP。 我们把它们输出到在同意作业步上的工作。一旦作业完成,这个临时数据集就会被删除。 甚么是S0C4错误 存储违反错误由多种原因决定,例,READING是一个美有打开的文件,? SD37, SB37, SE37 abends是甚么 表示磁盘空间不足 SD37没有指定的从分配 SB37终止卷,并且没有根多的卷被指定 SE37已经分配到最大16 extents 甚么是S322 abend 需要更多的CPU时间程序已经超过了默认的为该作业分配的CPU时间,陷入一个无限循环. TIME参数的意思是

6、甚么? TIME=1440 表示甚么 TIME当程序需要更多的CPU时间时用于克服S322 abends TIME=1440表示作业的运行没有时间限制,即24小时。 COND=EVEN 即使先前作业步异常终止,本作业步都要执行 COND=ONLY 只有先前作业步异常终止,本作业步才执行 如何在一个JCL中检查是否有语法错误 在JOB过程中,TYPERUN=SCAN或JSCAN. 在PROC中的流数据可以编码吗 No 如何解决这个限制呢 在PROC内编写SYSIN DD DUMMY,然后从JCL用流数据覆盖它 当一个JCL中既定义了JOBLIB,又定义了STEPLIB,则会怎样 JOBLIB被忽

7、略 在JCL里寻找库的顺序是什么? 首先在STEPLIB或JOBLIB指定的库中找,然后再系统库中找, 例如SYS1。LINKLIB。系统库在连接表中指定。 DCB关键字是什么意思,与它相关的一些关键字有哪些? DCB是在DD语句中用来描述DATASET的关键字,与其相关的关键字有BLKSIZE,DEN,LRECL。 BLKSIZE和LRECL有什么不同? LRECL是指逻辑记录长度。BLKSIZE指多个记录长度。 实用程序介绍: IEFBR14:什么也不做,返回码0.例如:DD语句中创建数据集 IEBGENER:建立顺序数据集,PDS。打印顺序数据集 IEBCOPY:拷贝或合并分区数据集和扩

8、展分区数据集COBOL & COBOL II Q2)What are the different data types available in COBOL?Q:COBOL有哪些可用的数据类型A:字符型(这里指的是包含字母和数字),字母型,数字型Q3)What does the INITIALIZE verb do? - GSQ:INITIALIZE这个词做了些什么A:将字母,字符,数字区域都置成空格(置空),将数字区置0, FILLER和OCCURS DEPENDING ON项不处理Q4)What is 77 level used for ?Q:77层有什么作用A:基本层数据项,不能用做细分

9、别的层,也不能被细分Q5)What is 88 level used for ?Q:88层有什么作用A:条件逻辑层Q6)What is level 66 used for ?Q:66层有什么作用A:重命名层Q7)What does the IS NUMERIC clause establish ?Q:IS NUMERIC这个子句怎么确定(也就是说确定句子的真值)A:IS NUMERIC用在字符项,带符号数字,浮点数,不带符号数。如果目标项只含09则返回TRUE。但是,如果待测项目是个带符号数,那么他就含有0-9还有+和-Q8)How do you define a table/array in

10、 COBOL?A8)ARRAYS.05ARRAY1PIC X(9) OCCURS 10 TIMES. 05ARRAY2PIC X(6) OCCURS 20 TIMES INDEXED BY WS-INDEXQ:COBOL中怎么建表/数组A:如上.Q:OCCURS 子句能用在第一层吗A:不能Q10)What is the difference between index and subscript? - GSQ:索引和下标有什么区别A:下标可以指定数组中任意中位置的元素(只要知道其下标),下标只能是数字型常量或者数字型变量(但是不能在指定的时候修改,如:A(K+1)这样是不行的,要修改的话要在指

11、定的外部改,如:ADD 1 TO K,而索引的话是从表头/数组头开始检索(以BY N的指定检索规律往后滚) 再者,索引只能通过PERFORM, SEARCH 和SET来修改,如果要在一个表中使用SEARCH, SEARCH ALL,那这个表就要有索引(因为SEARCH, SEARCH ALL的参数中指定索引,所以即使其有很多限制还是得用它)Q11)What is the difference between SEARCH and SEARCH ALL? - GSQ:SERACH和SERACH ALL有什么区别A:SEARCH是顺序查找 SERACH ALL 是2叉查找(相信数据结构学过2叉树的

12、都不会陌生),在使用SEARCH ALL前表必须有一个递增/递减的KEY,并且表已经按照其KEY值排序了,这样才能使用SEARCH ALLQ12)What should be the sorting order for SEARCH ALL? - GSQ:为了使用SEARCH ALL,存贮顺序是怎么样的A:他必须是递增或者是递减的,默认地政。如果你想在一个递减顺序存贮的表/数组使用搜索的话,那么当定义表/数组的时候你应该加一个DESCENDING KEY子句(这之前表要已经按指定的顺序排序了)Q14)My program has an array defined to have 10 item

13、s. Due to a bug, I find that even if the program access the 11th item in this array, the program does not abend. What is wrong with it?Q:我的程序有个数组定义了10项。因为有个BUG,我发现即使访问第11项,程序也不异常终止。那是出了什么问题A:必须使用编译器的一个选项SSRANGE,如果你想检查数组的超界问题。默认是NOSSRANGEQ18)What is the use of EVALUATE statement? - GSQ:EVALUATE语句有什么作

14、用A:EVALUATE就象个CASE语句(多重开关语句,学过C的总知道吧),不同点在于EVALUATE不需要BREAK,一旦匹配就跳出EVALUATE语句了Q20)How do you come out of an EVALUATE statement? - GSQ:怎么跳出一条EVALUATE语句A:象18题目说的那样,一旦匹配了某一个“WHEN“语句就自动跳出了,不需要什么额外的代码来跳出Q21)In an EVALUATE statement, can I give a complex condition on a when clause?Q:在一个EVALUATE语句的某个WHEN分支

15、中能否再插入复杂的情况(也就是嵌套)A:当然可以,当多个参数作为控制变量的时候1个WHEN内部可以嵌套更多的情况Q22)What is a scope terminator? Give examples.Q:什么是结束终止符A:结束终止符是搭配一些范围指令的,也就是标识一些范围指令的结束。如:EVALUATE, END-EVALUATE; IF, END-IF 如果没有该结束符,该条语句将终止不了Q23)How do you do in-line PERFORM? - GSQ:怎么使用内嵌的PERFORMA:PERFORM . . END-PERFORM所谓内嵌也就是PERFORM被嵌在某些比

16、如循环语句中担当执行主体,同时通过UNTIL来指定结束判定Q24)When would you use in-line perform?Q:什么时候使用内嵌式PERFORMA:当该段PERFORM的内容不被其他段用到,只在某些局部代码中(当然PERFORM的主体所用到的参数也都是局部的,例如循环)使用,如果PERFORM主体的代码是一般的(用到了别的程序段的变量),还是使用PERFORM Para name这样的形式比较好(也就是相对与内于PERFORM的外部PERFORM)。Q25)What is the difference between CONTINUE & NEXT SENTENCE

17、 ? Q:CONTINUE 和 NEXT SENTENCE有什么不同A:两者比较相似,都是将程序控制权交给下一句,但是用NEXT SENTENCE的时候,只有当碰到句结束符(就是句末的.)才会将执行下句这道题我用了2个例子测试了一下:1:IF TEST-NUMERIC 0 THEN NEXT SENTENCE END-IF DISPLAY LINE1 DISPLAY LINE2. DISPLAY LINE3.(请注意代码中的.号)结果输出:LINE32:IF TEST-NUMERIC 0 THEN CONTINUE END-IF DISPLAY LINE1 DISPLAY LINE2. DIS

18、PLAY LINE3.结果输出:LINE1 LINE2 LINE3 相信已经区别已经比较明显了,NEXT SENTENCE是靠句末的结束符(也就是.)来判断下一句的,而CONTINUE是通过句头的保留字(这例中是DISPLAY)来判断下一句的Q26)What does EXIT do ?Q:EXIT语句有什么作用A:什么都不做,如果用到的话,肯定是作为一段的唯一的一句话,注意:这里不是子程序中用的EXIT PROGRAMEQ27)Can I redefine an X(100) field with a field of X(200)?Q:能不能把X(100)的区域重定义成X(200)A:可以

19、,重定义只是相当于把两个区域的首地址放在一起,从上面这个例子也很好理解A28)Can I redefine an X(200) field with a field of X(100) ?Q:能不能把X(200)的区域重定义成X(100)A:可以,原因同上Q32)How is sign stored in Packed Decimal fields and Zoned Decimal fields?Q32)Packed Decimal fields:Sign is stored as a hex value in the last nibble (4 bits ) of the storage

20、.Zoned Decimal fields:As a default, sign is over punched with the numeric value stored in the last bite.Q:在内部十进制区域和显示十进制区域符号是怎么存贮的A:内部十进制是一个数字占4位(半字节),内存中用16进制来存,最后在追加4位作为符号,如-4=(末尾的1101表示负,1100表示正),而我们用于显示的十进制,符号并不占空间,只是在最后一位上标识一下Q33)How is sign stored in a comp-3 field? - GSQ:COMP-3区怎么存储符号A:COMP-3

21、采用的是内部十进制的存储方式,所谓内部十进制就是压缩式的外部十进制存储方式,上题讲过外部十进制每个数值都用1个字节存储,但前4位是存符号的,这样比较浪费存储空间,所以内部十进制的存储方式就用半个字节(4位)存储一个数字,在最后增加4位作为符号(1100(C)为正,1101(D)为负)Q34)How is sign stored in a COMP field ? - GSQ:COMP区怎么存储符号A:COMP是采用定点二进制的方式存储数据,也就是将一个十进制的数值转化成二进制再进行存储,因为机器存储的形式也是二进制,所以定点二进制的读取是最快速的,因为COMP型的数据是用做计算(也就是说不用再

22、转化成十进制打印),使用定点二进制将会非常高效。这样的存储方式符号是保存在最高有效果位上,如:10=(), -10=()Q35)What is the difference between COMP & COMP-3 ?Q:COMP和COMP-3什么区别A:这之前讲过了,COMP采用定点二进制存储,COMP-3采用内部十进制存储Q36)What is COMP-1? COMP-2?Q:COMP-1是什么?什么是COMP-2A:其实之所以定义计算型数据(COMPCOMP-3)以区别DISPLAY(能计算,但是要用于打印)是为了考虑效率,因为大家知道文件导入(也就是USER使用的数据)一般是十进制

23、的,而机器存储都是二进制,那么当定义的数据光用来计算不用打印,处于效率考虑会把它定义成COMP型,当然就会衍生出几类COMP以适应不用的数据类型的存储。很明显,这里COMP-1就是采用内部短浮点(4个字节表示一个数,8位指数部分,24位表示数字部分),COMP-2用内部长浮点型(8个字节表示一个书,16位指数部分,48位表示数字部分)以适应浮点数据的存储,长浮点精确度更高.Q37)How do you define a variable of COMP-1? COMP-2?Q:怎么定义一个COMP-1型?COMP-2型A:不要用PICTURE描述,因为是确定分配多少内存的,直接用USAGE,如

24、01 WS-VAR USAGE COMP-1Q38)How many bytes does a S9(7) COMP-3 field occupy ?Q:一个S9(7)的COMP-3型占用多少字节?A:占用4字节。COMP-3用内部十进制存储,S9(7)中的S是要占空间的,符号占4位,7个数字,每个4位(半个字节),所以是(4+7*4)/8=4字节(字节和位的比例不要搞错了哦)Q39)How many bytes does a S9(7) SIGN TRAILING SEPARATE field occupy ?Q:一个S9(7) SIGN TRAILING SEPARATE区域占多少字节A:

25、这里是每个符号单独分配空间(也就是没个数值用1个字节表示,就象最常用的DISPLAY型的分配方式),算上S的空间,所以是7+1=8字节。一般情况省略的SIGN子句都是隐含SIGN IS TRAILING的Q40)How many bytes will a S9(8) COMP field occupy ?Q: 一个S9(8) COMP 区域占多少字节A:如果之前关于COMP的解释听懂了的话,那很显然就是4字节了(定点二进制用2字节存储14,4字节存储59,类推,你可以自己推下),如果这块还不懂的可以问我或者查下书Q41)What is the maximum value that can be

26、 stored in S9(8) COMP?Q41)Q:S9(8)COMP型最多存储的最大值是什么A:除了8个数值外不忽略符号位 Q43)What is the maximum size of a 01 level item in COBOL I? in COBOL II?Q43)In COBOL II: Q:COBOL1定义的01层最大大小是多少,COBOL II中?A:COBOL II中是,没什么说的,自己翻书Q44)How do you reference the following file formats from COBOL programs:Q:COBOL中如何涉及(引用调用)以

27、下这些文件A: 文件类型 这里是COBOL在文件控制区中的文件组织访问形式(SELECT下面那句)这里最好翻翻书或者事例代码反复记忆定长文件 用 ORGANISATION IS SEQUENTIAL. Use RECORDING MODE IS F, BLOCK CONTAINS 0固定但是不是以块的组织形式 用 ORGANISATION IS SEQUENTIAL. Use RECORDING MODE IS F, 不要使用BLOCK CONTAINS(因为不是以块的组织形式)变长文件 用 ORGANISATION IS SEQUENTIAL. Use RECORDING MODE IS V

28、,BLOCK ,CONTAINS 0.在之后的文件区中的文件描述FD中不要编码记录长度为4字节 变长但是不是以块的组织形式 用 ORGANISATION IS SEQUENTIAL. Use RECORDING MODE IS V,同样不要使用BLOCK CONTAINS也不要编码记录长度为4字节(原因同上) ESDS VSAM文件 用ORGANISATION IS SEQUENTIAL KSDS VSAM文件 用ORGANISATION IS INDEXED, RECORD KEY IS, ALTERNATE RECORD 作为关键字的RRDS文件 用ORGANISATION IS RELA

29、TIVE, RELATIVE KEY IS打印文件 用ORGANISATION IS SEQUENTIAL. Use RECORDING MODE IS F, BLOCK CONTAINS 0. (Use RECFM=FBA in JCL DCB)Q45)What are different file OPEN modes available in COBOL?Q:COBOL中有哪些OPEN方式A:有INPUT,OUTPUT,I-O,EXTEND这些OPEN模式Q46)What is the mode in which you will OPEN a file for writing? - G

30、SQ:当你想OPEN一个文件用来写入的时候,这属于什么方式A:OUTPUT,EXTEND方式Q48)Can you REWRITE a record in an ESDS file? Can you DELETE a record from it?Q:能否REWRITE(重写)一个ESDS文件?能否删除ESDS中的一条记录?A:能够重写(但是记录长度必须相同),但是不能删除Q51)What is Static and Dynamic linking ?Q:什么是静态和动态连接A:在静态连接中,被调用的子程序是连接到调用程序,但是在动态连接中,被调用子程序和调用主程序的可执行模块是都存在的(分开

31、的)。你可以在连接选项中选择DYNAM或者NODYNAM(就算你选择了NODYNAM,CALL标识符还是回把它自动转换成一个动态调用)。静态子程序下次被调用时不会再处于其初始状态,除非用INITIAL初始化或者用CANCEL。动态的都是以初始状态存在的。Q53)What compiler option would you use for dynamic linking?Q:如果要动态连接那么要用什么编译选项A:DYNAMQ62)What is an in line PERFORM? When would you use it? Anything else to say about it? Q:

32、PERFORM行有什么作用?什么时候使用?简单介绍下它A:PERFORM和END-PERFORM配套使用,所有COBOL II程序语句都在这两关键字之间。这和COBOL的PERFORM或者PERFORM THRU一段是一样的意思。在PERFORM的语句中只要没有内部GOTO就一直执行直到碰到EXIT。在行PERFORM语句中为了可读型不能超过一页的长度,他经常会引用到其他PERFORM段Q68)What is the linkage section? Q:LINKAGE SECTION是什么A:“连接区”是一个被调用程序连接或者映射到调用程序工作单元的程序部分。被调用程序中一些共享项被定义在“

33、连接区”中(想象下子程序,主程序是没有连接区的)Q71)Explain the difference between an internal and an external sort, the pros and cons, internal sort syntax etc. Q:解释下内部排序和外部排序的区别和内部排序的语法A:外部排序不是COBOL,他是通过JCL和PGM=SORT的形式排序的。这种方式不引用代码却容易理解。内部排序用两中语法:1)USING,GIVING,这种方式比得上外边排序,不用额外的文件处理。2)INPUT PROCEDURE, OUTPUT PROCEDURE,这种

34、方式适用用文件操作,并且在排序前后允许数据操作Q72)What is the difference between comp and comp-3 usage? Explain other COBOL usages. Q:COMP和COMP-3有什么区别?解释下COBOL中的USAGE语句A:COMP用的是定点二进制,COMP-3用的是内部十进制(压缩)。其他的不同USAGE语句就是二进制和DISPLAY。DISPLAY是默认情况。Q73)When is a scope terminator mandatory? Q:什么时候范围终止符强制执行A:范围终止符在行内PERFORM和EVALUAT

35、E语句中强制执行。为了程序的可读性,编码规范都建议写上这两个终止符。(也就是说PERFORM和EVALUATE就算没有END-PERFORM和END-EVALUATE也会强制终止,但是为了可读性还是建议把END-PERFORM和END-EVALUATE写上)Q75)In an EVALUTE statement is the order of the WHEN clauses significant? Q:在EVALUATE语句中,WHEN子句的顺序是否有意义A:当然有意义。EXALUATION通过WHEN子句从头到尾的执行顺序会决定结果。Q76)What is the default val

36、ue(s) for an INITIALIZE and what keyword allows for an override of the default. Q:INITIALIZE默认是值是什么?替代默认值的关键字是什么A:默认情况下INITIALIZE将空格移到字符区,将零移到数字区。REPLACING作为替代默认值的关键保留字Q81)What will happen if you code GO BACK instead of STOP RUN in a stand alone COBOL program i.e. a program which is not calling any

37、other program.Q:在COBOL中如果你用GO BACK代替STOP RUN会发生什么,该程序没有调用别的程序A:当然是会无限循环下去Q83)What is the difference between a DYNAMIC and STATIC call in COBOL.Q:COBOL中动态动用和静态调用有什么区别A:所有被调用的模块都不能单独跑除非这些模块要求程序通过连接区传递变量给他们。动态调用的模块就是那些在连接编辑时(LEWL)没有被调用程序限定的模块,这些模块在程序库(JOBLIB,STEPLIB)中被加载以连接JOB。要动态调用一个模块,DYNAM的编译器选项要被选中

38、,另外,连接编辑器不能是可执行的,因为他会要你处理所有的模块。一个静态调用在连接编辑时被调用程序限制,所以变成了可执行模块的一部分。Q85)What is the purpose of Identification Division?A85)Documentation.Q:写标识区是什么目的A:标识一些作者等信息,便于文档管理Q86)What is the difference between PIC 9.99 and 9v99?Q:PIC 9.99和9V99有什么区别A:PIC 9.99是一块占用了4个位置的区域,因为包括了一个小数点,但是9V99只占用3个位置,因为V不占位Q87)what

39、 is Pic 9v99 Indicates? Q:PIC 9V99指什么A:PIC 9V99指一段含有一个不占位置的小数点的占三个位置的数值区域。小数点位置在第一个位置之后,V表示一个隐含的小数点。Q90)What is the difference between SEARCH and SEARCH ALL? What is more efficient?Q:SEARCH和SEARCH ALL有什么区别?哪个更高效A:SEARCH是顺序查找,从头到尾。SEARCH是二叉搜索。超过70个数据项的时候SEARCH ALL效率更高Q95)Give some advantages of REDEF

40、INES clause.Q:说明REDEFINES子句的优点A:1:你能用另一个PICTURE(另一种类型)重定义之前的一种类型,并且以相同的起点 2:在工作单元区中能通过REDEFINES初始化变量 3:能够通过重定义一个变量而重定义很多子变量。(这个来解决Y2000问题很方便) PS:在多维表的元素初始化中也用到REDEFINE,不过这和第3点作用类似Q96)What is the difference between static call & Dynamic callQ:静态调用和动态调用有什么区别A:在静态调用的情况下,被调用的程序是单独的一段程序,他是一段可执行的程序。在跑程序的时候能够调用它。而关于动态调用,被调用程序并不是一段可执行程序,但能通过调用程序而执行Q99)Why do we code S9(4) comp. In spite of knowing comp-3 will occupy less space.Q:既然已经知道COMP-3会占用较少的空间,为什么还要编码S9(4)COMPA:这里S9(4)COMP是个小整数,所以2个数值相当于一个字节,所以一共占用2字节。如果是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论