COBOL經典面試題庫(中文)_第1頁
COBOL經典面試題庫(中文)_第2頁
COBOL經典面試題庫(中文)_第3頁
COBOL經典面試題庫(中文)_第4頁
COBOL經典面試題庫(中文)_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

COBOL經典面試題庫

Q1:列舉COBOL的DEVISION

A1:標識部,環境部,數據部,過程部

Q2:COBOL有哪些可用的數據類型

A2:字符型(這里指的是包含字母和數字),字母型,數字型

Q3:INITIALIZE這個詞做了些什么

A3:將字母,字符,數字區域都置成空格(置空),將數字區置0,FILLER和OCCURSDEPENDINGON項不處理

Q4:77層有什么作用

A4:基本層數據項,不能用做細分別的層,也不能被細分

(來源:)

Q5:88層有什么作用

A5:條件邏輯層

Q6:66層有什么作用

A6:重命名層

Q7:ISNUMERIC這個子句怎么確定(也就是說確定句子的真值)

A7:ISNUMERIC用在字符項,帶符號數字,浮點數,不帶符號數。如果目標項只含0~9則返回TRUE。但是,如果待測項目是個帶符號數,那么他就含有0-9還有+和-

05ARRAY1PICX(9)OCCURS10TIMES.

05ARRAY2PICX(6)OCCURS20TIMESINDEXEDBYWS-INDEX

Q8:COBOL中怎么建表/數組

A8:如上.

Q9:OCCURS子句能用在第一層嗎

A9:不能

Q10:索引和下標有什么區別

A10:下標可以指定數組中任意中位置的元素(只要知道其下標),下標只能是數字型常量或者數字型變量(但是不能在指定的時候修改,如:A(K+1)這樣是不行的,要修改的話要在指定的外部改,如:ADD1TOK,而索引的話是從表頭/數組頭開始檢索(以BYN的指定檢索規律往后滾)

再者,索引只能通過PERFORM,SEARCH和SET來修改,如果要在一個表中使用SEARCH,SEARCHALL,那這個表就要有索引(因為SEARCH,SEARCHALL的參數中指定索引,所以即使其有很多限制還是得用它)

Q11:SERACH和SERACHALL有什么區別

A11:SEARCH是順序查找

SERACHALL是2叉查找(相信數據結構學過2叉樹的都不會陌生),在使用SEARCHALL前表必須有一個遞增/遞減的KEY,并且表已經按照其KEY值排序了,這樣才能使用SEARCHALL

Q12:為了使用SEARCHALL,存貯順序是怎么樣的

A12:他必須是遞增或者是遞減的,默認地政。如果你想在一個遞減順序存貯的表/數組使用搜索的話,那么當定義表/數組的時候你應該加一個DESCENDINGKEY子句(這之前表要已經按指定的順序排序了)

Q13:什么是2叉查找

A13:將你要找的目標項與數組的正中項比較,找到就結束搜索,沒找到則繼續如此循環(比較下一個中值),取哪一半取決于目標值大于中值還是小于中值

PS:聯想2叉樹的查找規律就很好理解,因為所謂的“表“本身也就是數組

Q14:我的程序有個數組定義了10項。因為有個BUG,我發現即使訪問第11項,程序也不異常終止。那是出了什么問題

A14:必須使用編譯器的一個選項SSRANGE,如果你想檢查數組的超界問題。默認是NOSSRANGE

Q15:怎么在一個COBOL程序中排序?給出排序文件的定義,排序語法和意思

A15:語法就是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:怎么在JCL中定義一個排序文件來跑這個COBOL程序

A16:用SORTWK01,SORTWK02,…..作為DATASETNAME。用多少取決于你要排序的數量,但是至少3個。

Q17:執行一個區和一個段有什么區別

A17:簡單來說的話就是區的概念比段大,執行一個區就要執行其內部所有段,執行段的話只執行該段。

Q18:EVALUATE語句有什么作用

A18:EVALUATE就象個CASE語句(多重開關語句,學過C的總知道吧),不同點在于EVALUATE不需要BREAK,一旦匹配就跳出EVALUATE語句了Q19)WhatarethedifferentformsofEVALUATEstatement?

