




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、COBOL经典面试题库Q1:列举COBOL的DEVISIONA1:标识部,环境部,数据部,过程部Q2:COBOL有哪些可用的数据类型A2:字符型(这里指的是包含字母和数字,字母型,数字型Q3:INITIALIZE这个词做了些什么A3:将字母,字符,数字区域都置成空格(置空,将数字区置0, FILLER和OCCURS DEPENDING ON项不处理Q4:77层有什么作用A4:基本层数据项,不能用做细分别的层,也不能被细分(来源:Q5:88层有什么作用A5:条件逻辑层Q6:66层有什么作用A6:重命名层Q7:IS NUMERIC这个子句怎么确定(也就是
2、说确定句子的真值A7:IS NUMERIC用在字符项,带符号数字,浮点数,不带符号数。如果目标项只含09则返回TRUE。但是,如果待测项目是个带符号数,那么他就含有0-9还有+和-05 ARRAY1 PIC X(9 OCCURS 10 TIMES.05 ARRAY2 PIC X(6 OCCURS 20 TIMES INDEXED BY WS-INDEXQ8:COBOL中怎么建表/数组A8:如上.Q9:OCCURS 子句能用在第一层吗A9:不能Q10:索引和下标有什么区别A10:下标可以指定数组中任意中位置的元素(只要知道其下标,下标只能是数字型常量或者数字型变量(但是不能在指定的时候修改,如:
3、A(K+1这样是不行的,要修改的话要在指定的外部改,如:ADD 1 TO K,而索引的话是从表头/数组头开始检索(以BY N的指定检索规律往后滚再者,索引只能通过PERFORM, SEARCH 和SET来修改,如果要在一个表中使用SEARCH, SEARCH ALL,那这个表就要有索引(因为SEARCH, SEARCH ALL的参数中指定索引,所以即使其有很多限制还是得用它Q11:SERACH和SERACH ALL有什么区别A11:SEARCH是顺序查找SERACH ALL 是2叉查找(相信数据结构学过2叉树的都不会陌生,在使用SEARCH ALL前表必须有一个递增/递减的KEY,并且表已经按
4、照其KEY值排序了,这样才能使用SEARCH ALLQ12:为了使用SEARCH ALL,存贮顺序是怎么样的A12:他必须是递增或者是递减的,默认地政。如果你想在一个递减顺序存贮的表/数组使用搜索的话,那么当定义表/数组的时候你应该加一个DESCENDING KEY 子句(这之前表要已经按指定的顺序排序了Q13:什么是2叉查找A13:将你要找的目标项与数组的正中项比较,找到就结束搜索,没找到则继续如此循环(比较下一个中值,取哪一半取决于目标值大于中值还是小于中值PS:联想2叉树的查找规律就很好理解,因为所谓的“表“本身也就是数组Q14:我的程序有个数组定义了10项。因为有个BUG,我发现即使访
5、问第11项,程序也不异常终止。那是出了什么问题A14:必须使用编译器的一个选项SSRANGE,如果你想检查数组的超界问题。默认是NOSSRANGEQ15:怎么在一个COBOL程序中排序?给出排序文件的定义,排序语法和意思A15:语法就是SORT file-1 ON ASCENDING/DESCENDING KEY key. USING file-2 GIVING file-3.USING后程序的输入接口,这个地方可以替换成一个输出过程,也就是说写一个过程往USING这个接口中导数据(要在这个过程中READ,AT END,这个过程在将数据释放到执行排序的文件中之前执行,GIVING后是输出借口,
6、用法类似。此例中输入文件是file-2输出文件是file3(这样个文件必须在文件区中用FD和在文件控制中用到SELECT真正执行排序的file-1,这里需要注意的是file-1中的文件区不能用FD,应该用SD,file-2和3还是一样(用FD,具体可以看一下书上的例子Q16:怎么在JCL中定义一个排序文件来跑这个COBOL程序A16:用SORTWK01, SORTWK02,.作为DATA SET NAME。用多少取决于你要排序的数量,但是至少3个。Q17:执行一个区和一个段有什么区别A17:简单来说的话就是区的概念比段大,执行一个区就要执行其内部所有段,执行段的话只执行该段。Q18:EVALU
7、ATE语句有什么作用A18:EVALUATE就象个CASE语句(多重开关语句,学过C的总知道吧,不同点在于EVALUATE不需要BREAK,一旦匹配就跳出EVALUATE语句了Q19 What are the different forms of EVALUATE statement?A19EVALUATE EVALUATE SQLCODE ALSO FILE-STATUSWHEN A=B AND C=D WHEN 100 ALSO 00imperative stmt imperative stmtWHEN (D+X/Y = 4 WHEN -305 ALSO 32imperative stmt
8、 imperative stmtWHEN OTHER WHEN OTHERimperative stmt imperative stmtEND-EVALUATE END-EVALUATEEVALUATE SQLCODE ALSO A=B EVALUATE SQLCODE ALSO TRUEWHEN 100 ALSO TRUE WHEN 100 ALSO A=Bimperative stmt imperative stmtWHEN -305 ALSO FALSE WHEN -305 ALSO (A/C=4imperative stmt imperative stmtEND-EVALUATE EN
9、D-EVALUATEQ20:怎么跳出一条EVALUATE语句A20:象18题目说的那样,一旦匹配了某一个“WHEN“语句就自动跳出了,不需要什么额外的代码来跳出Q21:在一个EVALUATE语句的某个WHEN分支中能否再插入复杂的情况(也就是嵌套A21:当然可以,当多个参数作为控制变量的时候1个WHEN内部可以嵌套更多的情况Q22:什么是结束终止符A22:结束终止符是搭配一些范围指令的,也就是标识一些范围指令的结束。如: EVALUATE, END-EVALUATE; IF, END-IF 如果没有该结束符,该条语句将终止不了Q23:怎么使用内嵌的PERFORMA23:PERFORM END-
10、PERFORM所谓内嵌也就是PERFORM被嵌在某些比如循环语句中担当执行主体,同时通过UNTIL来指定结束判定Q24:什么时候使用内嵌式PERFORMA24:当该段PERFORM的内容不被其他段用到,只在某些局部代码中(当然PERFORM 的主体所用到的参数也都是局部的,例如循环使用,如果PERFORM主体的代码是一般的(用到了别的程序段的变量,还是使用PERFORM Para name这样的形式比较好(也就是相对与内于PERFORM的外部PERFORM。Q25:CONTINUE 和 NEXT SENTENCE有什么不同A25:两者比较相似,都是将程序控制权交给下一句,但是用NEXT SEN
11、TENCE的时候,只有当碰到句结束符(就是句末的.才会将执行下句这道题我用了2个例子测试了一下:1:IF TEST-NUMERIC > 0THEN NEXT SENTENCEEND-IFDISPLAY LINE1 DISPLAY LINE2. DISPLAY LINE3.(请注意代码中的.号结果输出:LINE32:IF TEST-NUMERIC > 0THEN CONTINUEEND-IFDISPLAY LINE1 DISPLAY LINE2. DISPLAY LINE3.结果输出:LINE1LINE2LINE3相信已经区别已经比较明显了,NEXT SENTENCE是靠句末的结束符
12、(也就是.来判断下一句的,而CONTINUE是通过句头的保留字(这例中是DISPLAY来判断下一句的Q26:EXIT语句有什么作用A26:什么都不做,如果用到的话,肯定是作为一段的唯一的一句话,注意:这里不是子程序中用的EXIT PROGRAME01 WS-TOP PIC X(101 WS-TOP-RED REDEFINES WS-TOP PIC X(2.If you MOVE 12 to WS-TOP-RED,DISPLAY WS-TOP will show 1 whileDISPLAY WS-TOP-RED will show 12.Q27:能不能把X(100的区域重定义成X(200A27
13、:可以,重定义只是相当于把两个区域的首地址放在一起,从上面这个例子也很好理解Q28:能不能把X(200的区域重定义成X(100A28:可以,原因同上Q29:怎么解决SOC-7错误A29:基本上你要看一下一些比较奇怪的数据,很多导致SOC7的原因都是因为数据项的初始化。首先检查所有的可能性。某些功能可能提供一个空间用来存贮那些运行时间ABEND,并且提供最近一次运行时间ABEND的偏移量的说明(也就是位于队列中的位置,检查编译器的输出XREF队列以获得一些关键字。然后你就能看下源代码找出BUG。为了捕获一些运行时间的信息,你需要在JCL中建一个DATASET (象SYSABOUT这样的,如果这些
14、都没用,那么再审查一下ERROR出现的位置判断一下原因。有些软件安装了会提供批处理程序调试工具,那么可以就可以用这些工具了。PS:以上大意就是说SOC-7这个错误多半是因为数据项初始化造成的,然后你应该到运行后编译器的返回信息中去找这些ERROR出现的地方(我们常用的话应该就是走查LOG,查的时候多注意下数据项的初始化问题。Q30:在内部十进制区域和显示十进制区域符号是怎么存贮的A30:内部十进制是一个数字占4位(半字节,内存中用16进制来存,最后在追加4位作为符号,如-4=01001101(末尾的1101表示负,1100表示正,而我们用于显示的十进制,符号并不占空间,只是在最后一位上标识一下
15、Q31:COMP-3区怎么存储符号A31:COMP-3采用的是内部十进制的存储方式,所谓内部十进制就是压缩式的外部十进制存储方式,上题讲过外部十进制每个数值都用1个字节存储,但前4位是存符号的,这样比较浪费存储空间,所以内部十进制的存储方式就用半个字节(4位存储一个数字,在最后增加4位作为符号(1100(C为正,1101(D为负Q32:COMP区怎么存储符号A32:COMP是采用定点二进制的方式存储数据,也就是将一个十进制的数值转化成二进制再进行存储,因为机器存储的形式也是二进制,所以定点二进制的读取是最快速的,因为COMP型的数据是用做计算(也就是说不用再转化成十进制打印,使用定点二进制将会
16、非常高效。这样的存储方式符号是保存在最高有效果位上,如:10=(00001010,-10=(00011010Q33:COMP和COMP-3什么区别A33:这之前讲过了,COMP采用定点二进制存储,COMP-3采用内部十进制存储Q34:COMP-1是什么?什么是COMP-2A34:其实之所以定义计算型数据(COMPCOMP-3以区别DISPLAY(能计算,但是要用于打印是为了考虑效率,因为大家知道文件导入(也就是USER使用的数据一般是十进制的,而机器存储都是二进制,那么当定义的数据光用来计算不用打印,处于效率考虑会把它定义成COMP型,当然就会衍生出几类COMP以适应不用的数据类型的存储。很明
17、显,这里COMP-1就是采用内部短浮点(4个字节表示一个数,8位指数部分,24位表示数字部分,COMP-2用内部长浮点型(8个字节表示一个书,16位指数部分,48位表示数字部分以适应浮点数据的存储,长浮点精确度更高.Q35:怎么定义一个COMP-1型?COMP-2型A35:不要用PICTURE描述,因为是确定分配多少内存的,直接用USAGE,如01 WS-VAR USAGE COMP-1Q36:一个S9(7的COMP-3型占用多少字节?A36:占用4字节。COMP-3用内部十进制存储,S9(7中的S是要占空间的,符号占4位,7个数字,每个4位(半个字节,所以是(4+7*4/8=4字节(字节和位
18、的比例不要搞错了哦Q37:一个S9(7 SIGN TRAILING SEPARATE区域占多少字节A37:这里是每个符号单独分配空间(也就是没个数值用1个字节表示,就象最常用的DISPLAY型的分配方式,算上S的空间,所以是7+1=8字节。一般情况省略的SIGN子句都是隐含SIGN IS TRAILING的Q38:一个S9(8 COMP 区域占多少字节A38:如果之前关于COMP的解释听懂了的话,那很显然就是4字节了(定点二进制用2字节存储14,4字节存储59,类推,你可以自己推下,如果这块还不懂的可以问我或者查下书Q39:S9(8COMP型最多存储的最大值是什么A39:除了8个数值外不要忽略
19、符号位Q40:COMP SYNC是什么A40:使数据项按“自然边界”排列。SYNCHRONIZED(简写SYNC语句是同步安置语句。不同的机器会有一个机器字的概念(以一个WORD四个字节举例,这个数字因机器各异,但往往是四个字节,两个机器字之间就是这里说的“自然边界”,也就是说机器每次从内存中取出二个字节长度的数据,但是一个数据项中含有的数值可能跨越几个机器字或者未填满机器字,这样连续读取虽然比较省空间,但是要引用某些机器字的时候要把多个拿出来重新组织(因为一个数值可能跨越多个数据字,也可能未满,机器就要判断一个机器字中哪些是前一个数值哪些是下个数值。如果向左对齐的话就是想左“自然边界”靠,也
20、就是说未满一个数据字的用空格(对非数字项或者零(数字项填充,填充部分不能插入其他数据项的内容,同理向右对齐就是向机器字的右“自然边界”靠,类似的在左边的空余部分填充。按照自然边界存储相当与牺牲空间换取时间,存取效率,系统读取的机器字两段填充区域(0或者SPACE之间就是一个数值,效率很高。Q41:COBOL1定义的01层最大大小是多少,COBOL II中?A41:COBOL II中是16777215,没什么说的,自己翻书Q42:COBOL中如何涉及(引用调用以下这些文件A42:文件类型这里是COBOL在文件控制区中的文件组织访问形式(SELECT下面那句这里最好翻翻书或者事例代码反复记忆定长文
21、件用 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,BLOCK , CONTAINS 0.在之后的文件区中的文件描述FD中不要编码记录长度为4字节变长但是不是以块的组织形式用 ORGANISATI
22、ON IS SEQUENTIAL. Use RECORDING MODE IS V,同样不要使用BLOCK CONTAINS也不要编码记录长度为4字节(原因同上ESDS VSAM文件用ORGANISATION IS SEQUENTIALKSDS VSAM文件用ORGANISATION IS INDEXED, RECORD KEY IS, ALTERNATE RECORD 作为关键字的RRDS文件用ORGANISATION IS RELATIVE, RELATIVE KEY IS打印文件用ORGANISATION IS SEQUENTIAL. Use RECORDING MODE IS F, B
23、LOCK CONTAINS 0. (Use RECFM=FBA in JCL DCBPS:这道题是阐述COBOL怎么调用外部的各种文件,在文件控制区以及文件区中要定义的一些关键字,有我们最熟悉的FB(定长和VB(变长(当然我们的前提是这两类都是以BLOCK(块为单位的但是也有不为我们所知的文件类型(可能出现的情况很少,但是也确实存在,比如编译出的MODULE放的LOAD必须是V文件(文件组织形式是V当然在不写ORGANISATION这些关键字的时候都是默认为FB的,但是在处理一些复杂数据(比如VSAM数据还有和外部文件(比如JCL的连接的时候这些保留字都是要指定的,关于更具体的还是要翻书加强记
24、忆Q43:COBOL中有哪些OPEN方式A43:有INPUT,OUTPUT,I-O,EXTEND这些OPEN模式Q44:当你想OPEN一个文件用来写入的时候,这属于什么方式A44:OUTPUT,EXTEND方式Q45:JCL中怎么定义在子程序中要调用的文件A45:就象要在主程序中调用一样使用DD语句Q46:能否REWRITE(重写一个ESDS文件?能否删除ESDS中的一条记录?A46:能够重写(但是记录长度必须相同,但是不能删除Q47:文件状态92是什么?A47:是文件状态的一个返回码,是逻辑错误的意思,比如,打开了一个文件用来导入数据但是又想将其他数据写入这个文件Q48:文件状态39是什么A
25、48:当你的COBOL的逻辑记录长度(LRECL或者块长度(BLOCKSIZE或者记录形式(RECFM和 JCL匹配错误,文件状态参数就会返回39Q49:什么是静态和动态连接A49:在静态连接中,被调用的子程序是连接到调用程序,但是在动态连接中,被调用子程序和调用主程序的可执行模块是都存在的(分开的。你可以在连接选项中选择DYNAM或者NODYNAM(就算你选择了NODYNAM,CALL标识符还是回把它自动转换成一个动态调用。静态子程序下次被调用时不会再处于其初始状态,除非用INITIAL初始化或者用CANCEL。动态的都是以初始状态存在的。Q50:AMODE(24,AMODE(31,RMOD
26、E(24和RMODE(ANY是什么?(仅适用于MVS/ESA 企业管理器A50:是编译/连接的选项卡。基本上AMODE表示寻址方式,RMODE 表示贮存方式。AMODE(24:24位的寻址方式AMODE(31:31位的寻址方式AMODE(ANY:是用24位还是31位的寻址方式取决于REMODERMODE(24:存在虚存中超过16Meg lne(MEG LINE是某种单位允许31位的程序调用24位的程序。(OS/VS COBOL的PGM只有24位的存址RMODE(ANY-超过或者不到16Meg lineQ51:如果要动态连接那么要用什么编译选项A51:DYNAMQ52:SSRANGE,NOSSR
27、ANGE是什么A52:这在之前已经提到过了,是编译器的一个选项,用来核对数组索引或者下标的超界问题(比如只定义了10个元素程序却使用了第11个元素的情况默认情况下是NOSSRANGE,如果选了NOSSRANGE,那么当索引和下标超界的时候也不会报RUN TIME ERRORQ53:怎么从一个COBOL程序设置一个JCL的返回码A53:把你想设置的值MOVE到RETURN-CODE这个寄存器中。RETURN-CODE寄存器并未在这COBOL程序中申明Q54:怎么在COBOL程序中提交一个JOBA54:把一个JCL用“/xxxxxxx SYSOUT= (A,INTRDR”写到一个DATASET中,
28、A 是输出组,在程序中要将这个DATASET作为OUTPUT(输出打开。为这个文件定义一个80字节的记录格式长度Q55:OS/VS COBOL和VS COBOL II有什么区别A55:OS/VS COBOL的PGM只能是24位地址的,VS COBOL II的PGM既能24位又能31位报表writer只支持OS/VS COBOLUSAGE IS POINTER只支持VS COBOL IIREFERENCE(感觉翻成“引用”合适点修改,比如:WS-VAR只支持VS COBOL II 只有COBOL II有EVALUATE语句范围终止符只有COBOL II中才有OS/VS COBOL是按照ANSI
29、74标准,VS COBOL II是按照ANSI 85标准VS COBOL II程序之间允许CICS调用Q56:建立一个COBOL可执行程序要通过哪些步骤A56:DB2预编译(如果内含SQL,CICS翻译器(如果是CICS PGM,COBOL编译器,连接编辑器,如果是DB2程序,要建立绑定DBRM的PLANQ57:能不能在VS COBOL II的PGM中调用OS VS COBOL的PGM?A57:在没有CICS的环境中,是可以的,在CICS环境中不行Q58:COBOL和COBOL II什么区别A58:有五点不同,COBOL II支持结构变成(通过PERFORMS和一系列范围终止符;COBOL I
30、I引进了些新的特性(如EVALUATE,SET TO TRUE,CALL,BY CONTEXT,等等,COBOL II允许程序编址在16MB行上;COBOL II不支持一些旧的特性(如READY TRACE,REPORT-WRITER,ISAM,ETC,以及支持加强版CICSQ59:什么是范围终止符A59:一个范围终止符和其之前的动词配套使用,如,IF和END-IF,以至于前置动词和终止符一起作用。COBOL II其他普通的词是READ,PERFORM,EVALUATE, SEARCH和STRINGQ60:PERFORM行有什么作用?什么时候使用?简单介绍下它A60:PERFORM和END-P
31、ERFORM配套使用,所有COBOL II程序语句都在这两关键字之间。这和COBOL的PERFORM或者PERFORM THRU一段是一样的意思。在PERFORM 的语句中只要没有内部GOTO就一直执行直到碰到EXIT。在行PERFORM语句中为了可读型不能超过一页的长度,他经常会引用到其他PERFORM段Q61:NEXT SENTENCE和CONTINUE有什么区别A61:(这在前面已经详细说明,这样仅就文字翻译NEXT SENTENCE当碰到.转移程序控制权给下句,CONTINUE碰到范围终止符就转移程序控制权给下句。所以用CONTINUE比用NEXT SENTENCE安全(即使忘记写.也
32、没有关系。Q62:COBOL II中的EVALUATE相当于取代了COBOL中的什么结构A62:EVALUATE相当于取代了COBOL中的IF THEN ELSE的嵌套语句Q63: above the line和below the line有什么意义A63:在IBM推出MVS/XA体系之前,80年代的程序虚拟存储都限制在16 megs.程序以24位的方式仅在一个16Mb的地址空间中被编译,就好象那些程序被保存在虚存中一样。使用COBOL II编码之后,以31位方式的编码能超过16位的界线。(也就是说COBOL II之前是“在此界线之下”的,COBOL II之后“在这接线之上”,这通常容易使一些
33、主机程序员搞混Q64:COBOL II从COBOL中舍弃了哪些A64:部分列表(指COBOL中有的,COBOL II中没有的部分语句:REMARKS, NOMINAL KEY, PAGE-COUNTER, CURRENT-DAY, TIME-OF-DAY, STATE, FLOW, COUNT, EXAMINE, EXHIBIT, READY TRACE and RESET TRACE.Q65:通过比较和其他调用的区别解释下CONTEXT调用A65:传入CONTEXT调用的参数是能防止被其他程序调用修改的。普通的调用,别的程序能够修改Q66:LINKAGE SECTION是什么A66:“连接区
34、”是一个被调用程序连接或者映射到调用程序工作单元的程序部分。被调用程序中一些共享项被定义在“连接区”中(想象下子程序,主程序是没有连接区的Q67:在表的定义中,下表和索引有什么区别A67:(这也在前面的题目也解释过了,这里仅对文字作翻译。下表是工作单元数据定义项,具有代表性的就是将一个常量移到一个PIC 999下标中,通过ADD TO 和SUBTRACT FROM来增减。索引是一个存在在程序工作单元之外的记录项。用SET设置一个索引的值,并用UP BY和DOWN BY设置步长来增减Q68:如果通过连接传递一个表,使用哪个更优-下标或者索引?A68:注意!是不能通过连接传递索引的。索引并不是调用
35、程序工作单元的一部分。这点经常搞错Q69:解释下内部排序和外部排序的区别和内部排序的语法A69:外部排序不是COBOL,他是通过JCL和PGM=SORT的形式排序的。这种方式不引用代码却容易理解。内部排序用两中语法:1USING,GIVING,这种方式比得上外边排序,不用额外的文件处理。2INPUT PROCEDURE, OUTPUT PROCEDURE,这种方式适用用文件操作,并且在排序前后允许数据操作Q70:COMP和COMP-3有什么区别?解释下COBOL中的USAGE语句A70:COMP用的是定点二进制,COMP-3用的是内部十进制(压缩。其他的不同USAGE语句就是二进制和DISPL
36、AY。DISPLAY是默认情况。Q71:什么时候范围终止符强制执行A71:范围终止符在行内PERFORM和EVALUATE语句中强制执行。为了程序的可读性,编码规范都建议写上这两个终止符。(也就是说PERFORM和EVALUATE就算没有END-PERFORM和END-EVALUATE也会强制终止,但是为了可读性还是建议把END-PERFORM和END-EVALUATE写上Q72:COBOL的PERFORM中什么时候测试CONDITION,在执行PERFORM之前还是之后A72:在COBOL II中有个WITH TEST BEFORE 或者WITH TEST AFTER的选项子句能够指定在执行
37、前还是后测试CONDITION,默认情况是在执行前测试Q73:在EVALUATE语句中,WHEN子句的顺序是否有意义A73:当然有意义。EXALUATION通过WHEN子句从头到尾的执行顺序会决定结果。Q74:INITIALIZE默认是值是什么?替代默认值的关键字是什么A74:默认情况下INITIALIZE将空格移到字符区,将零移到数字区。REPLACING 作为替代默认值的关键保留字Q75:总之,说明关于SET TO TRUE的一切A75:在COBOL II中88层是通过将关联值移到关联数据项中来设置的(这点改变并不是COBOL II好的地方。(也就是说88层是通过其关联的数据项也就是上一层
38、的,比如Y或者N来决定TRUE或者FALSEQ76:COBOL II中LENGTH是什么A76:LENGTH就象个专用寄存器来显示GROUP的长度或者基本项的长度Q77:二叉搜索和顺序搜索有什么区别?相关的COBOL命令是什么A77:(关于二叉搜索之前已经详细讲过了要用二叉搜索一个表,那该表一定要按照这个KEY值是排序的(递增或者递减。该表被一次次得平分直到找到目标元素。顺序搜索是从表头查到尾,所以这些元素是不是按照什么顺序排的无所谓。二分搜索对于大数据量的表查找速度很快,顺序搜索适合数据量小的表。SEARCH ALL用在二叉搜索中,SEARCH用在顺序查找中Q78:REPLACING项复制语
39、句的要点是什么A78:REPLACING用对指定的数据做不止一次的相同拷贝,也就是说在同一段程序中要多次拷贝相同的数据的时候用REPLACINGQ79:在COBOL中如果你用GO BACK代替STOP RUN会发生什么,该程序没有调用别的程序A79:当然是会无限循环下去Q80:怎么知道一个模块是动态的还是静态的A80:只能通过看连接编辑器(IEWL或者LOAD模块本身(编译生成的模块的输出来看是DYNAMICALLY还是STATICALLY的。如果一个模块被叫成动态模块,那么他不会出现在主模块中,如果是静态模块,那么会出现在LOAD模块中。调用一个工作单元区的变量,包括一个程序名,并不是动态调
40、用。这种被工作单元区内容中的变量以调用模块名字的的形式的调用是固定调用。Q81:COBOL中动态动用和静态调用有什么区别A81:所有被调用的模块都不能单独跑除非这些模块要求程序通过连接区传递变量给他们。动态调用的模块就是那些在连接编辑时(LEWL没有被调用程序限定的模块,这些模块在程序库(JOBLIB,STEPLIB中被加载以连接JOB。要动态调用一个模块,DYNAM的编译器选项要被选中,另外,连接编辑器不能是可执行的,因为他会要你处理所有的模块。一个静态调用在连接编辑时被调用程序限制,所以变成了可执行模块的一部分。Q82:JCL-COBOL中有几个区A82:四个区Q83:写标识区是什么目的A
41、83:标识一些作者等信息,便于文档管理Q84:PIC 9.99和9V99有什么区别A84:PIC 9.99是一块占用了4个位置的区域,因为包括了一个小数点,但是9V99只占用3个位置,因为V不占位Q85:PIC 9V99指什么A85:PIC 9V99指一段含有一个不占位置的小数点的占三个位置的数值区域。小数点位置在第一个位置之后,V表示一个隐含的小数点。Q86:按照什么原则/方针去写一段结构化的COBOL程序(也就是程序规范A86:1用EVALUATE语句去对应不用的情况2嵌套的时候不要忘记写范围终止符3用PERFORM语句来写要执行的语句(也就是说把要执行的语句写成一段然后用行PERFORM
42、语句去执行,不要光把要执行的语句罗列在主程序中4用在使用PERFORM语句之前和之后都检测(我们现在常用的是检测文件状态这种方式来写DO-WHILE结构(不要问我DO-WHILE结构是什么Q87:01 ws-n pic 9(2 value zero.a-para.move 5 to ws-n.perform b-para ws-n times.b-para.move 10 to ws-n.这段程序中b-para被执行几次A87:只执行5次。在循环中并不会取这个10的值。我的理解是:在第一次执行perform b-para ws-n times.的时候并没有通过move 10 to ws-n.修
43、改ws-n的值,也就是说在该循环语句中取到的ws-n还是5,那就该执行(将10移到ws-n 5次,如果最后再跟一句c-para.perform b-para ws-n times.这样的话b-para就该执行10次了Q88:SEARCH和SEARCH ALL有什么区别?哪个更高效A88:SEARCH是顺序查找,从头到尾。SEARCH是二叉搜索。超过70个数据项的时候SEARCH ALL效率更高Q89:给出命令终止符的例子A89:END-IF,END-EVALUATEQ90:强制程序执行超过16Meg行的时候应该注意什么A90:确认连接选项AMODE=31和RMODE=ANY.Q91:怎么通过C
44、OBOL提交一个JCLA91:将/dd1 DD sysout=(*, intrdr写在JCL中Q92:怎么在一个COBOL程序中执行一段JCL语句A92:使用EXEC CICS SPOOL WRITE(变量 END-EXEC命令。变量名是一个包括一段JCL语句的COBOL结构Q93:说明REDEFINES子句的优点A93:1:你能用另一个PICTURE(另一种类型重定义之前的一种类型,并且以相同的起点2:在工作单元区中能通过REDEFINES初始化变量3:能够通过重定义一个变量而重定义很多子变量。(这个来解决Y2000问题很方便PS:在多维表的元素初始化中也用到REDEFINE,不过这和第3点
45、作用类似Q94:静态调用和动态调用有什么区别A94:在静态调用的情况下,被调用的程序是单独的一段程序,他是一段可执行的程序。在跑程序的时候能够调用它。而关于动态调用,被调用程序并不是一段可执行程序,但能通过调用程序而执行Q95:你认为怎么才能写相互好的程序A95:一段好的程序要遵循从上到下步骤。这也能使程序员和用户能够根据逻辑容易得读懂程序Q96:怎么编写一个COBOL去访问一个JCL定义的参数?你会在JCL的EXEC行上写PARM参数吗?A96:1用JCL的SYSIN。/sysin dd *这里你写参数*/ 这样就能把参数传给COBOL2)在 JCL 中用 PARM 语句,比如:在 EXEC
46、 行写 parm=john,'david,那么 你就必须在 PGM 的连接区中为第一个值写变量长度和变量名,如:abc pic x(4, 就会在这个变量前加上之前的 PARM(john,'david),你需要用以上的方 法定义其他参数 Q97:既然已经知道 COMP-3 会占用较少的空间,为什么还要编码 S9(4)COMP A97:这里 S9(4)COMP 是个小整数,所以 2 个数值相当于一个字节,所以一共 占用 2 字节。如果是 S9(4)COMP-3 的情况就是 1 个数值占半个字节。4 个数值 占用 2 个字节,符号占半个字节,这么算一共是 2 个半字节,但是系统存储的
47、最 小单位是字节,所以一共占 3 个字节 虽然 COMP-3 占用少的空间(这里的较少是相对于 DISPLAY 型说的),但是 COMP 占用少的时间,效率更高。 Q98:在 COBOL-85 中一个数组最多能是几维的 A98:COBOL-85 最多是七维,COBOL-84 最多是三维 01 EMP-GRP. 49 E-LEN PIC S9(4 COMP. 49 E-NAME PIC X(25. Q99:在 COBOL 中怎么申明一个带有类型为 25 位字符型属性的变量 A99:答案见上 Q100:请区分 COBOL 和 COBOL II(大部分程序是用 COBOL II 写的,所以比较好 理
48、解,但是这和 COBOL 是不同的) A100:以下是 COBOL 与 VS COBOL II 的不用点 支持 MVS/XA 和 MVS/ESA。COBOL 提供的编译器和 OBJECT 程序能够在 24 或者 31 位的寻址方式下执行 支持 VM/XA 和 VM/ESA。其提供的编译器和 OBJECT 程序能够在 24 或者 31 位的寻 址方式下执行 支持 VSE/ESA。其提供的编译器和 OBJECT 程序能够在 VSE/ESA 环境下执行 Q101:PERFORM 是什么?VARYING 是什么?(详细介绍下这些子句) A101:PERFORM 语句是过程部的语句,它能将程序控制权交给
49、一段指定的程序, 并按照指定的次数执行(也就是说执行一段程序,PERFORM XXX N TIMES)等到 这段程序执行完之后 (比如, 指定要执行的次数执行到了或者 UNTIL 后的判断逻 辑为真),那么程序控制权就会转到下一条执行语句(也就是执行下一条语句, 紧跟该 PERFORM 的),有 5 种 PERFORM 语句: 基本 PERFORM PERFORM XXX N TIMES PERFORM XXX UNTIL YYY PERFORM XXX VARYING 内嵌 PERFORM Q102:数据部中有几个区 A102:6 个区 1,文件区;2,工作单元区;3,本地存储区;4,屏幕显示区;5, 报告区;6,连接区 Q103:REDEFINES 子句是什么 A103:当想用不用的数据名写在相同的存储分配地址的时候用 REDEFINES Q104:S9(4)COMP-3 占多少字节 A104:3 个字节 Q105:索引和下标的区别是什么 A105:下标引用数组的出现位置,索引
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字技术在文化交流中的应用-全面剖析
- 文件系统数据恢复-全面剖析
- 中国人民大学信息技术中心招聘真题2024
- 保定市博野县中医医院招聘真题2024
- 2025年辅导员招聘考试题库:大学生思想政治教育案例分析试卷
- 2025-2030全球及中国汽车后视镜控制开关行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 消费者投诉行为特征分析-全面剖析
- 2025-2030全球及中国捐赠者管理软件行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2025-2030全球及中国家庭护理塑料瓶行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2025年注册建筑师专业知识考核试卷:建筑结构与施工工艺试题
- 湖南省炎德英才名校联考联合体2024-2025学年高二下学期3月月考-数学+答案
- (3月省质检)福建省2025届高三毕业班适应性练习卷英语试卷(含答案)
- 生猪屠宰兽医卫生检验人员理论考试题库及答案
- 2023年广东省中学生生物学联赛试题解析(word)及答案(扫描版)
- 每周安全安全检查记录表
- 《这是我的家》-完整版PPT
- 浙美版六年级下册美术全册教案
- 《云南省食品安全地方标准 天麻》编制说明
- 基于语音信号去噪处理的FIR低通滤波器设计要点
- G414(五) 预应力钢筋混凝土工字形屋面梁
- 木箱制作作业指导书
评论
0/150
提交评论