COBOL经典面试题目Word下载.docx
《COBOL经典面试题目Word下载.docx》由会员分享,可在线阅读,更多相关《COBOL经典面试题目Word下载.docx(18页珍藏版)》请在冰点文库上搜索。
如果空间参数使用过了,系统则终止JOB并且不创建*****,MOD可以被用
来扩展一个*****的空间。
经常用MOD为一个编目的*****指定CATLG的属性,既使它已经编目了,因此在编目中可以增加任何连续的空间来写记录。
@*****怎么从一个STEP传递到另一个STEP?
传递由DISP参数决定,使用*****只能被传递到下一个STEP
@//*****DDDSN=JAN.DATA,DISP=SHR
//DDDSN=FEB.DATA,DISP=SHR
//DDDSN=MAR.DATA,DISP=SHR
*****怎么级联的?
*****级联是通过先写一个一般的DD语句,然后加上一个没有DDNAME的DD语句,看读取顺序被级联。
@在procs那些JCL语句不能命名
在过程中不允许的JCL语句:
1.JOB,分隔符(/*),或空语句
2.JOBLIB或JOBCATDD语句
3.DD*或DATA语句
4.任何JES2或JES3控制语句
@一个数据集的初次分配是什么
数据集建立时的空间
@一个数据集的主分配和从分配有什么区别
从分配是当要求更多空间时所分配的
@你如何创建一个临时数据集吗?
在哪里可以使用它们?
可以创建临时数据集通过不指定任何DSNAME或指定DSN=TEMP。
我们把它们输出到在同意作业步上的工作。
一旦作业完成,这个临时数据集就会被删除。
@甚么是S0C4错误
存储违反错误由多种原因决定,例,*****是一个美有打开的文件,
@SD37,SB37,SE37abends是甚么
表示磁盘空间不足
SD37没有指定的从分配
SB37终止卷,并且没有根多的卷被指定
SE37已经分配到最大16extents
@甚么是S322abend
需要更多的CPU时间程序已经超过了默认的为该作业分配的CPU时间,陷入一个无限循环..@TIME参数的意思是甚么?
TIME=1440表示甚么
TIME当程序需要更多的CPU时间时用于克服S322abends
TIME=1440表示作业的运行没有时间限制,即24小时。
@COND=EVEN
即使先前作业步异常终止,本作业步都要执行
@COND=ONLY
只有先前作业步异常终止,本作业步才执行
@如何在一个JCL中检查是否有语法错误
在JOB过程中,*****=SCAN或JSCAN.
@在PROC中的流数据可以编码吗
No
如何解决这个限制呢
在PROC内编写SYSINDDDUMMY,然后从JCL用流数据覆盖它
@当一个JCL中既定义了JOBLIB,又定义了*****,则会怎样
JOBLIB被忽略
@在JCL里寻找库的顺序是什么?
首先在*****或JOBLIB指定的库中找,然后再系统库中找,
例如SYS1。
*****。
系统库在连接表中指定。
@DCB关键字是什么意思,与它相关的一些关键字有哪些?
DCB是在DD语句中用来描述*****的关键字,与其相关的关键字有*****,DEN,LRECL。
@*****和LRECL有什么不同?
LRECL是指逻辑记录长度。
*****指多个记录长度。
@实用程序介绍:
*****:
什么也不做,返回码0.例如:
DD语句中创建数据集
*****R:
建立顺序数据集,PDS。
打印顺序数据集
*****:
拷贝或合并分区数据集和扩展分区数据集
COBOLCOBOLII
Q2)WhatarethedifferentdatatypesavailableinCOBOL?
Q:
COBOL有哪些可用的数据类型
A:
字符型(这里指的是包含字母和数字),字母型,数字型
Q3)Whatdoesthe*****IZEverbdo?
-GS
*****IZE这个词做了些什么
将字母,字符,数字区域都置成空格(置空),将数字区置0,FILLER和OCCURS*****NGON项不处理
Q4)Whatis77levelusedfor?
77层有什么作用
基本层数据项,不能用做细分别的层,也不能被细分
Q5)Whatis88levelusedfor?
88层有什么作用
条件逻辑层
Q6)Whatislevel66usedfor?
66层有什么作用
重命名层
Q7)WhatdoestheIS*****clauseestablish?
IS*****这个子句怎么确定(也就是说确定句子的真值)
IS*****用在字符项,带符号数字,浮点数,不带符号数。
如果目标项只含0~9则返回TRUE。
但是,如果待测项目是个带符号数,那么他就含有0-9还有+和-
Q8)Howdoyoudefineatable/arrayinCOBOL?
A8)ARRAYS.
05ARRAY1PICX(9)OCCURS10TIMES.
05ARRAY2PICX(6)OCCURS20TIMES*****BYWS-INDEX
COBOL中怎么建表/数组
如上.
OCCURS子句能用在第一层吗
不能
Q10)Whatisthedifferencebetweenindexandsubscript?
索引和下标有什么区别
下标可以指定数组中任意中位置的元素(只要知道其下标),下标只能是数字型常量或者数字型变量(但是不能在指定的时候修改,如:
A(K+1)这样是不行的,要修改的话要在指定的外部改,如:
ADD1TOK,而索引的话是从表头/数组头开始检索(以BYN的指定检索规律往后滚)再者,索引只能通过*****,SEARCH和SET来修改,如果要在一个表中使用SEARCH,SEARCHALL,那这个表就要有索引(因为SEARCH,SEARCHALL的参数中指定索引,所以即使其有很多限制还是得用它)
Q11)WhatisthedifferencebetweenSEARCHandSEARCHALL?
SERACH和SERACHALL有什么区别
SEARCH是顺序查找
SERACHALL是2叉查找(相信数据结构学过2叉树的都不会陌生),在使用SEARCHALL前表必须有一个递增/递减的KEY,并且表已经按照其KEY值排序了,这样才能使用SEARCHALL
Q12)WhatshouldbethesortingorderforSEARCHALL?
为了使用SEARCHALL,存贮顺序是怎么样的
他必须是递增或者是递减的,默认地政。
如果你想在一个递减顺序存贮的表/数组使用搜索的话,那么当定义表/数组的时候你应该加一个*****INGKEY子句(这之前表要已经按指定的顺序排序了)
Q14)Myprogramhasanarraydefinedtohave10items.Duetoabug,Ifindthateveniftheprogramaccessthe
11thiteminthisarray,theprogramdoesnotabend.Whatiswrongwithit?
我的程序有个数组定义了10项。
因为有个BUG,我发现即使访问第11项,程序也不异常终止。
那是出了什么问题
必须使用编译器的一个选项*****,如果你想检查数组的超界问题。
默认是*****GEQ18)Whatistheuseof*****Estatement?
*****E语句有什么作用
*****E就象个CASE语句(多重开关语句,学过C的总知道吧),不同点在于*****E不需要BREAK,一旦匹配就跳出*****E语句了
Q20)Howdoyoucomeoutofan*****Estatement?
怎么跳出一条*****E语句
象18题目说的那样,一旦匹配了某一个“WHEN“语句就自动跳出了,不需要什么额外的代码来跳出
Q21)Inan*****Estatement,canIgiveacomplexconditiononawhenclause?
在一个*****E语句的某个WHEN分支中能否再插入复杂的情况(也就是嵌套)
当然可以,当多个参数作为控制变量的时候1个WHEN内部可以嵌套更多的情况
Q22)Whatisascopeterminator?
Giveexamples.
什么是结束终止符
结束终止符是搭配一些范围指令的,也就是标识一些范围指令的结束。
如:
*****E,END-*****E;
IF,END-IF如果没有该结束符,该条语句将终止不了
Q23)Howdoyoudoin-line*****?
怎么使用内嵌的*****
*****......<
/until>
<
sentences>
<
/sentences>
END-*****
所谓内嵌也就是*****被嵌在某些比如循环语句中担当执行主体,同时通过UNTIL来指定结束判定
Q24)Whenwouldyouusein-lineperform?
什么时候使用内嵌式*****
当该段*****的内容不被其他段用到,只在某些局部代码中(当然*****的主体所用到的参数也都是局部的,例如循环)使用,如果*****主体的代码是一般的(用到了别的程序段的变量),还是使用*****Paraname这样的形式比较好(也就是相对与内于*****的外部*****)。
Q25)Whatisthedifferencebetween*****ENEXT*****E?
*****E和NEXT*****E有什么不同
两者比较相似,都是将程序控制权交给下一句,但是用NEXT*****E的时候,只有当碰到句结束符(就是句末的‘.’)才会将执行下句
这道题我用了2个例子测试了一下:
1:
IFTEST-*****0
THENNEXT*****E
END-IF
*****“LINE1"
*****"
LINE2"
.*****"
LINE3"
.(请注意代码中的‘.’号)
结果输出:
LINE3
2:
THEN*****E
LINE1"
.
LINE1
LINE2
LINE3
相信已经区别已经比较明显了,NEXT*****E是靠句末的结束符(也就是‘.‘)来判断下一句的,而*****E是通过句头的保留字(这例中是*****)来判断下一句的
Q26)WhatdoesEXITdo?
EXIT语句有什么作用
什么都不做,如果用到的话,肯定是作为一段的唯一的一句话,注意:
这里不是子程序中用的EXIT*****E
Q27)CanIredefineanX(100)fieldwithafieldofX(200)?
能不能把X(100)的区域重定义成X(200)
可以,重定义只是相当于把两个区域的首地址放在一起,从上面这个例子也很好理解
A28)CanIredefineanX(200)fieldwithafieldofX(100)?
能不能把X(200)的区域重定义成X(100)
可以,原因同上
Q32)HowissignstoredinPackedDecimalfieldsandZonedDecimalfields?
Q32)PackedDecimalfields:
Signisstoredasahexvalueinthelastnibble(4bits)ofthestorage.
ZonedDecimalfields:
Asadefault,signisoverpunchedwiththenumericvaluestoredinthelastbite.
在内部十进制区域和显示十进制区域符号是怎么存贮的
内部十进制是一个数字占4位(半字节),内存中用16进制来存,最后在追加4位作为符号,如-4=***-*****(末尾的1101表示负,1100表示正),而我们用于显示的十进制,符号并不占空间,只是在最后一位上标识一下
Q33)Howissignstoredinacomp-3field?
COMP-3区怎么存储符号
COMP-3采用的是内部十进制的存储方式,所谓内部十进制就是压缩式的外部十进制存储方式,上题讲过外部十进制每个数值都用1个字节存储,但前4位是存符号的,这样比较浪费存储空间,所以内部十进制的存储方式就用半个字节(4位)存储一个数字,在最后增加4位作为符号(1100(C)为正,1101(D)为负)
Q34)HowissignstoredinaCOMPfield?
COMP区怎么存储符号
COMP是采用定点二进制的方式存储数据,也就是将一个十进制的数值转化成二进制再进行存储,因为机器存储的形式也是二进制,所以定点二进制的读取是最快速的,因为COMP型的数据是用做计算(也就是说不用再转化成十进制打印),使用定点二进制将会非常高效。
这样的存储方式符号是保存在最高有效果位上,如:
10=(***-*****)?
,
-10=(***-*****)?
Q35)WhatisthedifferencebetweenCOMPCOMP-3?
COMP和COMP-3什么区别
这之前讲过了,COMP采用定点二进制存储,COMP-3采用内部十进制存储
Q36)WhatisCOMP-1?
COMP-2?
COMP-1是什么?
什么是COMP-2
其实之所以定义计算型数据(COMP~COMP-3)以区别*****(能计算,但是要用于打印)是为了考虑效率,因为大家知道文件导入(也就是USER使用的数据)一般是十进制的,而机器存储都是二进制,那么当定义的数据光用来计算不用打印,处于效率考虑会把它定义成COMP型,当然就会衍生出几类COMP以适应不用的数据类型的存储。
很明显,这里COMP-1就是采用内部短浮点(4个字节表示一个数,8位指数部分,24位表示数字部分),COMP-2用内部长浮点型(8个字节表示一个书,16位指数部分,48位表示数字部分)以适应浮点数据的存储,长浮点精确度更高.
Q37)HowdoyoudefineavariableofCOMP-1?
Q:
怎么定义一个COMP-1型?
COMP-2型
不要用*****描述,因为是确定分配多少内存的,直接用USAGE,如01WS-VARUSAGECOMP-1
Q38)HowmanybytesdoesaS9(7)COMP-3fieldoccupy?
一个S9(7)的COMP-3型占用多少字节?
占用4字节。
COMP-3用内部十进制存储,S9(7)中的S是要占空间的,符号占4位,7个数字,每个4位(半个字节),所以是(4+7*4)/8=4字节(字节和位的比例不要搞错了哦)
Q39)HowmanybytesdoesaS9(7)SIGN*****G*****Efieldoccupy?
一个S9(7)SIGN*****G*****E区域占多少字节
这里是每个符号单独分配空间(也就是没个数值用1个字节表示,就象最常用的*****型的分配方式),算上S的空间,所以是7+1=8字节。
一般情况省略的SIGN子句都是隐含SIGNIS*****G的
Q40)HowmanybyteswillaS9(8)COMPfieldoccupy?
一个S9(8)COMP区域占多少字节
如果之前关于COMP的解释听懂了的话,那很显然就是4字节了(定点二进制用2字节存储1~4,4字节存储5~9,……类推,你可以自己推下),如果这块还不懂的可以问我或者查下书
Q41)WhatisthemaximumvaluethatcanbestoredinS9(8)COMP?
Q41)***-*****
S9(8)COMP型最多存储的最大值是什么
除了8个数值外不忽略符号位
Q43)Whatisthemaximumsizeofa01leveliteminCOBOLI?
inCOBOLII?
Q43)InCOBOLII:
***-*****
COBOL1定义的01层最大大小是多少,COBOLII中?
COBOLII中是***-*****,没什么说的,自己翻书
Q44)HowdoyoureferencethefollowingfileformatsfromCOBOLprograms:
COBOL中如何涉及(引用调用)以下这些文件
文件类型这里是COBOL在文件控制区中的文件组织访问形式(SELECT下面那句)这里最好翻翻书或者事例代码反复记忆
定长文件用*****ATIONIS*****IAL.Use*****NG
MODEISF,BLOCK*****S0
固定但是不是以块的组织形式用*****ATIONIS*****IAL.Use*****NG
MODEISF,不要使用BLOCK*****S(因为不是以块
的组织形式)
变长文件用*****ATIONIS*****IAL.Use*****NG
MODEISV,BLOCK,*****S0.在之后的文件区中
的文件描述FD中不要编码记录长度为4字节变长但是不是以块的组织形式用*****ATIONIS*****IAL.Use*****NG
MODEISV,同样不要使用BLOCK*****S也不要编
码记录长度为4字节(原因同上)
ESDSVSAM文件用*****ATIONIS*****IAL
KSDSVSAM文件用*****ATIONIS*****,RECORDKEYIS,
*****TERECORD
作为关键字的RRDS文件用*****ATIONIS*****E,*****EKEYIS
打印文件用*****ATIONIS*****IAL.Use*****NG
MODEISF,BLOCK*****S0.(UseRECFM=FBAin
JCLDCB)
Q45)WhataredifferentfileOPENmodesavailableinCOBOL?
COBOL中有哪些OPEN方式
有INPUT,OUTPUT,I-O,EXTEND这些OPEN模式
Q46)WhatisthemodeinwhichyouwillOPENafileforwriting?
当你想OPEN一个文件用来写入的时候,这属于什么方式
OUTPUT,EXTEND方式
Q48)Canyou*****arecordinanESDSfile?
CanyouDELETEarecordfromit?
能否*****(重写)一个ESDS文件?
能否删除ESDS中的一条记录?
能够重写(但是记录长度必须相同),但是不能删除
Q51)WhatisStaticandDynamiclinking?
什么是静态和动态连接
在静态连接中,被调用的子程序是连接到调用程序,但是在动态连接中,被调用子程序和调用主程序的可执行模块是都存在的(分开的)。
你可以在连接选项中选择DYNAM或者
*****(就算你选择了*****,CALL标识符还是回把它自动转换成一个动态调用)。
静态子程序下次被调用时不会再处于其初始状态,除非用*****初始化或者用
CANCEL。
动态的都是以初始状态存在的。
Q53)Whatcompileroptionwouldyouusefordynamiclinking?
如果要动态连接那么要用什么编译选项
DYNAM
Q62)Whatisaninline*****?
Whenwouldyouuseit?
Anythingelsetosayaboutit?
*****行有什么作用?
什么时候使用?
简单介绍下它
*****和END-*****配套使用,所有COBOLII程序语句都在这两关键字之间。
这和COBOL的*****或者*****THRU一段是一样的意思。
在*****的语句中只