A19)

Q31:COMP-3區怎么存儲符號

A31:COMP-3采用的是內部十進制的存儲方式,所謂內部十進制就是壓縮式的外部十進制存儲方式,上題講過外部十進制每個數值都用1個字節存儲,但前4位是存符號的,這樣比較浪費存儲空間,所以內部十進制的存儲方式就用半個字節(4位)存儲一個數字,在最后增加4位作為符號(1100(C)為正,1101(D)為負)

Q32:COMP區怎么存儲符號

A32:COMP是采用定點二進制的方式存儲數據,也就是將一個十進制的數值轉化成二進制再進行存儲,因為機器存儲的形式也是二進制,所以定點二進制的讀取是最快速的,因為COMP型的數據是用做計算(也就是說不用再轉化成十進制打印),使用定點二進制將會非常高效。這樣的存儲方式符號是保存在最高有效果位上,如:10=(00001010)?,-10=(00011010)?

Q33:COMP和COMP-3什么區別

A33:這之前講過了,COMP采用定點二進制存儲,COMP-3采用內部十進制存儲

Q34:COMP-1是什么?什么是COMP-2

A34:其實之所以定義計算型數據(COMP~COMP-3)以區別DISPLAY(能計算,但是要用于打印)是為了考慮效率,因為大家知道文件導入(也就是USER使用的數據)一般是十進制的,而機器存儲都是二進制,那么當定義的數據光用來計算不用打印,處于效率考慮會把它定義成COMP型,當然就會衍生出幾類COMP以適應不用的數據類型的存儲。很明顯,這里COMP-1就是采用內部短浮點(4個字節表示一個數,8位指數部分,24位表示數字部分),COMP-2用內部長浮點型(8個字節表示一個書,16位指數部分,48位表示數字部分)以適應浮點數據的存儲,長浮點精確度更高.

Q35:怎么定義一個COMP-1型?COMP-2型

A35:不要用PICTURE描述,因為是確定分配多少內存的,直接用USAGE,如01WS-VARUSAGECOMP-1

Q36:一個S9(7)的COMP-3型占用多少字節?

A36:占用4字節。COMP-3用內部十進制存儲,S9(7)中的S是要占空間的,符號占4位,7個數字,每個4位(半個字節),所以是(4+7*4)/8=4字節(字節和位的比例不要搞錯了哦)

Q37:一個S9(7)SIGNTRAILINGSEPARATE區域占多少字節

A37:這里是每個符號單獨分配空間(也就是沒個數值用1個字節表示,就象最常用的DISPLAY型的分配方式),算上S的空間,所以是7+1=8字節。一般情況省略的SIGN子句都是隱含SIGNISTRAILING的

Q38:一個S9(8)COMP區域占多少字節

A38:如果之前關于COMP的解釋聽懂了的話,那很顯然就是4字節了(定點二進制用2字節存儲1~4,4字節存儲5~9,……類推,你可以自己推下),如果這塊還不懂的可以問我或者查下書

Q39:S9(8)COMP型最多存儲的最大值是什么

A39:除了8個數值外不要忽略符號位

Q40:COMPSYNC是什么

A40:使數據項按“自然邊界”排列。SYNCHRONIZED(簡寫SYNC)語句是同步安置語句。不同的機器會有一個機器字的概念(以一個WORD四個字節舉例,這個數字因機器各異,但往往是四個字節),兩個機器字之間就是這里說的“自然邊界”,也就是說機器每次從內存中取出二個字節長度的數據,但是一個數據項中含有的數值可能跨越幾個機器字或者未填滿機器字,這樣連續讀取雖然比較省空間,但是要引用某些機器字的時候要把多個拿出來重新組織(因為一個數值可能跨越多個數據字,也可能未滿,機器就要判斷一個機器字中哪些是前一個數值哪些是下個數值)。如果向左對齊的話就是想左“自然邊界”靠,也就是說未滿一個數據字的用空格(對非數字項)或者零(數字項)填充,填充部分不能插入其他數據項的內容,同理向右對齊就是向機器字的右“自然邊界”靠,類似的在左邊的空余部分填充。按照自然邊界存儲相當與犧牲空間換取時間,存取效率,系統讀取的機器字兩段填充區域(0或者SPACE)之間就是一個數值,效率很高。

