




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
COBOL经典面试题库(中英文版)Q1)NamethedivisionsinaCOBOLprogram?.A1)IDENTIFICATIONDIVISION,ENVIRONMENTDIVISION,DATADIVISION,PROCEDUREDIVISION.Q:列举COBOL的DEVISIONA:标识部,环境部,数据部,过程部Q2)WhatarethedifferentdatatypesavailableinCOBOL?A2)Alpha-numeric(X),alphabetic(A)andnumeric(9).Q:COBOL有哪些可用的数据类型A:字符型(这里指的是包含字母与数字),字母型,数字型Q3)WhatdoestheINITIALIZEverbdo?-GSA3)Alphabetic,Alphanumericfields&alphanumericediteditemsaresettoSPACES.Numeric,NumericediteditemssettoZERO.FILLER,OCCURSDEPENDINGONitemsleftuntouched.Q:INITIALIZE这个词做了些什么A:将字母,字符,数字区域都置成空格(置空),将数字区置0,FILLER与OCCURSDEPENDINGON项不处理Q4)Whatis77levelusedfor?A4)Elementarylevelitem.Cannotbesubdivisionsofotheritems(cannotbequalified),norcantheybesubdividedthemselves.Q:77层有什么作用A:基本层数据项,不能用做细分别的层,也不能被细分Q5)Whatis88levelusedfor?A5)Forconditionnames.Q:88层有什么作用A:条件逻辑层Q6)Whatislevel66usedfor?A6)ForRENAMESclause.Q:66层有什么作用A:重命名层Q7)WhatdoestheISNUMERICclauseestablish?A7)ISNUMERICcanbeusedonalphanumericitems,signednumeric&packeddecimalitemsandunsignednumeric&packeddecimalitems.ISNUMERICreturnsTRUEiftheitemonlyconsistsof0-9.However,iftheitembeingtestedisasigneditem,thenitmaycontain0-9,+and-.Q:ISNUMERIC这个子句怎么确定(也就是说确定句子的真值)A:ISNUMERIC用在字符项,带符号数字,浮点数,不带符号数。如果目标项只含0~9则返回TRUE。但是,如果待测项目是个带符号数,那么他就含有0-9还有+与-Q8)Howdoyoudefineatable/arrayinCOBOL?A8)ARRAYS.05ARRAY1PICX(9)OCCURS10TIMES.05ARRAY2PICX(6)OCCURS20TIMESINDEXEDBYWS-INDEXQ:COBOL中怎么建表/数组A:如上.Q9)CantheOCCURSclausebeatthe01level?A9)No.Q:OCCURS子句能用在第一层吗A:不能Q10)Whatisthedifferencebetweenindexandsubscript?-GSA10)Subscriptreferstothearrayoccurrencewhileindexisthedisplacement(innoofbytes)fromthebeginningofthearray.AnindexcanonlybemodifiedusingPERFORM,SEARCH&SET.NeedtohaveindexforatableinordertouseSEARCH,SEARCHALL.Q:索引与下标有什么区别A:下标可以指定数组中任意中位置的元素(只要知道其下标),下标只能是数字型常量或者数字型变量(但是不能在指定的时候修改,如:A(K+1)这样是不行的,要修改的话要在指定的外部改,如:ADD1TOK,而索引的话是从表头/数组头开始检索(以BYN的指定检索规律往后滚)再者,索引只能通过PERFORM,SEARCH与SET来修改,如果要在一个表中使用SEARCH,SEARCHALL,那这个表就要有索引(因为SEARCH,SEARCHALL的参数中指定索引,所以即使其有很多限制还是得用它)Q11)WhatisthedifferencebetweenSEARCHandSEARCHALL?-GSA11)SEARCH-isaserialsearch.SEARCHALL-isabinarysearch&thetablemustbesorted(ASCENDING/DESCENDINGKEYclausetobeused&dataloadedinthisorder)beforeusingSEARCHALL.Q:SERACH与SERACHALL有什么区别A:SEARCH是顺序查找SERACHALL是2叉查找(相信数据结构学过2叉树的都不会陌生),在使用SEARCHALL前表必须有一个递增/递减的KEY,并且表已经按照其KEY值排序了,这样才能使用SEARCHALLQ12)WhatshouldbethesortingorderforSEARCHALL?-GSA12)ItcanbeeitherASCENDINGorDESCENDING.ASCENDINGisdefault.Ifyouwantthesearchtobedoneonanarraysortedindescendingorder,thenwhiledefiningthearray,youshouldgiveDESCENDINGKEYclause.(Youmustloadthetableinthespecifiedorder).Q:为了使用SEARCHALL,存贮顺序是怎么样的A:他必须是递增或者是递减的,默认地政。如果你想在一个递减顺序存贮的表/数组使用搜索的话,那么当定义表/数组的时候你应该加一个DESCENDINGKEY子句(这之前表要已经按指定的顺序排序了)Q13)Whatisbinarysearch?A13)Searchonasortedarray.Comparetheitemtobesearchedwiththeitematthecenter.Ifitmatches,fineelserepeattheprocesswiththelefthalfortherighthalfdependingonwheretheitemlies.Q:什么是2叉查找A:将你要找的目标项及数组的正中项比较,找到就结束搜索,没找到则继续如此循环(比较下一个中值),取哪一半取决于目标值大于中值还是小于中值PS:联想2叉树的查找规律就很好理解,因为所谓的“表“本身也就是数组Q14)Myprogramhasanarraydefinedtohave10items.Duetoabug,Ifindthateveniftheprogramaccessthe11thiteminthisarray,theprogramdoesnotabend.Whatiswrongwithit?A14)MustusecompileroptionSSRANGEifyouwantarrayboundschecking.DefaultisNOSSRANGE.Q:我的程序有个数组定义了10项。因为有个BUG,我发现即使访问第11项,程序也不异常终止。那是出了什么问题A:必须使用编译器的一个选项SSRANGE,如果你想检查数组的超界问题。默认是NOSSRANGEQ15)HowdoyousortinaCOBOLprogram?Givesort,sortstatementsyntaxandmeaning.-GSA15)Syntax:SORTfile-1ONASCENDING/DESCENDINGKEYkey….USINGfile-2GIVINGfile-3.USINGcanbesubstitutedbyINPUTPROCEDUREISpara-1THRUpara-2GIVINGcanbesubstitutedbyOUTPUTPROCEDUREISpara-1THRUpara-2.file-1isthesort(work)mustbedescribedusingSDentryin.file-2istheinputtheSORTandmustbedescribedusinganFDentryinandSELECTclausein.file-3istheouttheSORTandmustbedescribedusinganFDentryinandSELECTclausein.file-1,file-2&file-3shouldnotbeopenedexplicitly.INPUTPROCEDUREisexecutedbeforethesortandrecordsmustbeRELEASEdtothesortworktheinputprocedure.OUTPUTPROCEDUREisexecutedafterallrecordshavebeensorted.RecordsfromthesortworkbeRETURNedoneatatimetotheoutputprocedure.Q:怎么在一个COBOL程序中排序?给出排序文件的定义,排序语法与意思A:语法就是SORTfile-1ONASCENDING/DESCENDINGKEYkey….USINGfile-2GIVINGfile-3.USING后程序的输入接口,这个地方可以替换成一个输出过程,也就是说写一个过程往USING这个接口中导数据(要在这个过程中READ,ATEND,……),这个过程在将数据释放到执行排序的文件中之前执行,GIVING后是输出借口,用法类似。此例中输入文件是file-2输出文件是file3(这样个文件必须在文件区中用FD与在文件控制中用到SELECT)真正执行排序的file-1,这里需要注意的是file-1中的文件区不能用FD,应该用SD,file-2与3还是一样(用FD),具体可以看一下书上的例子Q16)HowdoyoudefineasortJCLthatrunstheCOBOLprogram?A16)UsetheSORTWK01,SORTWK02,…..ddnamesinthestep.Numberofsortdatasetsdependsonthevolumeofdatabeingsorted,butaminimumof3isrequired.Q:怎么在JCL中定义一个排序文件来跑这个COBOL程序A:用SORTWK01,SORTWK02,…..作为DATASETNAME。用多少取决于你要排序的数量,但是至少3个。Q17)WhatisthedifferencebetweenperformingaSECTIONandaPARAGRAPH?-GSA17)PerformingaSECTIONwillcausealltheparagraphsthatarepartofthesection,tobeperformed.PerformingaPARAGRAPHwillcauseonlythatparagraphtobeperformed.Q:执行一个区与一个段有什么区别A:简单来说的话就是区的概念比段大,执行一个区就要执行其内部所有段,执行段的话只执行该段。Q18)WhatistheuseofEVALUATEstatement?-GSA18)EvaluateislikeacasestatementandcanbeusedtoreplacenestedIfs.ThedifferencebetweenEVALUATEandcaseisthatno‘break’isrequiredforEVALUATEi.e.controlcomesoutoftheEVALUATEassoonasonematchismade.Q:EVALUATE语句有什么作用A:EVALUATE就象个CASE语句(多重开关语句,学过C的总知道吧),不同点在于EVALUATE不需要BREAK,一旦匹配就跳出EVALUATE语句了Q19)WhatarethedifferentformsofEVALUATEstatement?A19)EVALUATEEVALUATESQLCODEALSOWHENA=BANDC=DWHEN100ALSO‘00′imperativestmtimperativestmtWHEN(D+X)/Y=4WHEN-305ALSO‘32′imperativestmtimperativestmtWHENOTHERWHENOTHERimperativestmtimperativestmtEND-EVALUATEEND-EVALUATEEVALUATESQLCODEALSOA=BEVALUATESQLCODEALSOTRUEWHEN100ALSOTRUEWHEN100ALSOA=BimperativestmtimperativestmtWHEN-305ALSOFALSEWHEN-305ALSO(A/C=4)imperativestmtimperativestmtEND-EVALUATEEND-EVALUATEQ20)HowdoyoucomeoutofanEVALUATEstatement?-GSA20)Aftertheexecutionofoneofthewhenclauses,thecontrolisautomaticallypassedontothenextsentenceaftertheEVALUATEstatement.Thereisnoneedofanyextracode.Q:怎么跳出一条EVALUATE语句A:象18题目说的那样,一旦匹配了某一个“WHEN“语句就自动跳出了,不需要什么额外的代码来跳出Q21)InanEVALUATEstatement,canIgiveacomplexconditiononawhenclause?A21)Yes.Q:在一个EVALUATE语句的某个WHEN分支中能否再插入复杂的情况(也就是嵌套)A:当然可以,当多个参数作为控制变量的时候1个WHEN内部可以嵌套更多的情况Q22)Whatisascopeterminator?Giveexamples.A22)Scopeterminatorisusedtomarktheendofaverbe.g.EVALUATE,END-EVALUATE;IF,END-IF.Q:什么是结束终止符A:结束终止符是搭配一些范围指令的,也就是标识一些范围指令的结束。如:EVALUATE,END-EVALUATE;IF,END-IF如果没有该结束符,该条语句将终止不了Q23)Howdoyoudoin-linePERFORM?-GSA23)PERFORM……END-PERFORMQ:怎么使用内嵌的PERFORMA:PERFORM……END-PERFORM所谓内嵌也就是PERFORM被嵌在某些比如循环语句中担当执行主体,同时通过UNTIL来指定结束判定Q24)Whenwouldyouusein-lineperform?A24)Whenthebodyoftheperformwillnotbeusedinotherparagraphs.Ifthebodyoftheperformisagenerictypeofcode(usedfromvariousotherplacesintheprogram),itwouldbebettertoputthecodeinaseparateParaandusePERFORMParanameratherthanin-lineperform.Q:什么时候使用内嵌式PERFORMA:当该段PERFORM的内容不被其他段用到,只在某些局部代码中(当然PERFORM的主体所用到的参数也都是局部的,例如循环)使用,如果PERFORM主体的代码是一般的(用到了别的程序段的变量),还是使用PERFORMParaname这样的形式比较好(也就是相对及内于PERFORM的外部PERFORM)。Q25)WhatisthedifferencebetweenCONTINUE&NEXTSENTENCE?A25)Theyappeartobesimilar,thatis,thecontrolgoestothenextsentenceintheparagraph.But,NextSentencewouldtakethecontroltothesentenceafteritfindsafullstop(.).Checkoutbywritingthefollowingcodeexample,oneifsentencefollowedby3displaystatements(sorrytheyappearonelineherebecauseofformattingrestrictions)If1>0thennextsentenceendifdisplay‘line1′display‘line2′.display‘line3′.***Note-thereisadot(.)onlyattheendofthelast2statements,seetheeffectbyreplacingNextSentencewithContinue***Q:CONTINUE与NEXTSENTENCE有什么不同A:两者比较相似,都是将程序控制权交给下一句,但是用NEXTSENTENCE的时候,只有当碰到句结束符(就是句末的‘.’)才会将执行下句这道题我用了2个例子测试了一下:1:IFTEST-NUMERIC>0THENNEXTSENTENCEEND-IFDISPLAY‘LINE1′DISPLAY‘LINE2′.DISPLAY‘LINE3′.(请注意代码中的‘.’号)结果输出:LINE32:IFTEST-NUMERIC>0THENCONTINUEEND-IFDISPLAY‘LINE1′DISPLAY‘LINE2′.DISPLAY‘LINE3′.结果输出:LINE1LINE2LINE3相信已经区别已经比较明显了,NEXTSENTENCE是靠句末的结束符(也就是‘.‘)来判断下一句的,而CONTINUE是通过句头的保留字(这例中是DISPLAY)来判断下一句的Q26)WhatdoesEXITdo?A26)Doesnothing!Ifused,mustbetheonlysentencewithinaparagraph.Q:EXIT语句有什么作用A:什么都不做,如果用到的话,肯定是作为一段的唯一的一句话,注意:这里不是子程序中用的EXITPROGRAMEQ27)CanIredefineanX(100)fieldwithafieldofX(200)?A27)Yes.Redefinesjustcausesbothfieldstostartatthesamelocation.Forexample:01WS-TOPPICX(1)01WS-TOP-REDREDEFINESWS-TOPPICX(2).IfyouMOVE‘12′toWS-TOP-RED,DISPLAYWS-TOPwillshow1whileDISPLAYWS-TOP-REDwillshow12.Q:能不能把X(100)的区域重定义成X(200)A:可以,重定义只是相当于把两个区域的首地址放在一起,从上面这个例子也很好理解A28)CanIredefineanX(200)fieldwithafieldofX(100)?Q31)1Yes.Q:能不能把X(200)的区域重定义成X(100)A:可以,原因同上Q31)2WhatdoyoudotoresolveSOC-7error?-GSQ31)Basicallyyouneedtocorrectingtheoffendingdata.ManytimesthereasonforSOC7isanun-initializednumericitem.Examinethatpossibilityfirst.Manyinstallationsprovideyouadumpforruntimeabend’s(itcanbegeneratedalsobycallingsomesubroutinesorOSservicesthruassemblylanguage).Thesedumpsprovidetheoffsetofthelastinstructionatwhichtheabendoccurred.ExaminethecompilationoutputXREFlistingtogettheverbandthelinenumberofthesourcecodeatthisoffset.Thenyoucanlookatthesourcecodetofindthebug.Togetcapturetheruntimedumps,youwillhavetodefinesomedatasets(SYSABOUTetc)intheJCL.Ifnoneofthesearehelpful,usejudgementandDISPLAYtolocalizethesourceoferror.Someinstallationmighthavebatchprogramdebuggingtools.Usethem.Q:怎么解决SOC-7错误A:基本上你要看一下一些比较奇怪的数据,很多导致SOC7的原因都是因为数据项的初始化。首先检查所有的可能性。某些功能可能提供一个空间用来存贮那些运行时间ABEND,并且提供最近一次运行时间ABEND的偏移量的说明(也就是位于队列中的位置),检查编译器的输出XREF队列以获得一些关键字。然后你就能看下源代码找出BUG。为了捕获一些运行时间的信息,你需要在JCL中建一个DATASET(象SYSABOUT这样的),如果这些都没用,那么再审查一下ERROR出现的位置判断一下原因。有些软件安装了会提供批处理程序调试工具,那么可以就可以用这些工具了。PS:以上大意就是说SOC-7这个错误多半是因为数据项初始化造成的,然后你应该到运行后编译器的返回信息中去找这些ERROR出现的地方(我们常用的话应该就是走查LOG),查的时候多注意下数据项的初始化问题。Q32)HowissignstoredinPackedDecimalfieldsandZonedDecimalfields?Q32)PackedDecimalfields:Signisstoredasahexvalueinthelastnibble(4bits)ofthestorage.ZonedDecimalfields:Asadefault,signisoverpunchedwiththenumericvaluestoredinthelastbite.Q:在内部十进制区域与显示十进制区域符号是怎么存贮的A:内部十进制是一个数字占4位(半字节),内存中用16进制来存,最后在追加4位作为符号,如-4=01001101(末尾的1101表示负,1100表示正),而我们用于显示的十进制,符号并不占空间,只是在最后一位上标识一下Q33)Howissignstoredinacomp-3field?-GSQ33)Itisstoredinthelastnibble.Forexampleifyournumberis+100,itstoreshex0Cinthelastbyte,hex1Cifyournumberis101,hex2Cifyournumberis102,hex1Difthenumberis-101,hex2Difthenumberis-102etc…Q:COMP-3区怎么存储符号A:COMP-3采用的是内部十进制的存储方式,所谓内部十进制就是压缩式的外部十进制存储方式,上题讲过外部十进制每个数值都用1个字节存储,但前4位是存符号的,这样比较浪费存储空间,所以内部十进制的存储方式就用半个字节(4位)存储一个数字,在最后增加4位作为符号(1100(C)为正,1101(D)为负)Q34)HowissignstoredinaCOMPfield?-GSQ34)Inthemostsignificantbit.BitisONif-ve,OFFif+ve.Q:COMP区怎么存储符号A:COMP是采用定点二进制的方式存储数据,也就是将一个十进制的数值转化成二进制再进行存储,因为机器存储的形式也是二进制,所以定点二进制的读取是最快速的,因为COMP型的数据是用做计算(也就是说不用再转化成十进制打印),使用定点二进制将会非常高效。这样的存储方式符号是保存在最高有效果位上,如:10=(00001010)?,-10=(00011010)?Q35)WhatisthedifferencebetweenCOMP&COMP-3?Q35)COMPisabinarystorageformatwhileCOMP-3ispackeddecimalformat.Q:COMP与COMP-3什么区别A:这之前讲过了,COMP采用定点二进制存储,COMP-3采用内部十进制存储Q36)WhatisCOMP-1?COMP-2?Q36)COMP-1-Singleprecisionfloatingpoint.Uses4bytes.COMP-2-Doubleprecisionfloatingpoint.Uses8bytes.Q:COMP-1是什么?什么是COMP-2A:其实之所以定义计算型数据(COMP~COMP-3)以区别DISPLAY(能计算,但是要用于打印)是为了考虑效率,因为大家知道文件导入(也就是USER使用的数据)一般是十进制的,而机器存储都是二进制,那么当定义的数据光用来计算不用打印,处于效率考虑会把它定义成COMP型,当然就会衍生出几类COMP以适应不用的数据类型的存储。很明显,这里COMP-1就是采用内部短浮点(4个字节表示一个数,8位指数部分,24位表示数字部分),COMP-2用内部长浮点型(8个字节表示一个书,16位指数部分,48位表示数字部分)以适应浮点数据的存储,长浮点精确度更高.Q37)HowdoyoudefineavariableofCOMP-1?COMP-2?Q37)Nopictureclausetobegiven.Example01WS-VARUSAGECOMP-1.Q:怎么定义一个COMP-1型?COMP-2型A:不要用PICTURE描述,因为是确定分配多少内存的,直接用USAGE,如01WS-VARUSAGECOMP-1Q38)HowmanybytesdoesaS9(7)COMP-3fieldoccupy?Q38)Willtake4bytes.Signisstoredashexvalueinthelastnibble.GeneralformulaisINT((n/2)+1)),wheren=7inthisexample.Q:一个S9(7)的COMP-3型占用多少字节?A:占用4字节。COMP-3用内部十进制存储,S9(7)中的S是要占空间的,符号占4位,7个数字,每个4位(半个字节),所以是(4+7*4)/8=4字节(字节与位的比例不要搞错了哦)Q39)HowmanybytesdoesaS9(7)SIGNTRAILINGSEPARATEfieldoccupy?Q39)Willoccupy8bytes(oneextrabyteforsign).Q:一个S9(7)SIGNTRAILINGSEPARATE区域占多少字节A:这里是每个符号单独分配空间(也就是没个数值用1个字节表示,就象最常用的DISPLAY型的分配方式),算上S的空间,所以是7+1=8字节。一般情况省略的SIGN子句都是隐含SIGNISTRAILING的Q40)HowmanybyteswillaS9(8)COMPfieldoccupy?Q40)4bytes.Q:一个S9(8)COMP区域占多少字节A:如果之前关于COMP的解释听懂了的话,那很显然就是4字节了(定点二进制用2字节存储1~4,4字节存储5~9,……类推,你可以自己推下),如果这块还不懂的可以问我或者查下书Q41)WhatisthemaximumvaluethatcanbestoredinS9(8)COMP?Q41)99999999Q:S9(8)COMP型最多存储的最大值是什么A:除了8个数值外不要忽略符号位Q42)WhatisCOMPSYNC?Q42)Causestheitemtobealignedonnaturalboundaries.CanbeSYNCHRONIZEDLEFTorRIGHT.Forbinarydataitems,theaddressresolutionisfasteriftheyarelocatedatwordboundariesinthememory.Forexample,onmainframethememorywordsizeis4bytes.Thismeansthateachwordwillstartfromanaddressdivisibleby4.Ifmyfirstvariableisx(3)andnextoneiss9(4)comp,thenifyoudonotspecifytheSYNCclause,S9(4)COMPwillstartfrombyte3(assumingthatitstartsfrom0).IfyouspecifySYNC,thenthebinarydataitemwillstartfromaddress4.Youmightseesomewastageofmemory,buttheaccesstothiscomputationalfieldisfaster.Q:COMPSYNC是什么A:使数据项按“自然边界”排列。SYNCHRONIZED(简写SYNC)语句是同步安置语句。不同的机器会有一个机器字的概念(以一个WORD四个字节举例,这个数字因机器各异,但往往是四个字节),两个机器字之间就是这里说的“自然边界”,也就是说机器每次从内存中取出二个字节长度的数据,但是一个数据项中含有的数值可能跨越几个机器字或者未填满机器字,这样连续读取虽然比较省空间,但是要引用某些机器字的时候要把多个拿出来重新组织(因为一个数值可能跨越多个数据字,也可能未满,机器就要判断一个机器字中哪些是前一个数值哪些是下个数值)。如果向左对齐的话就是想左“自然边界”靠,也就是说未满一个数据字的用空格(对非数字项)或者零(数字项)填充,填充部分不能插入其他数据项的内容,同理向右对齐就是向机器字的右“自然边界”靠,类似的在左边的空余部分填充。按照自然边界存储相当及牺牲空间换取时间,存取效率,系统读取的机器字两段填充区域(0或者SPACE)之间就是一个数值,效率很高。Q43)Whatisthemaximumsizeofa01leveliteminCOBOLI?inCOBOLII?Q43)InCOBOLII:16777215Q:COBOL1定义的01层最大大小是多少,COBOLII中?A:COBOLII中是16777215,没什么说的,自己翻书Q44)HowdoyoureferencethefollowingfromCOBOLprograms:Q44)FixedBlockFile-UseORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,BLOCKCONTAINS0.FixedUnblocked-UseORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,donotuseBLOCKCONTAINSVariableBlockFile-UseORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISV,BLOCKCONTAINS0.Donotcodethe4bytesforrecordlengthinFDieJCLreclengthwillbemaxreclengthinpgm+4VariableUnblocked-UseORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISV,donotuseBLOCKCONTAINS.Donotcode4bytesforrecordlengthinFDieJCLreclengthwillbemaxreclengthinpgm+4.ESDSVSAMfile-UseORGANISATIONISSEQUENTIAL.KSDSVSAMfile-UseORGANISATIONISINDEXED,RECORDKEYIS,ALTERNATERECORDKEYISRRDSFile-UseORGANISATIONISRELATIVE,RELATIVEKEYISPrinterFile-UseORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,BLOCKCONTAINS0.(UseRECFM=FBAinJCLDCB).Q:COBOL中如何涉及(引用调用)以下这些文件A:文件类型这里是COBOL在文件控制区中的文件组织访问形式(SELECT下面那句)这里最好翻翻书或者事例代码反复记忆定长文件用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,BLOCKCONTAINS0固定但是不是以块的组织形式用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,不要使用BLOCKCONTAINS(因为不是以块的组织形式)变长但是不是以块的组织形式用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISV,同样不要使用BLOCKCONTAINS也不要编码记录长度为4字节(原因同上)ESDSVSAM文件用ORGANISATIONISSEQUENTIALKSDSVSAM文件用ORGANISATIONISINDEXED,RECORDKEYIS,ALTERNATERECORD作为关键字的RRDS文件用ORGANISATIONISRELATIVE,RELATIVEKEYIS打印文件用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,BLOCKCONTAINS0.(UseRECFM=FBAinJCLDCB)PS:这道题是阐述COBOL怎么调用外部的各种文件,在文件控制区以及文件区中要定义的一些关键字,有我们最熟悉的FB(定长)与VB(变长)(当然我们的前提是这两类都是以BLOCK(块)为单位的)但是也有不为我们所知的文件类型(可能出现的情况很少,但是也确实存在,比如编译出的MODULE放的LOAD必须是V文件(文件组织形式是V))当然在不写ORGANISATION这些关键字的时候都是默认为FB的,但是在处理一些复杂数据(比如VSAM数据)还有与外部文件(比如JCL)的连接的时候这些保留字都是要指定的,关于更具体的还是要翻书加强记忆Q45)WhataredifferentmodesavailableinCOBOL?Q45)OpenforINPUT,OUTPUT,I-O,EXTEND.Q:COBOL中有哪些OPEN方式A:有INPUT,OUTPUT,I-O,EXTEND这些OPEN模式Q46)WhatisthemodeinwhichyouwillOPENawriting?-GSQ46)OUTPUT,EXTENDQ:当你想OPEN一个文件用来写入的时候,这属于什么方式A:OUTPUT,EXTEND方式Q47)IntheJCL,howdoyoudefinethefilesreferredtoinasubroutine?Q47)SupplytheDDcardsjustasyouwouldforfilesreferredtointhemainprogram.Q:JCL中怎么定义在子程序中要调用的文件A:就象要在主程序中调用一样使用DD语句Q48)CanyouREWRITEarecordinanESDSfile?CanyouDELETEarecordfromit?Q48)Canrewrite(recordlengthmustbesame),butnotdelete.Q:能否REWRITE(重写)一个ESDS文件?能否删除ESDS中的一条记录?A:能够重写(但是记录长度必须相同),但是不能删除Q49)Whatis92?-GSQ49)Logicerror.e.g.,aopenedforinputandanattemptismadetowritetoit.Q:文件状态92是什么?A:是文件状态的一个返回码,是逻辑错误的意思,比如,打开了一个文件用来导入数据但是又想将其他数据写入这个文件Q50)Whatis39?Q50)MismatchinLRECLorBLOCKSIZEorRECFMbetweenyourCOBOLpgm&theJCL(orthedatasetlabel).Youwillget39onanOPEN.Q:文件状态39是什么A:当你的COBOL的逻辑记录长度(LRECL)或者块长度(BLOCKSIZE)或者记录形式(RECFM)与JCL匹配错误,文件状态参数就会返回39Q51)WhatisStaticandDynamiclinking?Q51)Instaticlinking,thecalledsubroutineislink-editedintothecallingprogram,whileindynamiclinking,thesubroutine&themainprogramwillexistasseparateloadmodules.Youchoosestatic/dynamiclinkingbychoosingeithertheDYNAMorNODYNAMlinkeditoption.(EvenifyouchooseNODYNAM,aCALLidentifier(asopposedtoaCALLliteral),willtranslatetoaDYNAMICcall).AstaticallycalledsubroutinewillnotbeinitsinitialstatethenexttimeitiscalledunlessyouexplicitlyuseINITIALoryoudoaCANCEL.Adynamicallycalledroutinewillalwaysbeinitsinitialstate.Q:什么是静态与动态连接A:在静态连接中,被调用的子程序是连接到调用程序,但是在动态连接中,被调用子程序与调用主程序的可执行模块是都存在的(分开的)。你可以在连接选项中选择DYNAM或者NODYNAM(就算你选择了NODYNAM,CALL标识符还是回把它自动转换成一个动态调用)。静态子程序下次被调用时不会再处于其初始状态,除非用INITIAL初始化或者用CANCEL。动态的都是以初始状态存在的。Q52)WhatisAMODE(24),AMODE(31),RMODE(24)andRMODE(ANY)?(applicabletoonlyMVS/ESAEnterpriseServer).Q52)Thesearecompile/linkeditoptions.BasicallyAMODEstandsforAddressingmodeandRMODEforResidencymode.AMODE(24)-24bitaddressing;AMODE(31)-31bitaddressingAMODE(ANY)-Either24bitor31bitaddressingdependingonRMODE.RMODE(24)-Residesinvirtualstoragebelow16Megline.Usethisfor31bitprogramsthatcall24bitprograms.(OS/VSCobolpgmsuse24bitaddressesonly).RMODE(ANY)-Canresideaboveorbelow16Megline.Q:AMODE(24),AMODE(31),RMODE(24)与RMODE(ANY)是什么?(仅适用于MVS/ESA企业管理器)A:是编译/连接的选项卡。基本上AMODE表示寻址方式,RMODE表示贮存方式。AMODE(24):24位的寻址方式AMODE(31):31位的寻址方式AMODE(ANY):是用24位还是31位的寻址方式取决于REMODERMODE(24):存在虚存中超过16Meglne(MEGLINE是某种单位)允许31位的程序调用24位的程序。(OS/VSCOBOL的PGM只有24位的存址)RMODE(ANY)-超过或者不到16MeglineQ53)Whatcompileroptionwouldyouusefordynamiclinking?Q53)DYNAM.Q:如果要动态连接那么要用什么编译选项A:DYNAMQ54)WhatisSSRANGE,NOSSRANGE?Q54)Thesearecompileroptionswithrespecttosubscriptoutofrangechecking.NOSSRANGEisthedefaultandifchosen,noruntimeerrorwillbeflaggedifyourindexorsubscriptgoesoutofthepermissiblerange.Q:SSRANGE,NOSSRANGE是什么A:这在之前已经提到过了,是编译器的一个选项,用来核对数组索引或者下标的超界问题(比如只定义了10个元素程序却使用了第11个元素的情况)默认情况下是NOSSRANGE,如果选了NOSSRANGE,那么当索引与下标超界的时候也不会报RUNTIMEERRORQ55)HowdoyousetareturncodetotheJCLfromaCOBOLprogram?Q55)MoveavaluetoRETURN-CODEregister.RETURN-CODEshouldnotbedeclaredinyourprogram.Q:怎么从一个COBOL程序设置一个JCL的返回码A:把你想设置的值MOVE到RETURN-CODE这个寄存器中。RETURN-CODE寄存器并未在这COBOL程序中申明Q56)HowcanyousubmitajobfromCOBOLprograms?Q56)WriteJCLcardstoadatasetwith//xxxxxxxSYSOUT=(A,INTRDR)where‘A’isoutputclass,anddatasetshouldbeopenedforoutputintheprogram.Definea80byterecordlayoutforthefile.Q:怎么在COBOL程序中提交一个JOBA:把一个JCL用“//xxxxxxxSYSOUT=(A,INTRDR)”写到一个DATASET中,A是输出组,在程序中要将这个DATASET作为OUTPUT(输出)打开。为这个文件定义一个80字节的记录格式长度Q57)WhatarethedifferencesbetweenOSVSCOBOLandVSCOBOLII?Q57)OS/VSCobolpgmscanonlyrunin24bitaddressingmode,VSCobolIIpgmscanruneitherin24bitor31bitaddressingmodes.I.ReportwriterissupportedonlyinOS/VSCobol.II.USAGEISPOINTERissupportedonlyinVSCOBOLII.III.Referencemodificatione.g.:WS-VAR(1:2)issupportedonlyinVSCOBOLII.IV.EVALUATEissupportedonlyinVSCOBOLII.V.ScopeterminatorsaresupportedonlyinVSCOBOLII.VI.OS/VSCobolfollowsANSI74stdswhileVSCOBOLIIfollowsANSI85stds.UnderCICSCallsbetweenVSCOBOLIIprogramsaresupported.Q:OS/VSCOBOL与VSCOBOLII有什么区别A:OS/VSCOBOL的PGM只能是24位地址的,VSCOBOLII的PGM既能24位又能31位报表writer只支持OS/VSCOBOLUSAGEISPOINTER只支持VSCOBOLIIREFERENCE(感觉翻成“引用”合适点)修改,比如:WS-VAR只支持VSCOBOLII只有COBOLII有EVALUATE语句范围终止符只有COBOLII中才有OS/VSCOBOL是按照ANSI74标准,VSCOBOLII是按照ANSI85标准VSCOBOLII程序之间允许CICS调用Q58)WhatarethestepsyougothroughwhilecreatingaCOBOLprogramexecutable?Q58)DB2precompiler(ifembeddedSQLused),CICStranslator(ifCICSpgm),Cobolcompiler,Linkeditor.IfDB2program,createplanbybindingtheDBRMs.Q:建立一个COBOL可执行程序要通过哪些步骤A:DB2预编译(如果内含SQL),CICS翻译器(如果是CICSPGM),COBOL编译器,连接编辑器,如果是DB2程序,要建立绑定DBRM的PLANQ59)CanyoucallanOSVSCOBOLpgmfromaVSCOBOLIIpgm?Q59)Innon-CICSenvironment,itispossible.InCICS,thisisnotpossible.Q:能不能在VSCOBOLII的PGM中调用OSVSCOBOL的PGM?A:在没有CICS的环境中,是可以的,在CICS环境中不行Q60)WhatarethedifferencesbetweenCOBOLandCOBOLII?A60)Thereareatleastfivedifferences:COBOLIIsupportsstructuredprogrammingbyusinginlinePerformsandexplicitscopeterminators,Itintroducesnewfeatures(EVALUATE,SET.TOTRUE,CALL.BYCONTEXT,etc)Itpermitsprogramstobeloadedandaddressedabovethe16-megabytelineItdoesnotsupportmanyoldfeatures(READYTRACE,REPORT-WRITER,ISAM,Etc.),andItoffersenhancedCICSsupport.Q:COBOL与COBOLII什么区别A:有五点不同,COBOLII支持结构变成(通过PERFORMS与一系列范围终止符);COBOLII引进了些新的特性(如EVALUATE,SETTOTRUE,CALL,BYCONTEXT,等等),COBOLII允许程序编址在16MB行上;COBOLII不支持一些旧的特性(如READYTRACE,REPORT-WRITER,ISAM,ETC),以及支持加强版CICSQ61)Whatisanexplicitscopeterminator?A61)Ascopeterminatorbracketsitsprecedingverb,e.g.IF..END-IF,sothatallstatementsbetweentheverbanditsscopeterminatoraregroupedtogether.OthercommonCOBOLIIverbsareREAD,PERFORM,EVALUATE,SEARCHandSTRING.Q:什么是范围终止符A:一个范围终止符与其之前的动词配套使用,如,IF与END-IF,以至于前置动词与终止符一起作用。COBOLII其他普通的词是READ,PERFORM,EVALUATE,SEARCH与STRINGQ62)WhatisaninlinePERFORM?Whenwouldyouuseit?Anythingelsetosayaboutit?A62)ThePERFORMandEND-PERFORMstatementsbracketallCOBOLIIstatementsbetweenthem.TheCOBOLequivalentistoPERFORMorPERFORMTHRUaparagraph.InlinePERFORMsworkaslongastherearenointernalGOTOs,noteventoanexit.TheinlinePERFORMforreadabilityshouldnotexceedapagelength-oftenitwillreferenceotherPERFORMparagraphs.Q:PERFORM行有什么作用?什么时候使用?简单介绍下它A:PERFORM与END-PERFORM配套使用,所有COBOLII程序语句都在这两关键字之间。这与COBOL的PERFORM或者PERFORMTHRU一段是一样的意思。在PERFORM的语句中只要没有内部GOTO就一直执行直到碰到EXIT。在行PERFORM语句中为了可读型不能超过一页的长度,他经常会引用到其他PERFORM段Q63)WhatisthedifferencebetweenNEXTSENTENCEandCONTINUE?A63)NEXTSENTENCEgivescontroltotheverbfollowingthenextperiod.CONTINUEgivescontroltothenextverbaftertheexplicitscopeterminator.(ThisisnotoneofCOBOLII’sfinerimplementations).It’ssafesttouseCONTINUEratherthanNEXTSENTENCEinCOBOLII.Q:NEXTSENTENCE与CONTINUE有什么区别A:(这在前面已经详细说明,这样仅就文字翻译)NEXTSENTENCE当碰到‘.’转移程序控制权给下句,CONTINUE碰到范围终止符就转移程序控制权给下句。所以用CONTINUE比用NEXTSENTENCE安全(即使忘记写‘.’也没有关系)。Q64)WhatCOBOLconstructistheCOBOLIIEVALUATEmeanttoreplace?A64)EVALUATEcanbeusedinplaceofthenestedIFTHENELSEstatements.Q:COBOLII中的EVALUATE相当于取代了COBOL中的什么结构A:EVALUATE相当于取代了COBOL中的IFTHENELSE的嵌套语句Q65)Whatisthesignificanceof‘abovetheline’and‘belowtheline’?A65)BeforeIBMintroducedMVS/XAarchitectureinthe1980’saprogram’svirtualstoragewaslimitedto16megs.Programscompiledwitha24bitmodecanonlyaddress16Mbofspace,asthoughtheywerekeptunderanimaginarystorageline.WithCOBOLIIaprogramcompiledwitha31bitmodecanbe‘abovethe16Mbline.(This‘belowtheline’,‘abovetheline’imageryconfusesmostmainframeprogrammers,whotendtobealiteralmindedgroup.)Q:’abovetheline’与‘belowtheline’有什么意义A:在IBM推出MVS/XA体系之前,80年代的程序虚拟存储都限制在16megs.程序以24位的方式仅在一个16Mb的地址空间中被编译,就好象那些程序被保存在虚存中一样。使用COBOLII编码之后,以31位方式的编码能超过16位的界线。(也就是说COBOLII之前是“在此界线之下”的,COBOLII之后“在这接线之上”,这通常容易使一些主机程序员搞混)Q66)WhatwasremovedfromCOBOLintheCOBOLIIimplementation?A66)Partiallist:REMARKS,NOMINALKEY,COUNTER,CURRENT-DAY,TIME-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 62290-1:2025 EN-FR Railway applications - Urban guided transport management and command/control systems - Part 1: System principles and fundamental concepts
- 2025年戏剧表演与导演课程考试试题及答案
- 2025年食品科学与工程试卷及答案
- 2025年法律学专业考生复习试题及答案
- 2025年翻译专业能力测试试题及答案
- 2025年公共卫生政策相关考试试卷及答案
- 2025年机关行政管理考试题及答案
- 餐饮合股合同协议书样本
- 2025年非机械驱动车辆合作协议书
- 一致行动协议书
- 网络系统集成(项目式微课版)-课程标准
- 2023年国家知识产权局知识产权检索咨询中心招聘笔试真题
- 人力资源管理:基于创新创业视角学习通超星期末考试答案章节答案2024年
- 安全环保职业健康法律法规清单2024年
- 2024年国家公务员考试《行测》真题卷(地市卷)-答案和解析
- 2024年注册安全工程师真题答案与解析【法规】
- 初中心理健康 开出友谊的新花朵 教案
- 个人换汇合同协议书范文
- 卫生院优化服务环境提升社会满意度整改方案
- 驾驶员心理疏导培训
- 2025年高级卫生专业技术资格考试传染性疾病控制(087)(副高级)试卷及答案指导
评论
0/150
提交评论