




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
COBOL經(jīng)典面試題庫
Q1:列舉COBOL的DEVISION
A1:標(biāo)識部,環(huán)境部,數(shù)據(jù)部,過程部
Q2:COBOL有哪些可用的數(shù)據(jù)類型
A2:字符型(這里指的是包含字母和數(shù)字),字母型,數(shù)字型
Q3:INITIALIZE這個(gè)詞做了些什么
A3:將字母,字符,數(shù)字區(qū)域都置成空格(置空),將數(shù)字區(qū)置0,F(xiàn)ILLER和OCCURSDEPENDINGON項(xiàng)不處理
Q4:77層有什么作用
A4:基本層數(shù)據(jù)項(xiàng),不能用做細(xì)分別的層,也不能被細(xì)分
(來源:)
Q5:88層有什么作用
A5:條件邏輯層
Q6:66層有什么作用
A6:重命名層
Q7:ISNUMERIC這個(gè)子句怎么確定(也就是說確定句子的真值)
A7:ISNUMERIC用在字符項(xiàng),帶符號數(shù)字,浮點(diǎn)數(shù),不帶符號數(shù)。如果目標(biāo)項(xiàng)只含0~9則返回TRUE。但是,如果待測項(xiàng)目是個(gè)帶符號數(shù),那么他就含有0-9還有+和-
05ARRAY1PICX(9)OCCURS10TIMES.
05ARRAY2PICX(6)OCCURS20TIMESINDEXEDBYWS-INDEX
Q8:COBOL中怎么建表/數(shù)組
A8:如上.
Q9:OCCURS子句能用在第一層嗎
A9:不能
Q10:索引和下標(biāo)有什么區(qū)別
A10:下標(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:SERACH和SERACHALL有什么區(qū)別
A11:SEARCH是順序查找
SERACHALL是2叉查找(相信數(shù)據(jù)結(jié)構(gòu)學(xué)過2叉樹的都不會陌生),在使用SEARCHALL前表必須有一個(gè)遞增/遞減的KEY,并且表已經(jīng)按照其KEY值排序了,這樣才能使用SEARCHALL
Q12:為了使用SEARCHALL,存貯順序是怎么樣的
A12:他必須是遞增或者是遞減的,默認(rèn)地政。如果你想在一個(gè)遞減順序存貯的表/數(shù)組使用搜索的話,那么當(dāng)定義表/數(shù)組的時(shí)候你應(yīng)該加一個(gè)DESCENDINGKEY子句(這之前表要已經(jīng)按指定的順序排序了)
Q13:什么是2叉查找
A13:將你要找的目標(biāo)項(xiàng)與數(shù)組的正中項(xiàng)比較,找到就結(jié)束搜索,沒找到則繼續(xù)如此循環(huán)(比較下一個(gè)中值),取哪一半取決于目標(biāo)值大于中值還是小于中值
PS:聯(lián)想2叉樹的查找規(guī)律就很好理解,因?yàn)樗^的“表“本身也就是數(shù)組
Q14:我的程序有個(gè)數(shù)組定義了10項(xiàng)。因?yàn)橛袀€(gè)BUG,我發(fā)現(xiàn)即使訪問第11項(xiàng),程序也不異常終止。那是出了什么問題
A14:必須使用編譯器的一個(gè)選項(xiàng)SSRANGE,如果你想檢查數(shù)組的超界問題。默認(rèn)是NOSSRANGE
Q15:怎么在一個(gè)COBOL程序中排序?給出排序文件的定義,排序語法和意思
A15:語法就是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:怎么在JCL中定義一個(gè)排序文件來跑這個(gè)COBOL程序
A16:用SORTWK01,SORTWK02,…..作為DATASETNAME。用多少取決于你要排序的數(shù)量,但是至少3個(gè)。
Q17:執(zhí)行一個(gè)區(qū)和一個(gè)段有什么區(qū)別
A17:簡單來說的話就是區(qū)的概念比段大,執(zhí)行一個(gè)區(qū)就要執(zhí)行其內(nèi)部所有段,執(zhí)行段的話只執(zhí)行該段。
Q18:EVALUATE語句有什么作用
A18:EVALUATE就象個(gè)CASE語句(多重開關(guān)語句,學(xué)過C的總知道吧),不同點(diǎn)在于EVALUATE不需要BREAK,一旦匹配就跳出EVALUATE語句了Q19)WhatarethedifferentformsofEVALUATEstatement?
A19)
EVALUATEEVALUATESQLCODEALSOFILE-STATUS
WHENA=BANDC=DWHEN100ALSO‘00′
imperativestmtimperativestmt
WHEN(D+X)/Y=4WHEN-305ALSO‘32′
imperativestmtimperativestmt
WHENOTHERWHENOTHER
imperativestmtimperativestmt
END-EVALUATEEND-EVALUATEEVALUATESQLCODEALSOA=BEVALUATESQLCODEALSOTRUE
WHEN100ALSOTRUEWHEN100ALSOA=B
imperativestmtimperativestmt
WHEN-305ALSOFALSEWHEN-305ALSO(A/C=4)
imperativestmtimperativestmt
END-EVALUATEEND-EVALUATE
Q20:怎么跳出一條EVALUATE語句
A20:象18題目說的那樣,一旦匹配了某一個(gè)“WHEN“語句就自動跳出了,不需要什么額外的代碼來跳出
Q21:在一個(gè)EVALUATE語句的某個(gè)WHEN分支中能否再插入復(fù)雜的情況(也就是嵌套)
A21:當(dāng)然可以,當(dāng)多個(gè)參數(shù)作為控制變量的時(shí)候1個(gè)WHEN內(nèi)部可以嵌套更多的情況
Q22:什么是結(jié)束終止符
A22:結(jié)束終止符是搭配一些范圍指令的,也就是標(biāo)識一些范圍指令的結(jié)束。如:EVALUATE,END-EVALUATE;IF,END-IF如果沒有該結(jié)束符,該條語句將終止不了
Q23:怎么使用內(nèi)嵌的PERFORM
A23:PERFORM……END-PERFORM
所謂內(nèi)嵌也就是PERFORM被嵌在某些比如循環(huán)語句中擔(dān)當(dāng)執(zhí)行主體,同時(shí)通過UNTIL來指定結(jié)束判定
Q24:什么時(shí)候使用內(nèi)嵌式PERFORM
A24:當(dāng)該段PERFORM的內(nèi)容不被其他段用到,只在某些局部代碼中(當(dāng)然PERFORM的主體所用到的參數(shù)也都是局部的,例如循環(huán))使用,如果PERFORM主體的代碼是一般的(用到了別的程序段的變量),還是使用PERFORMParaname這樣的形式比較好(也就是相對與內(nèi)于PERFORM的外部PERFORM)。
Q25:CONTINUE和NEXTSENTENCE有什么不同
A25:兩者比較相似,都是將程序控制權(quán)交給下一句,但是用NEXTSENTENCE的時(shí)候,只有當(dāng)碰到句結(jié)束符(就是句末的‘.’)才會將執(zhí)行下句
這道題我用了2個(gè)例子測試了一下:
1:IFTEST-NUMERIC>0
THENNEXTSENTENCE
END-IF
DISPLAY‘LINE1′DISPLAY‘LINE2′.DISPLAY‘LINE3′.(請注意代碼中的‘.’號)
結(jié)果輸出:LINE3
2:IFTEST-NUMERIC>0
THENCONTINUE
END-IF
DISPLAY‘LINE1′DISPLAY‘LINE2′.DISPLAY‘LINE3′.
結(jié)果輸出:LINE1
LINE2
LINE3
相信已經(jīng)區(qū)別已經(jīng)比較明顯了,NEXTSENTENCE是靠句末的結(jié)束符(也就是‘.‘)來判斷下一句的,而CONTINUE是通過句頭的保留字(這例中是DISPLAY)來判斷下一句的
Q26:EXIT語句有什么作用
A26:什么都不做,如果用到的話,肯定是作為一段的唯一的一句話,注意:這里不是子程序中用的EXITPROGRAME01WS-TOPPICX(1)
01WS-TOP-REDREDEFINESWS-TOPPICX(2).
IfyouMOVE‘12′toWS-TOP-RED,
DISPLAYWS-TOPwillshow1while
DISPLAYWS-TOP-REDwillshow12.
Q27:能不能把X(100)的區(qū)域重定義成X(200)
A27:可以,重定義只是相當(dāng)于把兩個(gè)區(qū)域的首地址放在一起,從上面這個(gè)例子也很好理解
Q28:能不能把X(200)的區(qū)域重定義成X(100)
A28:可以,原因同上
Q29:怎么解決SOC-7錯(cuò)誤
A29:基本上你要看一下一些比較奇怪的數(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)的初始化問題。
Q30:在內(nèi)部十進(jìn)制區(qū)域和顯示十進(jìn)制區(qū)域符號是怎么存貯的
A30:內(nèi)部十進(jìn)制是一個(gè)數(shù)字占4位(半字節(jié)),內(nèi)存中用16進(jìn)制來存,最后在追加4位作為符號,如-4=01001101(末尾的1101表示負(fù),1100表示正),而我們用于顯示的十進(jìn)制,符號并不占空間,只是在最后一位上標(biāo)識一下
Q31:COMP-3區(qū)怎么存儲符號
A31: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ù))
Q32:COMP區(qū)怎么存儲符號
A32: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)制打?。褂枚c(diǎn)二進(jìn)制將會非常高效。這樣的存儲方式符號是保存在最高有效果位上,如:10=(00001010)?,-10=(00011010)?
Q33:COMP和COMP-3什么區(qū)別
A33:這之前講過了,COMP采用定點(diǎn)二進(jìn)制存儲,COMP-3采用內(nèi)部十進(jìn)制存儲
Q34:COMP-1是什么?什么是COMP-2
A34:其實(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)精確度更高.
Q35:怎么定義一個(gè)COMP-1型?COMP-2型
A35:不要用PICTURE描述,因?yàn)槭谴_定分配多少內(nèi)存的,直接用USAGE,如01WS-VARUSAGECOMP-1
Q36:一個(gè)S9(7)的COMP-3型占用多少字節(jié)?
A36:占用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ò)了哦)
Q37:一個(gè)S9(7)SIGNTRAILINGSEPARATE區(qū)域占多少字節(jié)
A37:這里是每個(gè)符號單獨(dú)分配空間(也就是沒個(gè)數(shù)值用1個(gè)字節(jié)表示,就象最常用的DISPLAY型的分配方式),算上S的空間,所以是7+1=8字節(jié)。一般情況省略的SIGN子句都是隱含SIGNISTRAILING的
Q38:一個(gè)S9(8)COMP區(qū)域占多少字節(jié)
A38:如果之前關(guān)于COMP的解釋聽懂了的話,那很顯然就是4字節(jié)了(定點(diǎn)二進(jìn)制用2字節(jié)存儲1~4,4字節(jié)存儲5~9,……類推,你可以自己推下),如果這塊還不懂的可以問我或者查下書
Q39:S9(8)COMP型最多存儲的最大值是什么
A39:除了8個(gè)數(shù)值外不要忽略符號位
Q40:COMPSYNC是什么
A40:使數(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ù)值,效率很高。
Q41:COBOL1定義的01層最大大小是多少,COBOLII中?
A41:COBOLII中是,沒什么說的,自己翻書
Q42:COBOL中如何涉及(引用調(diào)用)以下這些文件
A42:文件類型這里是COBOL在文件控制區(qū)中的文件組織訪問形式(SELECT下面那句)這里最好翻翻書或者事例代碼反復(fù)記憶
定長文件用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,BLOCKCONTAINS0
固定但是不是以塊的組織形式用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,不要使用BLOCKCONTAINS(因?yàn)椴皇且詨K的組織形式)
變長文件用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISV,BLOCK,CONTAINS0.在之后的文件區(qū)中的文件描述FD中不要編碼記錄長度為4字節(jié)
變長但是不是以塊的組織形式用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISV,同樣不要使用BLOCKCONTAINS也不要編碼記錄長度為4字節(jié)(原因同上)
ESDSVSAM文件用ORGANISATIONISSEQUENTIAL
KSDSVSAM文件用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)記憶
Q43:COBOL中有哪些OPEN方式
A43:有INPUT,OUTPUT,I-O,EXTEND這些OPEN模式
Q44:當(dāng)你想OPEN一個(gè)文件用來寫入的時(shí)候,這屬于什么方式
A44:OUTPUT,EXTEND方式
Q45:JCL中怎么定義在子程序中要調(diào)用的文件
A45:就象要在主程序中調(diào)用一樣使用DD語句
Q46:能否REWRITE(重寫)一個(gè)ESDS文件?能否刪除ESDS中的一條記錄?
A46:能夠重寫(但是記錄長度必須相同),但是不能刪除
Q47:文件狀態(tài)92是什么?
A47:是文件狀態(tài)的一個(gè)返回碼,是邏輯錯(cuò)誤的意思,比如,打開了一個(gè)文件用來導(dǎo)入數(shù)據(jù)但是又想將其他數(shù)據(jù)寫入這個(gè)文件
Q48:文件狀態(tài)39是什么
A48:當(dāng)你的COBOL的邏輯記錄長度(LRECL)或者塊長度(BLOCKSIZE)或者記錄形式(RECFM)和JCL匹配錯(cuò)誤,文件狀態(tài)參數(shù)就會返回39
Q49:什么是靜態(tài)和動態(tài)連接
A49:在靜態(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)存在的。
Q50:AMODE(24),AMODE(31),RMODE(24)和RMODE(ANY)是什么?(僅適用于MVS/ESA企業(yè)管理器)
A50:是編譯/連接的選項(xiàng)卡?;旧螦MODE表示尋址方式,RMODE表示貯存方式。
AMODE(24):24位的尋址方式
AMODE(31):31位的尋址方式
AMODE(ANY):是用24位還是31位的尋址方式取決于REMODE
RMODE(24):存在虛存中超過16Meglne(MEGLINE是某種單位)允許31位的程序調(diào)用24位的程序。(OS/VSCOBOL的PGM只有24位的存址)
RMODE(ANY)-超過或者不到16Megline
Q51:如果要?jiǎng)討B(tài)連接那么要用什么編譯選項(xiàng)
A51:DYNAM
Q52:SSRANGE,NOSSRANGE是什么
A52:這在之前已經(jīng)提到過了,是編譯器的一個(gè)選項(xiàng),用來核對數(shù)組索引或者下標(biāo)的超界問題(比如只定義了10個(gè)元素程序卻使用了第11個(gè)元素的情況)默認(rèn)情況下是NOSSRANGE,如果選了NOSSRANGE,那么當(dāng)索引和下標(biāo)超界的時(shí)候也不會報(bào)RUNTIMEERROR
Q53:怎么從一個(gè)COBOL程序設(shè)置一個(gè)JCL的返回碼
A53:把你想設(shè)置的值MOVE到RETURN-CODE這個(gè)寄存器中。RETURN-CODE寄存器并未在這COBOL程序中申明
Q54:怎么在COBOL程序中提交一個(gè)JOB
A54:把一個(gè)JCL用“轉(zhuǎn)移程序控制權(quán)給下句,CONTINUE碰到范圍終止符就轉(zhuǎn)移程序控制權(quán)給下句。所以用CONTINUE比用NEXTSENTENCE安全(即使忘記寫‘.’也沒有關(guān)系)。
Q62:COBOLII中的EVALUATE相當(dāng)于取代了COBOL中的什么結(jié)構(gòu)
A62:EVALUATE相當(dāng)于取代了COBOL中的IFTHENELSE的嵌套語句
Q63:’abovetheline’和‘belowtheline’有什么意義
A63:在IBM推出MVS/XA體系之前,80年代的程序虛擬存儲都限制在16megs.程序以24位的方式僅在一個(gè)16Mb的地址空間中被編譯,就好象那些程序被保存在虛存中一樣。使用COBOLII編碼之后,以31位方式的編碼能超過16位的界線。(也就是說COBOLII之前是“在此界線之下”的,COBOLII之后“在這接線之上”,這通常容易使一些主機(jī)程序員搞混)
Q64:COBOLII從COBOL中舍棄了哪些
A64:部分列表(指COBOL中有的,COBOLII中沒有的部分語句):REMARKS,NOMINALKEY,COUNTER,CURRENT-DAY,TIME-OF-DAY,STATE,FLOW,COUNT,EXAMINE,EXHIBIT,READYTRACEandRESETTRACE.
Q65:通過比較和其他調(diào)用的區(qū)別解釋下CONTEXT調(diào)用
A65:傳入CONTEXT調(diào)用的參數(shù)是能防止被其他程序調(diào)用修改的。普通的調(diào)用,別的程序能夠修改
Q66:LINKAGESECTION是什么
A66:“連接區(qū)”是一個(gè)被調(diào)用程序連接或者映射到調(diào)用程序工作單元的程序部分。被調(diào)用程序中一些共享項(xiàng)被定義在“連接區(qū)”中(想象下子程序,主程序是沒有連接區(qū)的)
Q67:在表的定義中,下表和索引有什么區(qū)別
A67:(這也在前面的題目也解釋過了,這里僅對文字作翻譯。)下表是工作單元數(shù)據(jù)定義項(xiàng),具有代表性的就是將一個(gè)常量移到一個(gè)PIC999下標(biāo)中,通過ADDTO和SUBTRACTFROM來增減。索引是一個(gè)存在在程序工作單元之外的記錄項(xiàng)。用SET設(shè)置一個(gè)索引的值,并用UPBY和DOWNBY設(shè)置步長來增減
Q68:如果通過連接傳遞一個(gè)表,使用哪個(gè)更優(yōu)-下標(biāo)或者索引?
A68:注意!是不能通過連接傳遞索引的。索引并不是調(diào)用程序工作單元的一部分。這點(diǎn)經(jīng)常搞錯(cuò)
Q69:解釋下內(nèi)部排序和外部排序的區(qū)別和內(nèi)部排序的語法
A69:外部排序不是COBOL,他是通過JCL和PGM=SORT的形式排序的。這種方式不引用代碼卻容易理解。內(nèi)部排序用兩中語法:1)USING,GIVING,這種方式比得上外邊排序,不用額外的文件處理。2)INPUTPROCEDURE,OUTPUTPROCEDURE,這種方式適用用文件操作,并且在排序前后允許數(shù)據(jù)操作
Q70:COMP和COMP-3有什么區(qū)別?解釋下COBOL中的USAGE語句
A70:COMP用的是定點(diǎn)二進(jìn)制,COMP-3用的是內(nèi)部十進(jìn)制(壓縮)。其他的不同USAGE語句就是二進(jìn)制和DISPLAY。DISPLAY是默認(rèn)情況。
Q71:什么時(shí)候范圍終止符強(qiáng)制執(zhí)行
A71:范圍終止符在行內(nèi)PERFORM和EVALUATE語句中強(qiáng)制執(zhí)行。為了程序的可讀性,編碼規(guī)范都建議寫上這兩個(gè)終止符。(也就是說PERFORM和EVALUATE就算沒有END-PERFORM和END-EVALUATE也會強(qiáng)制終止,但是為了可讀性還是建議把END-PERFORM和END-EVALUATE寫上)
Q72:COBOL的PERFORM中什么時(shí)候測試CONDITION,在執(zhí)行PERFORM之前還是之后
A72:在COBOLII中有個(gè)WITHTESTBEFORE或者WITHTESTAFTER的選項(xiàng)子句能夠指定在執(zhí)行前還是后測試CONDITION,默認(rèn)情況是在執(zhí)行前測試
Q73:在EVALUATE語句中,WHEN子句的順序是否有意義
A73:當(dāng)然有意義。EXALUATION通過WHEN子句從頭到尾的執(zhí)行順序會決定結(jié)果。
Q74:INITIALIZE默認(rèn)是值是什么?替代默認(rèn)值的關(guān)鍵字是什么
A74:默認(rèn)情況下INITIALIZE將空格移到字符區(qū),將零移到數(shù)字區(qū)。REPLACING作為替代默認(rèn)值的關(guān)鍵保留字
Q75:總之,說明關(guān)于SETTOTRUE的一切
A75:在COBOLII中88層是通過將關(guān)聯(lián)值移到關(guān)聯(lián)數(shù)據(jù)項(xiàng)中來設(shè)置的(這點(diǎn)改變并不是COBOLII好的地方)。(也就是說88層是通過其關(guān)聯(lián)的數(shù)據(jù)項(xiàng)也就是上一層的,比如‘Y’或者‘N’來決定TRUE或者FALSE)
Q76:COBOLII中LENGTH是什么
A76:LENGTH就象個(gè)專用寄存器來顯示GROUP的長度或者基本項(xiàng)的長度
Q77:二叉搜索和順序搜索有什么區(qū)別?相關(guān)的COBOL命令是什么
A77:(關(guān)于二叉搜索之前已經(jīng)詳細(xì)講過了)要用二叉搜索一個(gè)表,那該表一定要按照這個(gè)KEY值是排序的(遞增或者遞減)。該表被一次次得平分直到找到目標(biāo)元素。順序搜索是從表頭查到尾,所以這些元素是不是按照什么順序排的無所謂。二分搜索對于大數(shù)據(jù)量的表查找速度很快,順序搜索適合數(shù)據(jù)量小的表。SEARCHALL用在二叉搜索中,SEARCH用在順序查找中
Q78:REPLACING項(xiàng)復(fù)制語句的要點(diǎn)是什么
A78:REPLACING用對指定的數(shù)據(jù)做不止一次的相同拷貝,也就是說在同一段程序中要多次拷貝相同的數(shù)據(jù)的時(shí)候用REPLACING
Q79:在COBOL中如果你用GOBACK代替STOPRUN會發(fā)生什么,該程序沒有調(diào)用別的程序
A79:當(dāng)然是會無限循環(huán)下去
Q80:怎么知道一個(gè)模塊是動態(tài)的還是靜態(tài)的
A80:只能通過看連接編輯器(IEWL)或者LOAD模塊本身(編譯生成的模塊)的輸出來看是DYNAMICALLY還是STATICALLY的。如果一個(gè)模塊被叫成動態(tài)模塊,那么他不會出現(xiàn)在主模塊中,如果是靜態(tài)模塊,那么會出現(xiàn)在LOAD模塊中。調(diào)用一個(gè)工作單元區(qū)的變量,包括一個(gè)程序名,并不是動態(tài)調(diào)用。這種被工作單元區(qū)內(nèi)容中的變量以調(diào)用模塊名字的的形式的調(diào)用是固定調(diào)用。
Q81:COBOL中動態(tài)動用和靜態(tài)調(diào)用有什么區(qū)別
A81:所有被調(diào)用的模塊都不能單獨(dú)跑除非這些模塊要求程序通過連接區(qū)傳遞變量給他們。動態(tài)調(diào)用的模塊就是那些在連接編輯時(shí)(LEWL)沒有被調(diào)用程序限定的模塊,這些模塊在程序庫(JOBLIB,STEPLIB)中被加載以連接JOB。要?jiǎng)討B(tài)調(diào)用一個(gè)模塊,DYNAM的編譯器選項(xiàng)要被選中,另外,連接編輯器不能是可執(zhí)行的,因?yàn)樗麜闾幚硭械哪K。一個(gè)靜態(tài)調(diào)用在連接編輯時(shí)被調(diào)用程序限制,所以變成了可執(zhí)行模塊的一部分。
Q82:JCL-COBOL中有幾個(gè)區(qū)
A82:四個(gè)區(qū)
Q83:寫標(biāo)識區(qū)是什么目的
A83:標(biāo)識一些作者等信息,便于文檔管理
Q84:PIC和9V99有什么區(qū)別
A84:PIC是一塊占用了4個(gè)位置的區(qū)域,因?yàn)榘艘粋€(gè)小數(shù)點(diǎn),但是9V99只占用3個(gè)位置,因?yàn)閂不占位
Q85:PIC9V99指什么
A85:PIC9V99指一段含有一個(gè)不占位置的小數(shù)點(diǎn)的占三個(gè)位置的數(shù)值區(qū)域。小數(shù)點(diǎn)位置在第一個(gè)位置之后,V表示一個(gè)隱含的小數(shù)點(diǎn)。
Q86:按照什么原則/方針去寫一段結(jié)構(gòu)化的COBOL程序(也就是程序規(guī)范)
A86:1)用‘EVALUATE’語句去對應(yīng)不用的情況
2)嵌套的時(shí)候不要忘記寫范圍終止符
3)用PERFORM語句來寫要執(zhí)行的語句(也就是說把要執(zhí)行的語句寫成一段然后用行PERFORM語句去執(zhí)行,不要光把要執(zhí)行的語句羅列在主程序中)
4)用在使用PERFORM語句之前和之后都檢測(我們現(xiàn)在常用的是檢測文件狀態(tài))這種方式來寫DO-WHILE結(jié)構(gòu)(不要問我DO-WHILE結(jié)構(gòu)是什么)
Q87:01ws-npic9(2)valuezero.
a-para.
move5tows-n.
performb-paraws-ntimes.
b-para.
move10tows-n.
這段程序中b-para被執(zhí)行幾次
A87:只執(zhí)行5次。在循環(huán)中并不會取這個(gè)10的值。
我的理解是:在第一次執(zhí)行performb-paraws-ntimes.的時(shí)候并沒有通過move10tows-n.修改ws-n的值,也就是說在該循環(huán)語句中取到的ws-n還是5,那就該執(zhí)行(將10移到ws-n5次),如果最后再跟一句b-paraws-ntimes.這樣的話b-para就該執(zhí)行10次了
Q88:SEARCH和SEARCHALL有什么區(qū)別?哪個(gè)更高效
A88:SEARCH是順序查找,從頭到尾。SEARCH是二叉搜索。超過70個(gè)數(shù)據(jù)項(xiàng)的時(shí)候SEARCHALL效率更高
Q89:給出命令終止符的例子
A89:END-IF,END-EVALUATE
Q90:強(qiáng)制程序執(zhí)行超過16Meg行的時(shí)候應(yīng)該注意什么
A90:確認(rèn)連接選項(xiàng)AMODE=31和RMODE=ANY.
Q91:怎么通過COBOL提交一個(gè)JCL
A91:將49E-LENPICS9(4)COMP.
49E-NAMEPICX(25).
Q99:在COBOL中怎么申明一個(gè)帶有類型為25位字符型屬性的變量
A99:答案見上
Q100:請區(qū)分COBOL和COBOLII(大部分程序是用COBOLII寫的,所以比較好理解,但是這和COBOL是不同的)
A100:以下是COBOL與VSCOBOLII的不用點(diǎn)
支持MVS/XA和MVS/ESA。COBOL提供的編譯器和OBJECT程序能夠在24或者31位的尋址方式下執(zhí)行
支持VM/XA和VM/ESA。其提供的編譯器和OBJECT程序能夠在24或者31位的尋址方式下執(zhí)行
支持VSE/ESA。其提供的編譯器和OBJECT程序能夠在VSE/ESA環(huán)境下執(zhí)行
Q101:PERFORM是什么?VARYING是什么?(詳細(xì)介紹下這些子句)
A101:PERFORM語句是過程部的語句,它能將程序控制權(quán)交給一段指定的程序,并按照指定的次數(shù)執(zhí)行(也就是說執(zhí)行一段程序,PERFORMXXXNTIMES)等到這段程序執(zhí)行完之后(比如,指定要執(zhí)行的次數(shù)執(zhí)行到了或者UNTIL后的判斷邏輯為真),那么程序控制權(quán)就會轉(zhuǎn)到下一條執(zhí)行語句(也就是執(zhí)行下一條語句,緊跟該P(yáng)ERFORM的),有5種PERFORM語句:
基本PERFORM
PERFORMXXXNTIMES
PERFORMXXXUNTILYYY
PERFORMXXXVARYING
內(nèi)嵌PERFORM
Q102:數(shù)據(jù)部中有幾個(gè)區(qū)
A102:6個(gè)區(qū)1,文件區(qū);2,工作單元區(qū);3,本地存儲區(qū);4,屏幕顯示區(qū);5,報(bào)告區(qū);6,連接區(qū)
Q103:REDEFINES子句是什么
A103:當(dāng)想用不用的數(shù)據(jù)名寫在相同的存儲分配地址的時(shí)候用REDEFINES
Q104:S9(4)COMP-3占多少字節(jié)
A104:3個(gè)字節(jié)
Q105:索引和下標(biāo)的區(qū)別是什么
A105:下標(biāo)引用數(shù)組的出現(xiàn)位置,索引指向表元素出現(xiàn)的地址。索引只能通過PERFORM,SEARCH和SET修改。要使用SERACH和SEARCHALL就要為表建個(gè)索引
Q106:結(jié)構(gòu)化的COBOL編程和面向
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國串聯(lián)恒功率電伴熱帶數(shù)據(jù)監(jiān)測研究報(bào)告
- 統(tǒng)編版二年級語文下冊期中達(dá)標(biāo)測試卷(提升版)(含答案)
- 2025年《義務(wù)教育小學(xué)道德與法治課程標(biāo)準(zhǔn)測試卷2022版》測試題庫及答案
- 2022-2023學(xué)年廣東省廣州市天河區(qū)匯景實(shí)驗(yàn)學(xué)校七年級(下)期中數(shù)學(xué)試卷(含答案)
- 遺產(chǎn)繼承遺囑效力確認(rèn)合同(2篇)
- 采購與施工分包合同(2篇)
- 物流配送路徑優(yōu)化對比表
- 開幕致辭與企業(yè)愿景演講實(shí)錄
- 蘇武牧羊的紅色故事征文
- 抵押房產(chǎn)借款合同
- 大學(xué)體驗(yàn)英語項(xiàng)目組《大學(xué)體驗(yàn)英語綜合教程(1)》(第3版)學(xué)習(xí)指南【詞匯短語+課文精解+全文翻譯+練習(xí)答案】
- DB4412T 25-2023 電動自行車停放充電場所消防安全規(guī)范
- 蘇軾《答黃魯直書》與蘇轍《答黃庭堅(jiān)書》比較閱讀(附答案解析與譯文)
- 成人機(jī)電一體化實(shí)習(xí)報(bào)告
- (完整版)數(shù)字信號處理教案(東南大學(xué))
- 一本書讀懂不良資產(chǎn)
- 2022-2023學(xué)年河北省唐山市十縣聯(lián)盟高二下學(xué)期期中考試英語試題原卷版+解析版含聽力音頻無聽力原文
- 《飯店服務(wù)與管理》認(rèn)識飯店的“神經(jīng)中樞”
- GB/T 15856.5-2023六角凸緣自鉆自攻螺釘
- 電子產(chǎn)品質(zhì)量工程技術(shù)與管理高職PPT全套完整教學(xué)課件
- 【橡膠工藝】-橡膠履帶規(guī)格
評論
0/150
提交評論