Q41:COBOL1定義的01層最大大小是多少,COBOLII中?

A41:COBOLII中是16777215,沒什么說的,自己翻書

Q42:COBOL中如何涉及(引用調用)以下這些文件

A42:文件類型這里是COBOL在文件控制區中的文件組織訪問形式(SELECT下面那句)這里最好翻翻書或者事例代碼反復記憶

定長文件用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,BLOCKCONTAINS0

固定但是不是以塊的組織形式用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,不要使用BLOCKCONTAINS(因為不是以塊的組織形式)

變長文件用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISV,BLOCK,CONTAINS0.在之后的文件區中的文件描述FD中不要編碼記錄長度為4字節

變長但是不是以塊的組織形式用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISV,同樣不要使用BLOCKCONTAINS也不要編碼記錄長度為4字節(原因同上)

ESDSVSAM文件用ORGANISATIONISSEQUENTIAL

KSDSVSAM文件用ORGANISATIONISINDEXED,RECORDKEYIS,ALTERNATERECORD

作為關鍵字的RRDS文件用ORGANISATIONISRELATIVE,RELATIVEKEYIS

打印文件用ORGANISATIONISSEQUENTIAL.UseRECORDINGMODEISF,BLOCKCONTAINS0.(UseRECFM=FBAinJCLDCB)

PS:這道題是闡述COBOL怎么調用外部的各種文件,在文件控制區以及文件區中要定義的一些關鍵字,有我們最熟悉的FB(定長)和VB(變長)(當然我們的前提是這兩類都是以BLOCK(塊)為單位的)但是也有不為我們所知的文件類型(可能出現的情況很少,但是也確實存在,比如編譯出的MODULE放的LOAD必須是V文件(文件組織形式是V))當然在不寫ORGANISATION這些關鍵字的時候都是默認為FB的,但是在處理一些復雜數據(比如VSAM數據)還有和外部文件(比如JCL)的連接的時候這些保留字都是要指定的,關于更具體的還是要翻書加強記憶

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是什么

A48:當你的COBOL的邏輯記錄長度(LRECL)或者塊長度(BLOCKSIZE)或者記錄形式(RECFM)和JCL匹配錯誤,文件狀態參數就會返回39

Q49:什么是靜態和動態連接

A49:在靜態連接中,被調用的子程序是連接到調用程序,但是在動態連接中,被調用子程序和調用主程序的可執行模塊是都存在的(分開的)。你可以在連接選項中選擇DYNAM或者NODYNAM(就算你選擇了NODYNAM,CALL標識符還是回把它自動轉換成一個動態調用)。靜態子程序下次被調用時不會再處于其初始狀態,除非用INITIAL初始化或者用CANCEL。動態的都是以初始狀態存在的。

Q50:AMODE(24),AMODE(31),RMODE(24)和RMODE(ANY)是什么?(僅適用于MVS/ESA企業管理器)

A50:是編譯/連接的選項卡。基本上AMODE表示尋址方式,RMODE表示貯存方式。

AMODE(24):24位的尋址方式

AMODE(31):31位的尋址方式

AMODE(ANY):是用24位還是31位的尋址方式取決于REMODE

RMODE(24):存在虛存中超過16Meglne(MEGLINE是某種單位)允許31位的程序調用24位的程序。(OS/VSCOBOL的PGM只有24位的存址)

RMODE(ANY)-超過或者不到16Megline

Q51:如果要動態連接那么要用什么編譯選項

A51:DYNAM

Q52:SSRANGE,NOSSRANGE是什么

