COBOL經(jīng)典面試題庫(中英文版)_第1頁
COBOL經(jīng)典面試題庫(中英文版)_第2頁
COBOL經(jīng)典面試題庫(中英文版)_第3頁
COBOL經(jīng)典面試題庫(中英文版)_第4頁
COBOL經(jīng)典面試題庫(中英文版)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

COBOL經(jīng)典面試題庫(中英文版)Q1)NamethedivisionsinaCOBOLprogram?.A1)IDENTIFICATIONDIVISION,ENVIRONMENTDIVISION,DATADIVISION,PROCEDUREDIVISION.Q:列舉COBOL的DEVISIONA:標(biāo)識部,環(huán)境部,數(shù)據(jù)部,過程部Q2)WhatarethedifferentdatatypesavailableinCOBOL?A2)Alpha-numeric(X),alphabetic(A)andnumeric(9).Q:COBOL有哪些可用的數(shù)據(jù)類型A:字符型(這里指的是包含字母與數(shù)字),字母型,數(shù)字型Q3)WhatdoestheINITIALIZEverbdo?-GSA3)Alphabetic,Alphanumericfields&alphanumericediteditemsaresettoSPACES.Numeric,NumericediteditemssettoZERO.FILLER,OCCURSDEPENDINGONitemsleftuntouched.Q:INITIALIZE這個(gè)詞做了些什么A:將字母,字符,數(shù)字區(qū)域都置成空格(置空),將數(shù)字區(qū)置0,F(xiàn)ILLER與OCCURSDEPENDINGON項(xiàng)不處理Q4)Whatis77levelusedfor?A4)Elementarylevelitem.Cannotbesubdivisionsofotheritems(cannotbequalified),norcantheybesubdividedthemselves.Q:77層有什么作用A:基本層數(shù)據(jù)項(xiàng),不能用做細(xì)分別的層,也不能被細(xì)分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這個(gè)子句怎么確定(也就是說確定句子的真值)A:ISNUMERIC用在字符項(xiàng),帶符號數(shù)字,浮點(diǎn)數(shù),不帶符號數(shù)。如果目標(biāo)項(xiàng)只含0~9則返回TRUE。但是,如果待測項(xiàng)目是個(gè)帶符號數(shù),那么他就含有0-9還有+與-Q8)Howdoyoudefineatable/arrayinCOBOL?A8)ARRAYS.05ARRAY1PICX(9)OCCURS10TIMES.05ARRAY2PICX(6)OCCURS20TIMESINDEXEDBYWS-INDEXQ:COBOL中怎么建表/數(shù)組A:如上.Q9)CantheOCCURSclausebeatthe01level?A9)No.Q:OCCURS子句能用在第一層嗎A:不能Q10)Whatisthedifferencebetweenindexandsubscript?-GSA10)Subscriptreferstothearrayoccurrencewhileindexisthedisplacement(innoofbytes)fromthebeginningofthearray.AnindexcanonlybemodifiedusingPERFORM,SEARCH&SET.NeedtohaveindexforatableinordertouseSEARCH,SEARCHALL.Q:索引與下標(biāo)有什么區(qū)別A:下標(biāo)可以指定數(shù)組中任意中位置的元素(只要知道其下標(biāo)),下標(biāo)只能是數(shù)字型常量或者數(shù)字型變量(但是不能在指定的時(shí)候修改,如:A(K+1)這樣是不行的,要修改的話要在指定的外部改,如:ADD1TOK,而索引的話是從表頭/數(shù)組頭開始檢索(以BYN的指定檢索規(guī)律往后滾)再者,索引只能通過PERFORM,SEARCH與SET來修改,如果要在一個(gè)表中使用SEARCH,SEARCHALL,那這個(gè)表就要有索引(因?yàn)镾EARCH,SEARCHALL的參數(shù)中指定索引,所以即使其有很多限制還是得用它)Q11)WhatisthedifferencebetweenSEARCHandSEARCHALL?-GSA11)SEARCH-isaserialsearch.SEARCHALL-isabinarysearch&thetablemustbesorted(ASCENDING/DESCENDINGKEYclausetobeused&dataloadedinthisorder)beforeusingSEARCHALL.Q:SERACH與SERACHALL有什么區(qū)別A:SEARCH是順序查找SERACHALL是2叉查找(相信數(shù)據(jù)結(jié)構(gòu)學(xué)過2叉樹的都不會陌生),在使用SEARCHALL前表必須有一個(gè)遞增/遞減的KEY,并且表已經(jīng)按照其KEY值排序了,這樣才能使用SEARCHALLQ12)WhatshouldbethesortingorderforSEARCHALL?-GSA12)ItcanbeeitherASCENDINGorDESCENDING.ASCENDINGisdefault.Ifyouwantthesearchtobedoneonanarraysortedindescendingorder,thenwhiledefiningthearray,youshouldgiveDESCENDINGKEYclause.(Youmustloadthetableinthespecifiedorder).Q:為了使用SEARCHALL,存貯順序是怎么樣的A:他必須是遞增或者是遞減的,默認(rèn)地政。如果你想在一個(gè)遞減順序存貯的表/數(shù)組使用搜索的話,那么當(dāng)定義表/數(shù)組的時(shí)候你應(yīng)該加一個(gè)DESCENDINGKEY子句(這之前表要已經(jīng)按指定的順序排序了)Q13)Whatisbinarysearch?A13)Searchonasortedarray.Comparetheitemtobesearchedwiththeitematthecenter.Ifitmatches,fineelserepeattheprocesswiththelefthalfortherighthalfdependingonwheretheitemlies.Q:什么是2叉查找A:將你要找的目標(biāo)項(xiàng)及數(shù)組的正中項(xiàng)比較,找到就結(jié)束搜索,沒找到則繼續(xù)如此循環(huán)(比較下一個(gè)中值),取哪一半取決于目標(biāo)值大于中值還是小于中值PS:聯(lián)想2叉樹的查找規(guī)律就很好理解,因?yàn)樗^的“表“本身也就是數(shù)組Q14)Myprogramhasanarraydefinedtohave10items.Duetoabug,Ifindthateveniftheprogramaccessthe11thiteminthisarray,theprogramdoesnotabend.Whatiswrongwithit?A14)MustusecompileroptionSSRANGEifyouwantarrayboundschecking.DefaultisNOSSRANGE.Q:我的程序有個(gè)數(shù)組定義了10項(xiàng)。因?yàn)橛袀€(gè)BUG,我發(fā)現(xiàn)即使訪問第11項(xiàng),程序也不異常終止。那是出了什么問題A:必須使用編譯器的一個(gè)選項(xiàng)SSRANGE,如果你想檢查數(shù)組的超界問題。默認(rèn)是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:怎么在一個(gè)COBOL程序中排序?給出排序文件的定義,排序語法與意思A:語法就是SORTfile-1ONASCENDING/DESCENDINGKEYkey….USINGfile-2GIVINGfile-3.USING后程序的輸入接口,這個(gè)地方可以替換成一個(gè)輸出過程,也就是說寫一個(gè)過程往USING這個(gè)接口中導(dǎo)數(shù)據(jù)(要在這個(gè)過程中READ,ATEND,……),這個(gè)過程在將數(shù)據(jù)釋放到執(zhí)行排序的文件中之前執(zhí)行,GIVING后是輸出借口,用法類似。此例中輸入文件是file-2輸出文件是file3(這樣個(gè)文件必須在文件區(qū)中用FD與在文件控制中用到SELECT)真正執(zhí)行排序的file-1,這里需要注意的是file-1中的文件區(qū)不能用FD,應(yīng)該用SD,file-2與3還是一樣(用FD),具體可以看一下書上的例子Q16)HowdoyoudefineasortJCLthatrunstheCOBOLprogram?A16)UsetheSORTWK01,SORTWK02,…..ddnamesinthestep.Numberofsortdatasetsdependsonthevolumeofdatabeingsorted,butaminimumof3isrequired.Q:怎么在JCL中定義一個(gè)排序文件來跑這個(gè)COBOL程序A:用SORTWK01,SORTWK02,…..作為DATASETNAME。用多少取決于你要排序的數(shù)量,但是至少3個(gè)。Q17)WhatisthedifferencebetweenperformingaSECTIONandaPARAGRAPH?-GSA17)PerformingaSECTIONwillcausealltheparagraphsthatarepartofthesection,tobeperformed.PerformingaPARAGRAPHwillcauseonlythatparagraphtobeperformed.Q:執(zhí)行一個(gè)區(qū)與一個(gè)段有什么區(qū)別A:簡單來說的話就是區(qū)的概念比段大,執(zhí)行一個(gè)區(qū)就要執(zhí)行其內(nèi)部所有段,執(zhí)行段的話只執(zhí)行該段。Q18)WhatistheuseofEVALUATEstatement?-GSA18)EvaluateislikeacasestatementandcanbeusedtoreplacenestedIfs.ThedifferencebetweenEVALUATEandcaseisthatno‘break’isrequiredforEVALUATEi.e.controlcomesoutoftheEVALUATEassoonasonematchismade.Q:EVALUATE語句有什么作用A:EVALUATE就象個(gè)CASE語句(多重開關(guān)語句,學(xué)過C的總知道吧),不同點(diǎn)在于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題目說的那樣,一旦匹配了某一個(gè)“WHEN“語句就自動跳出了,不需要什么額外的代碼來跳出Q21)InanEVALUATEstatement,canIgiveacomplexconditiononawhenclause?A21)Yes.Q:在一個(gè)EVALUATE語句的某個(gè)WHEN分支中能否再插入復(fù)雜的情況(也就是嵌套)A:當(dāng)然可以,當(dāng)多個(gè)參數(shù)作為控制變量的時(shí)候1個(gè)WHEN內(nèi)部可以嵌套更多的情況Q22)Whatisascopeterminator?Giveexamples.A22)Scopeterminatorisusedtomarktheendofaverbe.g.EVALUATE,END-EVALUATE;IF,END-IF.Q:什么是結(jié)束終止符A:結(jié)束終止符是搭配一些范圍指令的,也就是標(biāo)識一些范圍指令的結(jié)束。如:EVALUATE,END-EVALUATE;IF,END-IF如果沒有該結(jié)束符,該條語句將終止不了Q23)Howdoyoudoin-linePERFORM?-GSA23)PERFORM……END-PERFORMQ:怎么使用內(nèi)嵌的PERFORMA:PERFORM……END-PERFORM所謂內(nèi)嵌也就是PERFORM被嵌在某些比如循環(huán)語句中擔(dān)當(dāng)執(zhí)行主體,同時(shí)通過UNTIL來指定結(jié)束判定Q24)Whenwouldyouusein-lineperform?A24)Whenthebodyoftheperformwillnotbeusedinotherparagraphs.Ifthebodyoftheperformisagenerictypeofcode(usedfromvariousotherplacesintheprogram),itwouldbebettertoputthecodeinaseparateParaandusePERFORMParanameratherthanin-lineperform.Q:什么時(shí)候使用內(nèi)嵌式PERFORMA:當(dāng)該段PERFORM的內(nèi)容不被其他段用到,只在某些局部代碼中(當(dāng)然PERFORM的主體所用到的參數(shù)也都是局部的,例如循環(huán))使用,如果PERFORM主體的代碼是一般的(用到了別的程序段的變量),還是使用PERFORMParaname這樣的形式比較好(也就是相對及內(nèi)于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:兩者比較相似,都是將程序控制權(quán)交給下一句,但是用NEXTSENTENCE的時(shí)候,只有當(dāng)碰到句結(jié)束符(就是句末的‘.’)才會將執(zhí)行下句這道題我用了2個(gè)例子測試了一下:1:IFTEST-NUMERIC>0THENNEXTSENTENCEEND-IFDISPLAY‘LINE1′DISPLAY‘LINE2′.DISPLAY‘LINE3′.(請注意代碼中的‘.’號)結(jié)果輸出:LINE32:IFTEST-NUMERIC>0THENCONTINUEEND-IFDISPLAY‘LINE1′DISPLAY‘LINE2′.DISPLAY‘LINE3′.結(jié)果輸出:LINE1LINE2LINE3相信已經(jīng)區(qū)別已經(jīng)比較明顯了,NEXTSENTENCE是靠句末的結(jié)束符(也就是‘.‘)來判斷下一句的,而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)的區(qū)域重定義成X(200)A:可以,重定義只是相當(dāng)于把兩個(gè)區(qū)域的首地址放在一起,從上面這個(gè)例子也很好理解A28)CanIredefineanX(200)fieldwithafieldofX(100)?Q31)1Yes.Q:能不能把X(200)的區(qū)域重定義成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錯(cuò)誤A:基本上你要看一下一些比較奇怪的數(shù)據(jù),很多導(dǎo)致SOC7的原因都是因?yàn)閿?shù)據(jù)項(xiàng)的初始化。首先檢查所有的可能性。某些功能可能提供一個(gè)空間用來存貯那些運(yùn)行時(shí)間ABEND,并且提供最近一次運(yùn)行時(shí)間ABEND的偏移量的說明(也就是位于隊(duì)列中的位置),檢查編譯器的輸出XREF隊(duì)列以獲得一些關(guān)鍵字。然后你就能看下源代碼找出BUG。為了捕獲一些運(yùn)行時(shí)間的信息,你需要在JCL中建一個(gè)DATASET(象SYSABOUT這樣的),如果這些都沒用,那么再審查一下ERROR出現(xiàn)的位置判斷一下原因。有些軟件安裝了會提供批處理程序調(diào)試工具,那么可以就可以用這些工具了。PS:以上大意就是說SOC-7這個(gè)錯(cuò)誤多半是因?yàn)閿?shù)據(jù)項(xiàng)初始化造成的,然后你應(yīng)該到運(yùn)行后編譯器的返回信息中去找這些ERROR出現(xiàn)的地方(我們常用的話應(yīng)該就是走查LOG),查的時(shí)候多注意下數(shù)據(jù)項(xiàng)的初始化問題。Q32)HowissignstoredinPackedDecimalfieldsandZonedDecimalfields?Q32)PackedDecimalfields:Signisstoredasahexvalueinthelastnibble(4bits)ofthestorage.ZonedDecimalfields:Asadefault,signisoverpunchedwiththenumericvaluestoredinthelastbite.Q:在內(nèi)部十進(jìn)制區(qū)域與顯示十進(jìn)制區(qū)域符號是怎么存貯的A:內(nèi)部十進(jìn)制是一個(gè)數(shù)字占4位(半字節(jié)),內(nèi)存中用16進(jìn)制來存,最后在追加4位作為符號,如-4=01001101(末尾的1101表示負(fù),1100表示正),而我們用于顯示的十進(jìn)制,符號并不占空間,只是在最后一位上標(biāo)識一下Q33)Howissignstoredinacomp-3field?-GSQ33)Itisstoredinthelastnibble.Forexampleifyournumberis+100,itstoreshex0Cinthelastbyte,hex1Cifyournumberis101,hex2Cifyournumberis102,hex1Difthenumberis-101,hex2Difthenumberis-102etc…Q:COMP-3區(qū)怎么存儲符號A:COMP-3采用的是內(nèi)部十進(jìn)制的存儲方式,所謂內(nèi)部十進(jìn)制就是壓縮式的外部十進(jìn)制存儲方式,上題講過外部十進(jìn)制每個(gè)數(shù)值都用1個(gè)字節(jié)存儲,但前4位是存符號的,這樣比較浪費(fèi)存儲空間,所以內(nèi)部十進(jìn)制的存儲方式就用半個(gè)字節(jié)(4位)存儲一個(gè)數(shù)字,在最后增加4位作為符號(1100(C)為正,1101(D)為負(fù))Q34)HowissignstoredinaCOMPfield?-GSQ34)Inthemostsignificantbit.BitisONif-ve,OFFif+ve.Q:COMP區(qū)怎么存儲符號A:COMP是采用定點(diǎn)二進(jìn)制的方式存儲數(shù)據(jù),也就是將一個(gè)十進(jìn)制的數(shù)值轉(zhuǎn)化成二進(jìn)制再進(jìn)行存儲,因?yàn)闄C(jī)器存儲的形式也是二進(jìn)制,所以定點(diǎn)二進(jìn)制的讀取是最快速的,因?yàn)镃OMP型的數(shù)據(jù)是用做計(jì)算(也就是說不用再轉(zhuǎn)化成十進(jìn)制打?。?,使用定點(diǎn)二進(jìn)制將會非常高效。這樣的存儲方式符號是保存在最高有效果位上,如:10=(00001010)?,-10=(00011010)?Q35)WhatisthedifferencebetweenCOMP&COMP-3?Q35)COMPisabinarystorageformatwhileCOMP-3ispackeddecimalformat.Q:COMP與COMP-3什么區(qū)別A:這之前講過了,COMP采用定點(diǎn)二進(jìn)制存儲,COMP-3采用內(nèi)部十進(jìn)制存儲Q36)WhatisCOMP-1?COMP-2?Q36)COMP-1-Singleprecisionfloatingpoint.Uses4bytes.COMP-2-Doubleprecisionfloatingpoint.Uses8bytes.Q:COMP-1是什么?什么是COMP-2A:其實(shí)之所以定義計(jì)算型數(shù)據(jù)(COMP~COMP-3)以區(qū)別DISPLAY(能計(jì)算,但是要用于打?。┦菫榱丝紤]效率,因?yàn)榇蠹抑牢募?dǎo)入(也就是USER使用的數(shù)據(jù))一般是十進(jìn)制的,而機(jī)器存儲都是二進(jìn)制,那么當(dāng)定義的數(shù)據(jù)光用來計(jì)算不用打印,處于效率考慮會把它定義成COMP型,當(dāng)然就會衍生出幾類COMP以適應(yīng)不用的數(shù)據(jù)類型的存儲。很明顯,這里COMP-1就是采用內(nèi)部短浮點(diǎn)(4個(gè)字節(jié)表示一個(gè)數(shù),8位指數(shù)部分,24位表示數(shù)字部分),COMP-2用內(nèi)部長浮點(diǎn)型(8個(gè)字節(jié)表示一個(gè)書,16位指數(shù)部分,48位表示數(shù)字部分)以適應(yīng)浮點(diǎn)數(shù)據(jù)的存儲,長浮點(diǎn)精確度更高.Q37)HowdoyoudefineavariableofCOMP-1?COMP-2?Q37)Nopictureclausetobegiven.Example01WS-VARUSAGECOMP-1.Q:怎么定義一個(gè)COMP-1型?COMP-2型A:不要用PICTURE描述,因?yàn)槭谴_定分配多少內(nèi)存的,直接用USAGE,如01WS-VARUSAGECOMP-1Q38)HowmanybytesdoesaS9(7)COMP-3fieldoccupy?Q38)Willtake4bytes.Signisstoredashexvalueinthelastnibble.GeneralformulaisINT((n/2)+1)),wheren=7inthisexample.Q:一個(gè)S9(7)的COMP-3型占用多少字節(jié)?A:占用4字節(jié)。COMP-3用內(nèi)部十進(jìn)制存儲,S9(7)中的S是要占空間的,符號占4位,7個(gè)數(shù)字,每個(gè)4位(半個(gè)字節(jié)),所以是(4+7*4)/8=4字節(jié)(字節(jié)與位的比例不要搞錯(cuò)了哦)Q39)HowmanybytesdoesaS9(7)SIGNTRAILINGSEPARATEfieldoccupy?Q39)Willoccupy8bytes(oneextrabyteforsign).Q:一個(gè)S9(7)SIGNTRAILINGSEPARATE區(qū)域占多少字節(jié)A:這里是每個(gè)符號單獨(dú)分配空間(也就是沒個(gè)數(shù)值用1個(gè)字節(jié)表示,就象最常用的DISPLAY型的分配方式),算上S的空間,所以是7+1=8字節(jié)。一般情況省略的SIGN子句都是隱含SIGNISTRAILING的Q40)HowmanybyteswillaS9(8)COMPfieldoccupy?Q40)4bytes.Q:一個(gè)S9(8)COMP區(qū)域占多少字節(jié)A:如果之前關(guān)于COMP的解釋聽懂了的話,那很顯然就是4字節(jié)了(定點(diǎn)二進(jìn)制用2字節(jié)存儲1~4,4字節(jié)存儲5~9,……類推,你可以自己推下),如果這塊還不懂的可以問我或者查下書Q41)WhatisthemaximumvaluethatcanbestoredinS9(8)COMP?Q41)99999999Q:S9(8)COMP型最多存儲的最大值是什么A:除了8個(gè)數(shù)值外不要忽略符號位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:使數(shù)據(jù)項(xiàng)按“自然邊界”排列。SYNCHRONIZED(簡寫SYNC)語句是同步安置語句。不同的機(jī)器會有一個(gè)機(jī)器字的概念(以一個(gè)WORD四個(gè)字節(jié)舉例,這個(gè)數(shù)字因機(jī)器各異,但往往是四個(gè)字節(jié)),兩個(gè)機(jī)器字之間就是這里說的“自然邊界”,也就是說機(jī)器每次從內(nèi)存中取出二個(gè)字節(jié)長度的數(shù)據(jù),但是一個(gè)數(shù)據(jù)項(xiàng)中含有的數(shù)值可能跨越幾個(gè)機(jī)器字或者未填滿機(jī)器字,這樣連續(xù)讀取雖然比較省空間,但是要引用某些機(jī)器字的時(shí)候要把多個(gè)拿出來重新組織(因?yàn)橐粋€(gè)數(shù)值可能跨越多個(gè)數(shù)據(jù)字,也可能未滿,機(jī)器就要判斷一個(gè)機(jī)器字中哪些是前一個(gè)數(shù)值哪些是下個(gè)數(shù)值)。如果向左對齊的話就是想左“自然邊界”靠,也就是說未滿一個(gè)數(shù)據(jù)字的用空格(對非數(shù)字項(xiàng))或者零(數(shù)字項(xiàng))填充,填充部分不能插入其他數(shù)據(jù)項(xiàng)的內(nèi)容,同理向右對齊就是向機(jī)器字的右“自然邊界”靠,類似的在左邊的空余部分填充。按照自然邊界存儲相當(dāng)及犧牲空間換取時(shí)間,存取效率,系統(tǒng)讀取的機(jī)器字兩段填充區(qū)域(0或者SPACE)之間就是一個(gè)數(shù)值,效率很高。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中如何涉及(引用調(diào)用)以下這些文件A:文件類型這里是COBOL在文件控制區(qū)中的文件組織訪問形式(SELECT下面那句)這里最好翻翻書或者事例代碼反復(fù)記憶定長文件用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,BLOCKCONTAINS0固定但是不是以塊的組織形式用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,不要使用BLOCKCONTAINS(因?yàn)椴皇且詨K的組織形式)變長但是不是以塊的組織形式用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISV,同樣不要使用BLOCKCONTAINS也不要編碼記錄長度為4字節(jié)(原因同上)ESDSVSAM文件用ORGANISATIONISSEQUENTIALKSDSVSAM文件用ORGANISATIONISINDEXED,RECORDKEYIS,ALTERNATERECORD作為關(guān)鍵字的RRDS文件用ORGANISATIONISRELATIVE,RELATIVEKEYIS打印文件用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,BLOCKCONTAINS0.(UseRECFM=FBAinJCLDCB)PS:這道題是闡述COBOL怎么調(diào)用外部的各種文件,在文件控制區(qū)以及文件區(qū)中要定義的一些關(guān)鍵字,有我們最熟悉的FB(定長)與VB(變長)(當(dāng)然我們的前提是這兩類都是以BLOCK(塊)為單位的)但是也有不為我們所知的文件類型(可能出現(xiàn)的情況很少,但是也確實(shí)存在,比如編譯出的MODULE放的LOAD必須是V文件(文件組織形式是V))當(dāng)然在不寫ORGANISATION這些關(guān)鍵字的時(shí)候都是默認(rèn)為FB的,但是在處理一些復(fù)雜數(shù)據(jù)(比如VSAM數(shù)據(jù))還有與外部文件(比如JCL)的連接的時(shí)候這些保留字都是要指定的,關(guān)于更具體的還是要翻書加強(qiáng)記憶Q45)WhataredifferentmodesavailableinCOBOL?Q45)OpenforINPUT,OUTPUT,I-O,EXTEND.Q:COBOL中有哪些OPEN方式A:有INPUT,OUTPUT,I-O,EXTEND這些OPEN模式Q46)WhatisthemodeinwhichyouwillOPENawriting?-GSQ46)OUTPUT,EXTENDQ:當(dāng)你想OPEN一個(gè)文件用來寫入的時(shí)候,這屬于什么方式A:OUTPUT,EXTEND方式Q47)IntheJCL,howdoyoudefinethefilesreferredtoinasubroutine?Q47)SupplytheDDcardsjustasyouwouldforfilesreferredtointhemainprogram.Q:JCL中怎么定義在子程序中要調(diào)用的文件A:就象要在主程序中調(diào)用一樣使用DD語句Q48)CanyouREWRITEarecordinanESDSfile?CanyouDELETEarecordfromit?Q48)Canrewrite(recordlengthmustbesame),butnotdelete.Q:能否REWRITE(重寫)一個(gè)ESDS文件?能否刪除ESDS中的一條記錄?A:能夠重寫(但是記錄長度必須相同),但是不能刪除Q49)Whatis92?-GSQ49)Logicerror.e.g.,aopenedforinputandanattemptismadetowritetoit.Q:文件狀態(tài)92是什么?A:是文件狀態(tài)的一個(gè)返回碼,是邏輯錯(cuò)誤的意思,比如,打開了一個(gè)文件用來導(dǎo)入數(shù)據(jù)但是又想將其他數(shù)據(jù)寫入這個(gè)文件Q50)Whatis39?Q50)MismatchinLRECLorBLOCKSIZEorRECFMbetweenyourCOBOLpgm&theJCL(orthedatasetlabel).Youwillget39onanOPEN.Q:文件狀態(tài)39是什么A:當(dāng)你的COBOL的邏輯記錄長度(LRECL)或者塊長度(BLOCKSIZE)或者記錄形式(RECFM)與JCL匹配錯(cuò)誤,文件狀態(tài)參數(shù)就會返回39Q51)WhatisStaticandDynamiclinking?Q51)Instaticlinking,thecalledsubroutineislink-editedintothecallingprogram,whileindynamiclinking,thesubroutine&themainprogramwillexistasseparateloadmodules.Youchoosestatic/dynamiclinkingbychoosingeithertheDYNAMorNODYNAMlinkeditoption.(EvenifyouchooseNODYNAM,aCALLidentifier(asopposedtoaCALLliteral),willtranslatetoaDYNAMICcall).AstaticallycalledsubroutinewillnotbeinitsinitialstatethenexttimeitiscalledunlessyouexplicitlyuseINITIALoryoudoaCANCEL.Adynamicallycalledroutinewillalwaysbeinitsinitialstate.Q:什么是靜態(tài)與動態(tài)連接A:在靜態(tài)連接中,被調(diào)用的子程序是連接到調(diào)用程序,但是在動態(tài)連接中,被調(diào)用子程序與調(diào)用主程序的可執(zhí)行模塊是都存在的(分開的)。你可以在連接選項(xiàng)中選擇DYNAM或者NODYNAM(就算你選擇了NODYNAM,CALL標(biāo)識符還是回把它自動轉(zhuǎn)換成一個(gè)動態(tài)調(diào)用)。靜態(tài)子程序下次被調(diào)用時(shí)不會再處于其初始狀態(tài),除非用INITIAL初始化或者用CANCEL。動態(tài)的都是以初始狀態(tài)存在的。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企業(yè)管理器)A:是編譯/連接的選項(xiàng)卡?;旧螦MODE表示尋址方式,RMODE表示貯存方式。AMODE(24):24位的尋址方式AMODE(31):31位的尋址方式AMODE(ANY):是用24位還是31位的尋址方式取決于REMODERMODE(24):存在虛存中超過16Meglne(MEGLINE是某種單位)允許31位的程序調(diào)用24位的程序。(OS/VSCOBOL的PGM只有24位的存址)RMODE(ANY)-超過或者不到16MeglineQ53)Whatcompileroptionwouldyouusefordynamiclinking?Q53)DYNAM.Q:如果要?jiǎng)討B(tài)連接那么要用什么編譯選項(xiàng)A:DYNAMQ54)WhatisSSRANGE,NOSSRANGE?Q54)Thesearecompileroptionswithrespecttosubscriptoutofrangechecking.NOSSRANGEisthedefaultandifchosen,noruntimeerrorwillbeflaggedifyourindexorsubscriptgoesoutofthepermissiblerange.Q:SSRANGE,NOSSRANGE是什么A:這在之前已經(jīng)提到過了,是編譯器的一個(gè)選項(xiàng),用來核對數(shù)組索引或者下標(biāo)的超界問題(比如只定義了10個(gè)元素程序卻使用了第11個(gè)元素的情況)默認(rèn)情況下是NOSSRANGE,如果選了NOSSRANGE,那么當(dāng)索引與下標(biāo)超界的時(shí)候也不會報(bào)RUNTIMEERRORQ55)HowdoyousetareturncodetotheJCLfromaCOBOLprogram?Q55)MoveavaluetoRETURN-CODEregister.RETURN-CODEshouldnotbedeclaredinyourprogram.Q:怎么從一個(gè)COBOL程序設(shè)置一個(gè)JCL的返回碼A:把你想設(shè)置的值MOVE到RETURN-CODE這個(gè)寄存器中。RETURN-CODE寄存器并未在這COBOL程序中申明Q56)HowcanyousubmitajobfromCOBOLprograms?Q56)WriteJCLcardstoadatasetwith//xxxxxxxSYSOUT=(A,INTRDR)where‘A’isoutputclass,anddatasetshouldbeopenedforoutputintheprogram.Definea80byterecordlayoutforthefile.Q:怎么在COBOL程序中提交一個(gè)JOBA:把一個(gè)JCL用“//xxxxxxxSYSOUT=(A,INTRDR)”寫到一個(gè)DATASET中,A是輸出組,在程序中要將這個(gè)DATASET作為OUTPUT(輸出)打開。為這個(gè)文件定義一個(gè)80字節(jié)的記錄格式長度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有什么區(qū)別A:OS/VSCOBOL的PGM只能是24位地址的,VSCOBOLII的PGM既能24位又能31位報(bào)表writer只支持OS/VSCOBOLUSAGEISPOINTER只支持VSCOBOLIIREFERENCE(感覺翻成“引用”合適點(diǎn))修改,比如:WS-VAR只支持VSCOBOLII只有COBOLII有EVALUATE語句范圍終止符只有COBOLII中才有OS/VSCOBOL是按照ANSI74標(biāo)準(zhǔn),VSCOBOLII是按照ANSI85標(biāo)準(zhǔn)VSCOBOLII程序之間允許CICS調(diào)用Q58)WhatarethestepsyougothroughwhilecreatingaCOBOLprogramexecutable?Q58)DB2precompiler(ifembeddedSQLused),CICStranslator(ifCICSpgm),Cobolcompiler,Linkeditor.IfDB2program,createplanbybindingtheDBRMs.Q:建立一個(gè)COBOL可執(zhí)行程序要通過哪些步驟A:DB2預(yù)編譯(如果內(nèi)含SQL),CICS翻譯器(如果是CICSPGM),COBOL編譯器,連接編輯器,如果是DB2程序,要建立綁定DBRM的PLANQ59)CanyoucallanOSVSCOBOLpgmfromaVSCOBOLIIpgm?Q59)Innon-CICSenvironment,itispossible.InCICS,thisisnotpossible.Q:能不能在VSCOBOLII的PGM中調(diào)用OSVSCOBOL的PGM?A:在沒有CICS的環(huán)境中,是可以的,在CICS環(huán)境中不行Q60)WhatarethedifferencesbetweenCOBOLandCOBOLII?A60)Thereareatleastfivedifferences:COBOLIIsupportsstructuredprogrammingbyusinginlinePerformsandexplicitscopeterminators,Itintroducesnewfeatures(EVALUATE,SET.TOTRUE,CALL.BYCONTEXT,etc)Itpermitsprogramstobeloadedandaddressedabovethe16-megabytelineItdoesnotsupportmanyoldfeatures(READYTRACE,REPORT-WRITER,ISAM,Etc.),andItoffersenhancedCICSsupport.Q:COBOL與COBOLII什么區(qū)別A:有五點(diǎn)不同,COBOLII支持結(jié)構(gòu)變成(通過PERFORMS與一系列范圍終止符);COBOLII引進(jìn)了些新的特性(如EVALUATE,SETTOTRUE,CALL,BYCONTEXT,等等),COBOLII允許程序編址在16MB行上;COBOLII不支持一些舊的特性(如READYTRACE,REPORT-WRITER,ISAM,ETC),以及支持加強(qiáng)版CICSQ61)Whatisanexplicitscopeterminator?A61)Ascopeterminatorbracketsitsprecedingverb,e.g.IF..END-IF,sothatallstatementsbetweentheverbanditsscopeterminatoraregroupedtogether.OthercommonCOBOLIIverbsareREAD,PERFORM,EVALUATE,SEARCHandSTRING.Q:什么是范圍終止符A:一個(gè)范圍終止符與其之前的動詞配套使用,如,IF與END-IF,以至于前置動詞與終止符一起作用。COBOLII其他普通的詞是READ,PERFORM,EVALUATE,SEARCH與STRINGQ62)WhatisaninlinePERFORM?Whenwouldyouuseit?Anythingelsetosayaboutit?A62)ThePERFORMandEND-PERFORMstatementsbracketallCOBOLIIstatementsbetweenthem.TheCOBOLequivalentistoPERFORMorPERFORMTHRUaparagraph.InlinePERFORMsworkaslongastherearenointernalGOTOs,noteventoanexit.TheinlinePERFORMforreadabilityshouldnotexceedapagelength-oftenitwillreferenceotherPERFORMparagraphs.Q:PERFORM行有什么作用?什么時(shí)候使用?簡單介紹下它A:PERFORM與END-PERFORM配套使用,所有COBOLII程序語句都在這兩關(guān)鍵字之間。這與COBOL的PERFORM或者PERFORMTHRU一段是一樣的意思。在PERFORM的語句中只要沒有內(nèi)部GOTO就一直執(zhí)行直到碰到EXIT。在行PERFORM語句中為了可讀型不能超過一頁的長度,他經(jīng)常會引用到其他PERFORM段Q63)WhatisthedifferencebetweenNEXTSENTENCEandCONTINUE?A63)NEXTSENTENCEgivescontroltotheverbfollowingthenextperiod.CONTINUEgivescontroltothenextverbaftertheexplicitscopeterminator.(ThisisnotoneofCOBOLII’sfinerimplementations).It’ssafesttouseCONTINUEratherthanNEXTSENTENCEinCOBOLII.Q:NEXTSENTENCE與CONTINUE有什么區(qū)別A:(這在前面已經(jīng)詳細(xì)說明,這樣僅就文字翻譯)NEXTSENTENCE當(dāng)碰到‘.’轉(zhuǎn)移程序控制權(quán)給下句,CONTINUE碰到范圍終止符就轉(zhuǎn)移程序控制權(quán)給下句。所以用CONTINUE比用NEXTSENTENCE安全(即使忘記寫‘.’也沒有關(guān)系)。Q64)WhatCOBOLconstructistheCOBOLIIEVALUATEmeanttoreplace?A64)EVALUATEcanbeusedinplaceofthenestedIFTHENELSEstatements.Q:COBOLII中的EVALUATE相當(dāng)于取代了COBOL中的什么結(jié)構(gòu)A:EVALUATE相當(dāng)于取代了COBOL中的IFTHENELSE的嵌套語句Q65)Whatisthesignificanceof‘a(chǎn)bovetheline’and‘belowtheline’?A65)BeforeIBMintroducedMVS/XAarchitectureinthe1980’saprogram’svirtualstoragewaslimitedto16megs.Programscompiledwitha24bitmodecanonlyaddress16Mbofspace,asthoughtheywerekeptunderanimaginarystorageline.WithCOBOLIIaprogramcompiledwitha31bitmodecanbe‘a(chǎn)bovethe16Mbline.(This‘belowtheline’,‘a(chǎn)bovetheline’imageryconfusesmostmainframeprogrammers,whotendtobealiteralmindedgroup.)Q:’abovetheline’與‘belowtheline’有什么意義A:在IBM推出MVS/XA體系之前,80年代的程序虛擬存儲都限制在16megs.程序以24位的方式僅在一個(gè)16Mb的地址空間中被編譯,就好象那些程序被保存在虛存中一樣。使用COBOLII編碼之后,以31位方式的編碼能超過16位的界線。(也就是說COBOLII之前是“在此界線之下”的,COBOLII之后“在這接線之上”,這通常容易使一些主機(jī)程序員搞混)Q66)WhatwasremovedfromCOBOLintheCOBOLIIimplementation?A66)Partiallist:REMARKS,NOMINALKEY,COUNTER,CURRENT-DAY,TIME-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論