A52:這在之前已經提到過了,是編譯器的一個選項,用來核對數組索引或者下標的超界問題(比如只定義了10個元素程序卻使用了第11個元素的情況)默認情況下是NOSSRANGE,如果選了NOSSRANGE,那么當索引和下標超界的時候也不會報RUNTIMEERROR

Q53:怎么從一個COBOL程序設置一個JCL的返回碼

A53:把你想設置的值MOVE到RETURN-CODE這個寄存器中。RETURN-CODE寄存器并未在這COBOL程序中申明

Q54:怎么在COBOL程序中提交一個JOB

A54:把一個JCL用“//xxxxxxxSYSOUT=(A,INTRDR)”寫到一個DATASET中,A是輸出組,在程序中要將這個DATASET作為OUTPUT(輸出)打開。為這個文件定義一個80字節的記錄格式長度

Q55:OS/VSCOBOL和VSCOBOLII有什么區別

A55:OS/VSCOBOL的PGM只能是24位地址的,VSCOBOLII的PGM既能24位又能31位

報表writer只支持OS/VSCOBOL

USAGEISPOINTER只支持VSCOBOLII

REFERENCE(感覺翻成“引用”合適點)修改,比如:WS-VAR只支持VSCOBOLII

只有COBOLII有EVALUATE語句

范圍終止符只有COBOLII中才有

OS/VSCOBOL是按照ANSI74標準,VSCOBOLII是按照ANSI85標準

VSCOBOLII程序之間允許CICS調用

Q56:建立一個COBOL可執行程序要通過哪些步驟

A56:DB2預編譯(如果內含SQL),CICS翻譯器(如果是CICSPGM),COBOL編譯器,連接編輯器,如果是DB2程序,要建立綁定DBRM的PLAN

Q57:能不能在VSCOBOLII的PGM中調用OSVSCOBOL的PGM?

A57:在沒有CICS的環境中,是可以的,在CICS環境中不行

Q58:COBOL和COBOLII什么區別

A58:有五點不同,COBOLII支持結構變成(通過PERFORMS和一系列范圍終止符);COBOLII引進了些新的特性(如EVALUATE,SETTOTRUE,CALL,BYCONTEXT,等等),COBOLII允許程序編址在16MB行上;COBOLII不支持一些舊的特性(如READYTRACE,REPORT-WRITER,ISAM,ETC),以及支持加強版CICS

Q59:什么是范圍終止符

A59:一個范圍終止符和其之前的動詞配套使用,如,IF和END-IF,以至于前置動詞和終止符一起作用。COBOLII其他普通的詞是READ,PERFORM,EVALUATE,SEARCH和STRING

Q60:PERFORM行有什么作用?什么時候使用?簡單介紹下它

A60:PERFORM和END-PERFORM配套使用,所有COBOLII程序語句都在這兩關鍵字之間。這和COBOL的PERFORM或者PERFORMTHRU一段是一樣的意思。在PERFORM的語句中只要沒有內部GOTO就一直執行直到碰到EXIT。在行PERFORM語句中為了可讀型不能超過一頁的長度,他經常會引用到其他PERFORM段

Q61:NEXTSENTENCE和CONTINUE有什么區別

A61:(這在前面已經詳細說明,這樣僅就文字翻譯)NEXTSENTENCE當碰到‘.’轉移程序控制權給下句,CONTINUE碰到范圍終止符就轉移程序控制權給下句。所以用CONTINUE比用NEXTSENTENCE安全(即使忘記寫‘.’也沒有關系)。

Q62:COBOLII中的EVALUATE相當于取代了COBOL中的什么結構

A62:EVALUATE相當于取代了COBOL中的IFTHENELSE的嵌套語句

Q63:’abovetheline’和‘belowtheline’有什么意義

A63:在IBM推出MVS/XA體系之前,80年代的程序虛擬存儲都限制在16megs.程序以24位的方式僅在一個16Mb的地址空間中被編譯,就好象那些程序被保存在虛存中一樣。使用COBOLII編碼之后,以31位方式的編碼能超過16位的界線。(也就是說COBOLII之前是“在此界線之下”的,COBOLII之后“在這接線之上”,這通常容易使一些主機程序員搞混)

Q64:COBOLII從COBOL中舍棄了哪些

A64:部分列表(指COBOL中有的,COBOLII中沒有的部分語句):REMARKS,NOMINALKEY,COUNTER,CURRENT-DAY,TIME-OF-DAY,STATE,FLOW,COUNT,EXAMINE,EXHIBIT,READYTRACEandRESETTRACE.

Q65:通過比較和其他調用的區別解釋下CONTEXT調用

A65:傳入CONTEXT調用的參數是能防止被其他程序調用修改的。普通的調用,別的程序能夠修改

Q66:LINKAGESECTION是什么

A66:“連接區”是一個被調用程序連接或者映射到調用程序工作單元的程序部分。被調用程序中一些共享項被定義在“連接區”中(想象下子程序,主程序是沒有連接區的)

Q67:在表的定義中,下表和索引有什么區別

A67:(這也在前面的題目也解釋過了,這里僅對文字作翻譯。)下表是工作單元數據定義項,具有代表性的就是將一個常量移到一個PIC999下標中,通過ADDTO和SUBTRACTFROM來增減。索引是一個存在在程序工作單元之外的記錄項。用SET設置一個索引的值,并用UPBY和DOWNBY設置步長來增減

Q68:如果通過連接傳遞一個表,使用哪個更優-下標或者索引?

A68:注意!是不能通過連接傳遞索引的。索引并不是調用程序工作單元的一部分。這點經常搞錯

Q69:解釋下內部排序和外部排序的區別和內部排序的語法

A69:外部排序不是COBOL,他是通過JCL和PGM=SORT的形式排序的。這種方式不引用代碼卻容易理解。內部排序用兩中語法:1)USING,GIVING,這種方式比得上外邊排序,不用額外的文件處理。2)INPUTPROCEDURE,OUTPUTPROCEDURE,這種方式適用用文件操作,并且在排序前后允許數據操作

Q70:COMP和COMP-3有什么區別?解釋下COBOL中的USAGE語句

A70:COMP用的是定點二進制,COMP-3用的是內部十進制(壓縮)。其他的不同USAGE語句就是二進制和DISPLAY。DISPLAY是默認情況。

Q71:什么時候范圍終止符強制執行

A71:范圍終止符在行內PERFORM和EVALUATE語句中強制執行。為了程序的可讀性,編碼規范都建議寫上這兩個終止符。(也就是說PERFORM和EVALUATE就算沒有END-PERFORM和END-EVALUATE也會強制終止,但是為了可讀性還是建議把END-PERFORM和END-EVALUATE寫上)

Q72:COBOL的PERFORM中什么時候測試CONDITION,在執行PERFORM之前還是之后

A72:在COBOLII中有個WITHTESTBEFORE或者WITHTESTAFTER的選項子句能夠指定在執行前還是后測試CONDITION,默認情況是在執行前測試

Q73:在EVALUATE語句中,WHEN子句的順序是否有意義

A73:當然有意義。EXALUATION通過WHEN子句從頭到尾的執行順序會決定結果。

Q74:INITIALIZE默認是值是什么?替代默認值的關鍵字是什么

A74:默認情況下INITIALIZE將空格移到字符區,將零移到數字區。REPLACING作為替代默認值的關鍵保留字

Q75:總之,說明關于SETTOTRUE的一切

A75:在COBOLII中88層是通過將關聯值移到關聯數據項中來設置的(這點改變并不是COBOLII好的地方)。(也就是說88層是通過其關聯的數據項也就是上一層的,比如‘Y’或者‘N’來決定TRUE或者FALSE)

Q76:COBOLII中LENGTH是什么

A76:LENGTH就象個專用寄存器來顯示GROUP的長度或者基本項的長度

Q77:二叉搜索和順序搜索有什么區別?相關的COBOL命令是什么

A77:(關于二叉搜索之前已經詳細講過了)要用二叉搜索一個表,那該表一定要按照這個KEY值是排序的(遞增或者遞減)。該表被一次次得平分直到找到目標元素。順序搜索是從表頭查到尾,所以這些元素是不是按照什么順序排的無所謂。二分搜索對于大數據量的表查找速度很快,順序搜索適合數據量小的表。SEARCHALL用在二叉搜索中,SEARCH用在順序查找中

Q78:REPLACING項復制語句的要點是什么

A78:REPLACING用對指定的數據做不止一次的相同拷貝,也就是說在同一段程序中要多次拷貝相同的數據的時候用REPLACING

Q79:在COBOL中如果你用GOBACK代替STOPRUN會發生什么,該程序沒有調用別的程序

A79:當然是會無限循環下去

Q80:怎么知道一個模塊是動態的還是靜態的

A80:只能通過看連接編輯器(IEWL)或者LOAD模塊本身(編譯生成的模塊)的輸出來看是DYNAMICALLY還是STATICALLY的。如果一個模塊被叫成動態模塊,那么他不會出現在主模塊中,如果是靜態模塊,那么會出現在LOAD模塊中。調用一個工作單元區的變量,包括一個程序名,并不是動態調用。這種被工作單元區內容中的變量以調用模塊名字的的形式的調用是固定調用。

Q81:COBOL中動態動用和靜態調用有什么區別

A81:所有被調用的模塊都不能單獨跑除非這些模塊要求程序通過連接區傳遞變量給他們。動態調用的模塊就是那些在連接編輯時(LEWL)沒有被調用程序限定的模塊,這些模塊在程序庫(JOBLIB,STEPLIB)中被加載以連接JOB。要動態調用一個模塊,DYNAM的編譯器選項要被選中,另外,連接編輯器不能是可執行的,因為他會要你處理所有的模塊。一個靜態調用在連接編輯時被調用程序限制,所以變成了可執行模塊的一部分。

Q82:JCL-COBOL中有幾個區

A82:四個區

Q83:寫標識區是什么目的

A83:標識一些作者等信息,便于文檔管理

Q84:PIC9.99和9V99有什么區別

A84:PIC9.99是一塊占用了4個位置的區域,因為包括了一個小數點,但是9V99只占用3個位置,因為V不占位

Q85:PIC9V99指什么

A85:PIC9V99指一段含有一個不占位置的小數點的占三個位置的數值區域。小數點位置在第一個位置之后,V表示一個隱含的小數點。

Q86:按照什么原則/方針去寫一段結構化的COBOL程序(也就是程序規范)

A86:1)用‘EVALUATE’語句去對應不用的情況

2)嵌套的時候不要忘記寫范圍終止符

3)用PERFORM語句來寫要執行的語句(也就是說把要執行的語句寫成一段然后用行PERFORM語句去執行,不要光把要執行的語句羅列在主程序中)

4)用在使用PERFORM語句之前和之后都檢測(我們現在常用的是檢測文件狀態)這種方式來寫DO-WHILE結構(不要問我DO-WHILE結構是什么)

Q87:01ws-npic9(2)valuezero.

a-para.

move5tows-n.

performb-paraws-ntimes.

b-para.

move10tows-n.

這段程序中b-para被執行幾次

A87:只執行5次。在循環中并不會取這個10的值。

我的理解是:在第一次執行performb-paraws-ntimes.的時候并沒有通過move10tows-n.修改ws-n的值,也就是說在該循環語句中取到的ws-n還是5,那就該執行(將10移到ws-n5次),如果最后再跟一句c-para.performb-paraws-ntimes.這樣的話b-para就該執行10次了

Q88:SEARCH和SEARCHALL有什么區別?哪個更高效

A88:SEARCH是順序查找,從頭到尾。SEARCH是二叉搜索。超過70個數據項的時候SEARCHALL效率更高

Q89:給出命令終止符的例子

A89:END-IF,END-EVALUATE

Q90:強制程序執行超過16Meg行的時候應該注意什么

A90:確認連接選項AMODE=31和RMODE=ANY.

Q91:怎么通過COBOL提交一個JCL

A91:將//dd1DDsysout=(*,intrdr)寫在JCL中

Q92:怎么在一個COBOL程序中執行一段JCL語句

A92:使用EXECCICSSPOOLWRITE(變量)END-EXEC命令。變量名是一個包括一段JCL語句的COBOL結構

Q93:說明REDEFINES子句的優點

A93:1:你能用另一個PICTURE(另一種類型)重定義之前的一種類型,并且以相同的起點

2:在工作單元區中能通過REDEFINES初始化變量

3:能夠通過重定義一個變量而重定義很多子變量。(這個來解決Y2000問題很方便)

PS:在多維表的元素初始化中也用到REDEFINE,不過這和第3點作用類似

Q94:靜態調用和動態調用有什么區別

A94:在靜態調用的情況下,被調用的程序是單獨的一段程序,他是一段可執行的程序。在跑程序的時候能夠調用它。而關于動態調用,被調用程序并不是一段可執行程序,但能通過調用程序而執行

Q95:你認為怎么才能寫相互好的程序

A95:一段好的程序要遵循從上到下步驟。這也能使程序員和用戶能夠根據邏輯容易得讀懂程序

Q96:怎么編寫一個COBOL去訪問一個JCL定義的參數?你會在JCL的EXEC行上寫PARM參數嗎?

A96:1)用JCL的SYSIN。//sysindd*這里你寫參數*/這樣就能把參數傳給COBOL

2)在JCL中用PARM語句,比如:在EXEC行寫parm==’john’,'david’,那么你就必須在PGM的連接區中為第一個值寫變量長度和變量名,如:abcpicx(4),就會在這個變量前加上之前的PARM(’john’,'david’),你需要用以上的方法定義其他參數

Q97:既然已經知道COMP-3會占用較少的空間,為什么還要編碼S9(4)COMP

A97:這里S9(4)COMP是個小整數,所以2個數值相當于一個字節,所以一共占用2字節。如果是S9(4)COMP-3的情況就是1個數值占半個字節。4個數值占用2個字節,符號占半個字節,這么算一共是2個半字節,但是系統存儲的最小單位是字節,所以一共占3個字節

雖然COMP-3占用少的空間(這里的較少是相對于DISPLAY型說的),但是COMP占用少的時間,效率更高。

Q98:在COBOL-85中一個數組最多能是幾維的

A98:COBOL-85最多是七維,COBOL-84最多是三維

01EMP-GRP.

49E-LENPICS9(4)COMP.

49E-NAMEPICX(25).

Q99:在COBOL中怎么申明一個帶有類型為25位字符型屬性的變量

A99:答案見上

Q100:請區分COBOL和COBOLII(大部分程序是用COBOLII寫的,所以比較好理解,但是這和COBOL是不同的)

A100:以下是COBOL與VSCOBOLII的不用點

支持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語句是過程部的語句,它能將程序控制權交給一段指定的程序,并按照指定的次數執行(也就是說執行一段程序,PERFORMXXXNTIMES)等到這段程序執行完之后(比如,指定要執行的次數執行到了或者UNTIL后的判斷邏輯為真),那么程序控制權就會轉到下一條執行語句(也就是執行下一條語句,緊跟該PERFORM的),有5種PERFORM語句:

基本PERFORM

PERFORMXXXNTIMES

PERFORMXXXUNTILYYY

PERFORMXXXVARYING

內嵌PERFORM

Q102:數據部中有幾個區

A102:6個區1,文件區;2,工作單元區;3,本地存儲區;4,屏幕顯示區;5,報告區;6,連接區

Q103:REDEFINES子句是什么

A103:當想用不用的數據名寫在相同的存儲分配地址的時候用REDEFINES

Q104:S9(4)COMP-3占多少字節

A104:3個字節

Q105:索引和下標的區別是什么

A105:下標引用數組的出現位置,索引指向表元素出現的地址。索引只能通過PERFORM,SEARCH和SET修改。要使用SERACH和SEARCHALL就要為表建個索引

Q106:結構化的COBOL編程和面向對象的編程有什么區別

A1

溫馨提示

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

評論

0/150

提交評論