cobol介紹.doc_第1頁
cobol介紹.doc_第2頁
cobol介紹.doc_第3頁
cobol介紹.doc_第4頁
cobol介紹.doc_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

英文縮寫: COBOL (Common business Oriented Language)中文譯名: COBOL語言解 釋: 一種適合于商業(yè)及數(shù)據(jù)處理的類似英語的程序設計語言。這種語言可使商業(yè)數(shù)據(jù)處理過程精確表達。COBOL(面向商業(yè)的通用語言,又稱為企業(yè)管理語言、數(shù)據(jù)處理語言等,Common Business Oriented Langauge)是最早的高級編程語言之一,是世界上第一個商用語言。1 COBOL的歷史1959年5月,五角大樓委托格雷斯霍波(G.Hopper)博士領導一個委員會并由Rear Admiral Grace Hopper公司主持開發(fā),并于1961年由美國數(shù)據(jù)系統(tǒng)語言協(xié)會公布。正式發(fā)布于1960年4月,稱為Cobol60。1959年12月出現(xiàn)了第一個COBOL語言文本,并于1960年4月正式發(fā)表,因此也被稱為COBOL-60。1968年美國國家標準委員會ANSI又通過了新的標準ANSI COBOL X.3.23-1968。1972年國際標準化組織ISO將其作為ISO COBOL-72。1974年ANSI對COBOL-68作出了修訂擴充,形成了ANSI COBOL X3.23-1974,隨后1978年ISO采用其形成ISO COBOL-78,后來又提出了ANSI X3.23-85,增加了很多結(jié)構(gòu)化程序設計的內(nèi)容,ISO標準ISO1989:1985也采用了該標準。COBOL標準還在不斷地改進和完善,最新的標準COBOL 2002主體已經(jīng)于2002年12月出版,其他部分還在不斷地完善之中?,F(xiàn)在最新的版本是Cobol2002。1963年,美國國家標準研究所(ANSI)進行了標準化,但是ANSI標準很少被遵循;因此,COBOL程序只是部分可移植的。2 COBOL的重要性經(jīng)過40多年的不斷修改、豐富完善和標準化,COBOL已發(fā)展為多種版本的龐大語言,在財會工作、統(tǒng)計報表、計劃編制、情報檢索、人事管理等數(shù)據(jù)管理及商業(yè)數(shù)據(jù)處理領域,都有著廣泛的應用。COBOL的重要性可以用這句話來描述:世界上70的數(shù)據(jù)都是用COBOL語言處理的,并且90的ATM事務處理用的都是COBOL語言。每天在線處理的COBOL事務有300億次。500強中有492家(包括全部的100強)使用了COBOL語言,目前在COBOL方面的投資已經(jīng)超過3萬億美元,據(jù)稱用COBOL書寫的程序超過了1000億行,并且以每年大約50億行代碼的速度在增長。由于COBOL在商業(yè)領域的雄厚基礎,而且COBOL主要是應用于銀行、金融和會計行業(yè)等非常重要的商業(yè)數(shù)據(jù)處理領域。所以,即使對于具有相當經(jīng)驗的IT公司來說,重新編寫COBOL語言的可靠的應用軟件也是不實際或是從商業(yè)角度上并不可行的,而且還要花上很長的時間,只要大型機存在,COBOL就不會消失,即使是對電腦界產(chǎn)生巨大影響的“千年蟲”(Y2K)也沒有改變COBOL的命運。3 COBOL的特點COBOL是一種面向數(shù)據(jù)處理的、面向文件的、面向過程(POL)的高級編程語言,是一種功能很強而又極為冗長的語言。COBOL適合于具有循環(huán)處理周期的環(huán)境(例如打印工資支票)以及數(shù)據(jù)操縱量相當大的環(huán)境。COBOL主要應用于商業(yè)數(shù)據(jù)處理領域,對各種類型的數(shù)據(jù)進行收集、存儲、傳送、分類、排序、計算及打印報表、輸出圖象是它的強項。COBOL語法與英文很接近,即使不懂電腦的人也能看懂程序。強大的文件處理功能,大量的數(shù)據(jù)通常以文件的形式存儲在磁盤上。僅提供了加、減、乘、除及乘方這五種簡單的算術運算,因而不適于進行科學計算。未來的COBOL將支持XML等Web時代的新技術。4 COBOL的程序結(jié)構(gòu)COBOL程序由4部(DIVISION)組成:IDENTIFICATION DIVISION.(標識部)、ENVIRONMENT DIVISION.(環(huán)境部)、DATA DIVISION.(數(shù)據(jù)部)、PROCEDURE DIVISION.(過程部),而每個部又由若干節(jié) (SECTION)組成1編碼格式第1列為序號區(qū),用于表示行號。行號不是必須的,也不必是順序的,甚至可以是本機字符集中的任意字符,但正確的行號是很重要的。 第7列為指示區(qū),可以包含如下指示符: *指示本行內(nèi)容為注釋。-指示本行代碼為上一行的延續(xù)。D指示本行代碼為調(diào)試代碼,將在啟用DEBUGGING模式時被編譯,未啟用時將被忽略。/指示編譯器為源碼列表開始新的一頁,并且本行將被視為注釋。第811列為A區(qū)。下列項必須從A區(qū)開始: 部標題(DIVISION)節(jié)標題(SECTION)段名(段標題)層指示符FD和SD,層號01和77DECLARATIVES 和 END DECLARATIVESEND PROGRAM第1272列為B區(qū)。作為程序主體的條目(entries),句子(sentences),語句(statements),從句(clauses)和續(xù)行(/)等都必須從B區(qū)開始。 *句法說明:節(jié)(SECTIONs)和段(paragraphs)定義了程序,它們又細分為以下部分:條目(entries):以句點(.)結(jié)尾的一系列從句。構(gòu)造于標識部、環(huán)境部和數(shù)據(jù)部。從句(clauses):連續(xù)的COBOL字符串的有序集合,用于指定條目的某個屬性。構(gòu)造于標識部、環(huán)境部和數(shù)據(jù)部。句子(sentences):以句點(.)結(jié)尾的一個或多個語句的序列。構(gòu)造于過程部。語句(statements):指定程序要執(zhí)行的某個動作。構(gòu)造于過程部。短語(phrases):構(gòu)成從句和語句的更小單元。2基本結(jié)構(gòu)-|-1-|-2-|-3-|-4-|-5-|-6-|-7-|-8/標識部000001 IDENTIFICATION DIVISION. 000002 PROGRAM-ID. PGMNAME. /指定本程序名。此段是必須的,并且必須排在標識部的最前頭。/環(huán)境部000003 ENVIRONMENT DIVISION./配置節(jié)000004 CONFIGURATION SECTION.000005 SOURCE-COMPUTER. IBM-PC WITH DEBUGGING MODE. /WITH從句指定啟用調(diào)試代碼。000006 OBJECT-COMPUTER. IBM-PC.000007 SPECIAL-NAMES.000008 CURRENCY-SIGN IS $. /指定貨幣符號為$。000009 DECIMAL-POINT IS COMMA. /在PIC字符串或數(shù)字字面值中交換逗號,和小數(shù)點.的功能。/輸入輸出節(jié)000010 INPUT-OUTPUT SECTION.000011 FILE-CONTROL. /命名程序所用文件,并將其與外部文件相關聯(lián)。000012 SELECT INPUT-FILE ASSIGN TO IN.DAT./數(shù)據(jù)部000013 DATA DIVISION./文件節(jié)000014 FILE SECTION. /定義數(shù)據(jù)文件的結(jié)構(gòu)。000015 FD INPUT-FILE. /File Description.后面的文件名必須與前面SELECT語句中的一致。000016 01 INPUT-RECORD-1 PIC X(100). /描述文件屬性及與其關聯(lián)的數(shù)據(jù)記錄(可以是多個)。000017 01 INPUT-RECORD-2 /同一存儲區(qū)域的另一種定義。重定義INPUT-RECORD-1。000018 03 ITEM-1 PIC X(20).000019 03 ITEM-2 PIC X(80)./工作存儲節(jié),描述程序處理過程中所涉及的不屬于文件的數(shù)據(jù)記錄。/此存儲區(qū)在運行單元開始時被分配,在運行單元結(jié)束時被銷毀,在此過程中將保持其最后使用值。000020 WORKING-STORAGE SECTION.000021 01 WORK-FIELD PIC X(20)./連接節(jié),用于被調(diào)用程序,描述從調(diào)用程序傳遞過來的數(shù)據(jù)。000022 LINKAGE SECTION.000023 01 LNK-FIELD PIC X(10)./過程部,被調(diào)用程序可以包含USING從句用于接收調(diào)用程序傳遞的參數(shù)數(shù)據(jù),主調(diào)程序不需要。000024 PROCEDURE DIVISION USING BY REFERENCE LNK-FIELD. /BY REFERENCE是默認值,可以省略。000025 PGMNAME-START SECTION. /過程部處理邏輯的細分。000026 PERFORM P-PROC-1-RTN.000027 PERFORM P-PROC-2-RTN.000028 EXIT PROGRAM. /返回調(diào)用程序(同GOBACK)。000029 P-PROC-1-RTN SECTION.000030 P-PROC-1.000031 DISPLAY first program:.000032 P-PROC-1-EXT.000033 EXIT. /相當于CONTINUE,其后的任何語句都會被執(zhí)行。000034 P-PROC-2-RTN SECTION.000035 P-PROC-2.000036 DISPLAY HELLO, WORLD!.000037 P-PROC-2-EXT.000038 EXIT.-|-1-|-2-|-3-|-4-|-5-|-6-|-7-|-83標識部(IDENTIFICATION DIVISION)PROGRAM-ID:指定程序名,其后可以加上RECURSIVE從句,表示本程序可以被遞歸執(zhí)行。如PROGRAM-ID. PGMNAME RECURSIVE.RECURSIVE只能用于一個編譯單元的最外層程序,該程序不能包含嵌套子程序。4環(huán)境部(ENVIRONMENT DIVISION)配置節(jié):CONFIGURATION SECTION描述程序編譯和執(zhí)行的計算機環(huán)境。SOURCE-COMPUTER:指定用于編譯本程序的計算機系統(tǒng)名,由編譯器廠商定義。WITH DEBUGGING MODE將啟用調(diào)試代碼,其中WITH可以省略。OBJECT-COMPUTER:指定用于運行本程序的計算機系統(tǒng)名。輸入輸出節(jié):INPUT-OUTPUT SECTION可以包含兩個段,F(xiàn)ILE-CONTROL和I-O-CONTROL,后者不常用。*文件說明:可用的文件組織方式取決于所選用的數(shù)據(jù)存儲設備:順序存儲設備(Sequential-only Devices):終端、打印機、讀卡器和打卡器被稱為單元記錄設備,因為它們一次只處理一行數(shù)據(jù),所以在程序中讀寫此類設備時,也必須按順序一次處理一條記錄。磁帶上的記錄是順序排列的,在程序中也必須順序處理。處理磁帶文件時使用QSAM物理順序文件。磁帶記錄可以是定長或變長的,其數(shù)據(jù)傳輸速率比卡片快。 直接存取存儲設備(Direct-Access Storage Devices,DASDs):此類設備提供了更大的靈活性,可以使用多種文件組織方式Sequential (VSAM or QSAM),Line sequential (UNIX),Indexed (VSAM),Relative (VSAM)。 在用于z/OS和OS/390系統(tǒng)的IBM Enterprise COBOL上,向操作系統(tǒng)作出的對輸入輸出設備數(shù)據(jù)記錄的存儲和檢索請求,由兩種存取方式QSAM和VSAM,及UNIX文件系統(tǒng)來處理。QSAM(Queued Sequential Access Method):沒有鍵的文件,其中的記錄按輸入順序一條接一條排列。程序只能順序處理這類文件,按照記錄在文件中的順序來檢索它們。記錄被創(chuàng)建后,不能改變其長度和在文件中的位置,也不能刪除它,但可以用REWRITE更新DASDs上的QSAM文件。QSAM文件可以放在順序存儲設備和直接存取存儲設備(DASDs)上。 VSAM(Virtual Storage Access Method):用于DASDs上的文件的存取方式。此方式可以加載文件、從文件中檢索記錄、更新文件、增加/替換/刪除文件中的記錄。VSAM相比QSAM有如下優(yōu)勢:保護數(shù)據(jù)免于未授權(quán)的訪問,跨系統(tǒng)兼容性,獨立于設備,更簡潔的JCL,能使用INDEXED和RELATIVE文件組織方式。 FILE-CONTROL:將程序中的每個邏輯文件與外部數(shù)據(jù)集聯(lián)系起來,并指定文件的組織、存取方式及其他信息??砂缦抡Z句:(中的詞是可選的)SELECT OPTIONAL INFILE ASSIGN TO FILE.DATORGANIZATION IS *ACCESS MODE IS *RECORD/RELATIVE KEY IS *ALTERNATE RECORD KEY IS * WITH DUPLICATESFILE STATUS IS DATANAME1 DATANAME2.INFILE是程序中使用的邏輯文件名,它必須在數(shù)據(jù)部文件節(jié)的FD或SD條目中被描述。FILE.DAT可以是操作系統(tǒng)下的物理文件,也可以是記號名(如DD名或環(huán)境變量),可在之后利用運行時選項為其指定實際的物理文件。OPTIONAL表示此文件不一定每次運行時都會存在。當以只讀(INPUT)或讀寫(I-O)方式打開此文件時,如果文件不存在,將自動創(chuàng)建此文件。在沒有OPTIONAL限定時,讀取不存在的文件會報錯。ORGANIZATION指定文件的邏輯結(jié)構(gòu):SEQUENTIAL:記錄的次序由其在文件中的物理順序決定,記錄可以是定長或變長的,它們沒有鍵(key)。如果省略ORGANIZATION從句,編譯器將默認文件為本類型。 INDEXED:記錄的位置由隨文件而建立并由系統(tǒng)所維護的索引來確定,索引建立在位于文件記錄中的鍵(key)上。每條記錄都必須包含有一個作為主鍵(primary key)的項目,并由RECORD KEY從句來聲明。此類文件必須是DASDs上的文件,記錄可以是定長或變長的。 RELATIVE:記錄根據(jù)其相對于文件開頭的位置來決定,文件中第1條記錄的相對記錄號為1,第10條記錄的相對記錄號為10,依次類推。此類文件必須是DASDs上的文件,記錄可以是定長或變長的。 LINE SEQUENTIAL:記錄的次序由其在文件中的物理順序決定。每條記錄以一個分隔符(換行符)結(jié)尾,分隔符不算在記錄長度內(nèi)。記錄寫入時,尾部的空格都被刪除,然后加上分隔符再寫入文件。記錄讀取時,如果讀取的長度小于記錄存儲區(qū)的長度,尾部的分隔符被舍棄,剩余長度以空格填滿;如果讀取的長度大于記錄存儲區(qū)的長度,在讀滿記錄存儲區(qū)后,剩余字符將成為下一次讀取的內(nèi)容。每條記錄只能包含可打印字符及如下控制字符:警報(X2F)、退格(X16)、換頁(X0C)、換行(X15)、回車(X0D)、水平制表符(X05)、垂直制表符(X0B)、DBCS(Double Byte Character Set) shift-out(X0E)、DBCS shift-in(X0F),其中換行符被當作分隔符,其它字符被當作文件記錄的數(shù)據(jù)。 ACCESS MODE指定文件中的記錄以何種方式可用:SEQUENTIAL:可用于上述任一ORGANIZATION的文件。對于SEQUENTIAL和LINE SEQUENTIAL文件,記錄按照物理順序(即記錄原先被寫入文件的順序)讀寫;對于INDEXED文件,記錄按照鍵值的升序讀寫;對于RELATIVE文件,記錄按其相對記錄號的升序讀寫。如果省略ACCESS從句,將默認為本方式。 RANDOM:只能用于INDEXED和RELATIVE文件。由索引鍵值/相對鍵值指定所讀寫的記錄,一次存取一條。 DYNAMIC:只能用于INDEXED和RELATIVE文件。紀錄可按上述兩種方式讀寫,取決于所用輸入輸出語句的具體形式。 RECORD KEY用于指定INDEXED文件記錄中用作主鍵的項目。對于不同的記錄,主鍵的值必須是唯一的。RELATIVE KEY確立一個數(shù)據(jù)名,用來為RELATIVE文件的記錄指定相對記錄號。它不能是數(shù)據(jù)記錄的一部分,必須被定義為無符號整型,且不能包含PICTURE符號P。ALTERNATE RECORD KEY替換關鍵字是可選的,它提供了存取INDEXED文件的另一途徑。當指定了DUPLICATES時,替換關鍵字的值對于不同記錄必須是唯一的,如果沒有指定DUPLICATES,其值可以有重復。對于順序存取方式,具有相同鍵值的記錄按其被輸入文件的順序來讀寫;對于隨機存取方式,只有第一條記錄可以被檢索到。FILE STATUS監(jiān)視文件每一次輸入輸出操作的執(zhí)行。在每一次涉及此文件的顯式的或隱式的輸入輸出操作之后,系統(tǒng)都會給由FILE STATUS指定的項目設定一個值。DATANAME1可以在WORKING STORAGE SECTION、LOCAL STORAGE SECTION或LINKAGE SECTION中定義。它可以是2個字符的英數(shù)字或NATIONAL類別,也可以是USAGE DISPLAY或USAGE NATIONAL的2位的數(shù)字類別,且不能包含PICTURE符號P。 DATANAME2必須在WORKING STORAGE SECTION或LINKAGE SECTION中定義為一個擁有6個字節(jié)的英數(shù)字型組合項。只有VSAM文件需要指定DATANAME2,它用來接收6字節(jié)的VSAM返回碼。當VSAM返回碼非0時,DATANAME2被設定。當DATANAME1的值為0時,DATANAME2的值是未定義的。 I-O-CONTROL:此段在COBOL程序中是可選的,用于指定程序的重新運行點和不同文件共享的內(nèi)存區(qū)等。由于此段很少使用,無需詳細了解。5數(shù)據(jù)部(DATA DIVISION)數(shù)據(jù)部以結(jié)構(gòu)化的方式描述程序中處理的所有數(shù)據(jù)。文件節(jié):FILE SECTION描述數(shù)據(jù)文件的結(jié)構(gòu)。對于SORT/MERGE文件,必須包含一個SD描述項,對于其它文件,必須包含一個FD描述項。FILE SECTION.FD FILE-NAME IS EXTERNAL IS GLOBAL BLOCK CONTAINS INT-1 TO INT-2 CHARACTERS/RECORDS RECORD CONTAINS INT-3 TO INT-4 CHARACTERS RECORD IS VARYING IN SIZE FROM INT-5 TO INT-6 CHARACTERS DEPENDING ON INT-701 FILE-RECORD. 03 *. .FILE-NAME必須與環(huán)境部相應的SELECT從句指定的名字一致。其后的從句都是可選可任意排列的。EXTERNAL表明FILE-NAME是外部的。外部文件名能讓兩個程序通過共享文件來通信,此文件的存儲區(qū)是與整個運行單元關聯(lián)的,而不是只與其中某個程序關聯(lián)。GOLBAL表明FILE-NAME是全局的。全局文件名對聲明它的程序以及直接或間接包含于該程序的每個程序都是可用的。BLOCK CONTAINS指定物理記錄的長度。INT-1和INT-2必須為非0無符號整數(shù),它包括物理記錄中任意的控制字節(jié)和填充內(nèi)容(邏輯記錄不包括填充內(nèi)容)。如果記錄不是分塊的,此句可以省略。CHARACTERS用來指定一條物理記錄所包含的字節(jié)數(shù),它是默認的。RECORDS用來指定一條物理記錄所包含的邏輯記錄數(shù)。RECORD指定用于存儲每條記錄的字節(jié)數(shù)。INT-3單獨使用時用于定長記錄;INT-3和INT-4一起使用時可用于定長或變長記錄,但這種形式在任何情況下都不是必須的。當一個文件的所有01層描述項都具有相同的長度時,將得到定長記錄。INT-7必須是無符號整型數(shù)據(jù)項。工作存儲節(jié):WORKING-STORAGE SECTION描述不屬于數(shù)據(jù)文件的數(shù)據(jù)記錄,它也用于描述在源程序中被賦值并在目標文件的執(zhí)行過程中保持值不變的數(shù)據(jù)項。連接節(jié):LINKAGE SECTION用于被調(diào)用程序,描述從調(diào)用程序傳遞過來的參數(shù)數(shù)據(jù)。6過程部(PROCEDURE DIVISION)過程部包含程序要執(zhí)行的所有語句,包括可選的DECLARATIVES和節(jié)、段、語句等。過程部的部頭格式為:PROCEDURE DIVISION USING BY REFERENCE/VALUE DATA-1. RETURNING DATA-2. USING短語用于子程序,指定程序被調(diào)用時所接收的參數(shù)。DATA-1.必須是LINKAGE SECTION中定義為01層或77層的數(shù)據(jù)項,但在調(diào)用程序的CALL語句的USING短語中指定的數(shù)據(jù)項可以是其數(shù)據(jù)部中定義的任意層的數(shù)據(jù)項。DATA-1.的數(shù)據(jù)描述項中可以包含REDEFINES從句??梢詮姆荂OBOL程序CALL COBOL程序,或者從系統(tǒng)命令向COBOL主程序傳遞用戶參數(shù)。調(diào)用程序與子程序的USING短語中的標識符是按位置而不是名字來對應的,相應的標識符必須包含相同的字節(jié)數(shù),盡管它們的數(shù)據(jù)描述不必相同。BY REFERENCE和BY VALUE短語作用于其后的所有參數(shù),直到出現(xiàn)另一個此短語。RETURNING短語指定一個用于接收程序結(jié)果的數(shù)據(jù)項,這是一個輸出參數(shù)。DATA-2必須是LINKAGE SECTION中定義為01層或77層的數(shù)據(jù)項。此短語不能用于包含ENTRY語句的程序、嵌套程序和主程序。過程部的結(jié)束由以下之一標識:碰到嵌套程序的標識部部頭。 END PROGRAM記號。 到達程序的尾部,后面再沒有任何代碼行了。 7數(shù)據(jù)描述程序中所有數(shù)據(jù)間的關系在數(shù)據(jù)部中通過層指示符和層號來定義。層指示符(level indicator)和其描述條目一起指定了程序中的每個文件。FD是文件描述的層指示符,SD是sort-merge文件描述的層指示符。層號(level-number)和其描述條目一起指定了具體數(shù)據(jù)的屬性。層號包括范圍01,49中的一位或兩位整數(shù),以及3個特殊層號:66、77、88?;緮?shù)據(jù)項(elementary items)是數(shù)據(jù)的基本劃分。組數(shù)據(jù)項(group items)是基本數(shù)據(jù)項的組合。組還可以組合成包含一個或多個子組的更大的組。不帶GROUP-USAGE從句的組是英數(shù)字型的組,無論其所包含的基本數(shù)據(jù)項是如何表示的。GROUP-USAGE的用法為:GROUP-USAGE IS NATIONAL.每個組數(shù)據(jù)項和基本數(shù)據(jù)項都是一個單獨的條目,都必須被賦予一個層號。01:它是最高層,必須從A區(qū)開始??梢允怯?shù)字型組數(shù)據(jù)項、NATIONAL組數(shù)據(jù)項或基本數(shù)據(jù)項。 0249:可以從A區(qū)或B區(qū)開始。層次越低的數(shù)據(jù)項被賦予越大的層號,它們之間不必是連續(xù)的。 66:必須包含一個RENAMES從句,用于重新編制前面已定義的數(shù)據(jù)項。格式: 66 DATA-1 RENAMES DATA-2 THROUGH/THRU DATA-3.例-01 RECORD-I 05 DN-1. . 05 DN-2. . 05 DN-3. . 05 DN-4. .66 DN-6 RENAMES DN-1 THROUGH DN-3.圖示:DN-1DN-2DN-3DN-4DN-6例-01 RECORD-II 05 DN-1. . 10 DN-2. . 10 DN-2A. . 05 DN-1A REDEFINES DN-1. 10 DN-3A. . 10 DN-3. . 10 DN-3B. . 05 DN-5. .66 DN-6 RENAMES DN-2 THROUGH DN-3.圖示:DN-1 DN-2 DN-2A DN-5 DN-1ADN-3A DN-3DN-3BDN-677:必須從A區(qū)開始。用于標識工作存儲節(jié)或連接節(jié)中的一個獨立的數(shù)據(jù)描述條目。它不是其它項目的細分項,本身也不能細分。 88:標識與條件變量的某個特定值相關的條件名。 01 AGE-GROUP PIC 99. /條件變量(conditional variable) 88 INFANT VALUE 0. /條件名(condition name),下同 88 BABY VALUE 1, 2. 88 CHILD VALUE 3 THRU 12. 88 TEENAGER VALUE 13 THRU 19.用法:IF INFANT /如果AGE-GROUP的值為0 . /執(zhí)行語句數(shù)據(jù)分類:ClassCategoryUsageAlphabeticAlphabeticDISPLAYAlphanumericAlphanumericDISPLAYAlphanumeric-editedDISPLAYNumeric-editedDISPLAYDBCSDBCSDISPLAY-1NationalNationalNATIONALNational-editedNATIONALNumeric-editedNATIONALNumericNumericDISPLAY (type zoned decimal)NATIONAL (type national decimal)PACKED-DECIMAL (type internal decimal)COMP-3 (type internal decimal)BINARYCOMPCOMP-4COMP-5Internal floating-pointCOMP-1COMP-2External floating-pointDISPLAYNATIONAL數(shù)據(jù)對齊規(guī)則:數(shù)據(jù)在基本數(shù)據(jù)項中的對齊標準取決于接收它的數(shù)據(jù)項的類型。數(shù)字型(numeric):按假定的小數(shù)點對齊,如果需要,會發(fā)生截斷或以0填充。如果沒有顯式地指定小數(shù)點,則認為小數(shù)點緊接在字段的最右邊。 數(shù)字編輯型(numeric-edited):按小數(shù)點對齊,如果需要,會在任意一端發(fā)生截斷或以0填充。 內(nèi)部浮點數(shù)(internal floating-point):小數(shù)點被假定緊接在字段的最左邊,數(shù)據(jù)向左對齊,指數(shù)被相應地調(diào)整。 外部浮點數(shù)(external floating-point):數(shù)據(jù)向左對齊,指數(shù)被相應地調(diào)整。 英數(shù)字型(alphanumeric)/英數(shù)字編輯型(alphanumeric-edited)/字母型(alphabetic)/DBCS:左對齊,如果需要,會在右端發(fā)生截斷或以空格填充。如果指定了JUSTIFIED/JUST從句,則右對齊。 national/national-edited:同上,區(qū)別是用Unicode空格(NX0020)進行填充。 數(shù)值數(shù)據(jù)內(nèi)部表示:數(shù)值類型PICTURE、USAGE和可選SIGN從句值內(nèi)部表示External decimalPIC S9999 DISPLAY+ 1234F1 F2 F3 C4- 1234F1 F2 F3 D4 1234F1 F2 F3 C4PIC 9999 DISPLAY 1234F1 F2 F3 F4PIC S9999 DISPLAYSIGN LEADING+ 1234C1 F2 F3 F4- 1234D1 F2 F3 F4PIC S9999 DISPLAYSIGN LEADING SEPARATE+ 12344E F1 F2 F3 F4- 123460 F1 F2 F3 F4PIC S9999 DISPLAYSIGN TRAILING SEPARATE+ 1234F1 F2 F3 F4 4E- 1234F1 F2 F3 F4 60BinaryPIC S9999 BINARY COMP COMP-4+ 123404 D2- 1234FB 2EPIC S9999 COMP-5+ 1234530 39- 12345CF C7PIC 9999 BINARY COMP COMP-4 123404 D2PIC 9999 COMP-5 60000EA 60Internal decimalPIC S9999 PACKED-DECIMAL COMP-3+ 123401 23 4C- 123401 23 4DPIC 9999 PACKED-DECIMAL COMP-3+ 123401 23 4F- 123401 23 4FInternal floating pointPIC 9999 COMP-1+ 123443 4D 20 00PIC 9999 COMP-2+ 123443 4D 20 00 00 00 00 00- 1234C3 4D 20 00 00 00 00 00External floating pointPIC +9(2).9(2)E+99 DISPLAY+ 12344E F1 F2 4B F3 F4 C5 4E F0 F2- 123460 F1 F2 4B F3 F4 C5 4E F0 F2*內(nèi)部表示為16進制表示,每個16進制字符占用4位(bits),兩個16進制字符表示1個字節(jié)(byte)。數(shù)據(jù)描述從句:FILLER:指定程序中不被顯示提到的數(shù)據(jù)項。如果省略了數(shù)據(jù)名及FILLER,則相當于使用了FILLER。在INITIALIZE語句中,F(xiàn)ILLER數(shù)據(jù)項將被忽略。BLANK WHEN ZERO/ZEROS/ZEROES:當數(shù)據(jù)項的值為零時,該項只包含空格。只能用于數(shù)字型和數(shù)字編輯型的基本數(shù)據(jù)項,且其PICTURE字符串不包含S或*,必須被顯式或隱式地描述為USAGE DISPLAY或USAGE NATIONAL。不能用于日期字段。JUSTIFIED/JUST RIGHT:右對齊。只用于英數(shù)字型(alphanumeric)/英數(shù)字編輯型(alphanumeric-edited)/字母型(alphabetic)/DBCS/national/national-edited。OCCURS:指定一個表(數(shù)組),其元素可以通過下標來訪問,下標從1開始。OCCURS不能用于01、66、77和88層的項目。多維表通過嵌套OCCURS來實現(xiàn),其下標格式為(m,n,k.)或(m n k.)。格式:OCCURS INT-1 TO INT-2 TIMES DEPENDING ON DATA-1ASCENDING/DESCENDING KEY IS DATA-2.INDEXED BY IDX-1. .其中,INT-2必須比INT-1大。DEPENDING ON從句定義不定長的表。DATA-1必須是整數(shù)數(shù)據(jù)項,其當前值代表了表中當前的元素個數(shù)。ASCENDING/DESCENDING KEY短語指定表中的數(shù)據(jù)必須按升序或降序排列。DATA-2.必須按其重要性的降序列出。所有KEY的個數(shù)不能超過12個,所有KEY的長度和不能超過256。INDEXED BY定義表的索引??梢詾橐粋€特定的表創(chuàng)建索引(用INDEXED BY),此索引也可以用于其它表,只要兩個表具有相同數(shù)目及相同長度的元素;也可以單獨創(chuàng)建一個索引(用USAGE IS INDEX),此索引可以用于任何一個表。例:05 TABLE-ITEM PIC X(8) OCCURS 10 INDEXED BY INX-A.77 INX-B USAGE IS INDEX. PERFORM VARYING INX-B FROM 1 BY 1 UNTIL INX-B 10 DISPLAY TABLE-ITEM(INX-B) END-PERFORM.PICTURE/PIC IS:指定基本數(shù)據(jù)項的一般特征和編輯要求。PICTURE從句不可用于INDEX數(shù)據(jù)項、RENAMES主語、POINTER和內(nèi)部浮點數(shù)。picture符號的含義:A:容納一個拉丁字母或空格。占據(jù)數(shù)據(jù)項大小中的一個字符位。 B:容納一個空格。占據(jù)數(shù)據(jù)項大小中的一個字符位。 E:標示外部浮點數(shù)中指數(shù)的起點。占據(jù)數(shù)據(jù)項大小中的一個字符位。 G:一個DBCS字符。占據(jù)數(shù)據(jù)項大小中的一個字符位。 N:一個DBCS字符或NATIONAL字符。占據(jù)數(shù)據(jù)項大小中的一個字符位。 P:指定假定的十進制縮放位置,不計入數(shù)據(jù)項大小。只能在picture字符串的最左邊或最右邊指定一串連續(xù)的P。例:PPP999的值范圍為0.000999,S999PPP的值范圍為-999000-1000、0、1000999000。 S:正負號指示符,不計入數(shù)據(jù)項大小,如果指定了SIGN . SEPARATE,則占據(jù)數(shù)據(jù)項大小中的一個字符位。S只能是picture字符串最左邊的一個字符。 V:指定假定小數(shù)點的位置,不計入數(shù)據(jù)項大小。當小數(shù)點位于picture字符串最右邊時,V是多余的。V只能在給定的picture字符串中出現(xiàn)一次。 X:容納計算機英數(shù)字符集中任意一個被允許的字符。占據(jù)數(shù)據(jù)項大小中的一個字符位。 Z:代表一個先頭數(shù)字字符位,當該位為0時,將用空格代替。占據(jù)數(shù)據(jù)項大小中的一個字符位。 9:一個數(shù)字。占據(jù)數(shù)據(jù)項大小中的一個字符位。 0:數(shù)字0。占據(jù)數(shù)據(jù)項大小中的一個字符位。 /:斜杠。占據(jù)數(shù)據(jù)項大小中的一個字符位。 ,:逗號。占據(jù)數(shù)據(jù)項大小中的一個字符位。 .:一個編輯字符,代表用于對齊的小數(shù)點。另外也代表一個句號位,占據(jù)數(shù)據(jù)項大小中的一個字符位。 +、-:用于編輯項的正負號控制符。占據(jù)數(shù)據(jù)項大小中的一個字符位。+表示對于正值將輸出+表示正數(shù),負值將輸出-表示負數(shù);-表示對于正值將輸出空表示正數(shù),負值將輸出-表示負數(shù)。 *:代表一個先頭數(shù)字字符位,當該位為0時,將用*代替。占據(jù)數(shù)據(jù)項大小中的一個字符位。 緊跟在其中任一符號后的括號內(nèi)的無符號非0整數(shù)表示該符號連續(xù)出現(xiàn)的個數(shù)。REDEFINES:用不同的數(shù)據(jù)描述條目描述同一塊計算機內(nèi)存區(qū)域。格式:level-number DATA-1/FILLER REDEFINES DATA-2.DATA-1及其下級項不能包含VALUE從句。DATA-2的描述項可以有REDEFINES從句,不可以有OCCURS從句,但DATA-2可以是OCCURS數(shù)據(jù)項的下級項。DATA-1和DATA-2必須具有相同級別,但層號不必相同,且不能是66或88。DATA-1的長度可以比DATA-2的長度大,這不會改變DATA-2的長度。如果 A REDEFINES B. 則 MOVE A TO B 和 MOVE B TO A 的結(jié)果可能是未定義的。SIGN:為帶符號數(shù)字項指定運算符的位置和表現(xiàn)形式。格式:SIGN IS LEADING/TRAILING SEPARATE CHARACTER.該從句只能用于一個用語為DISPLAY或NATIONAL且其picture字符串中包含S的基本數(shù)字數(shù)據(jù)項,或者至少包含一個此類數(shù)據(jù)項的組數(shù)據(jù)項。當用于后者時,SIGN從句只作用于組中包含的如前者的數(shù)據(jù)項,其它數(shù)據(jù)項將不受此從句影響。USAGE NATIONAL必須包含SEPARATE短語。SYNCHRONIZED:指定基本數(shù)據(jù)項在內(nèi)存的自然邊界上的對齊方式??捎糜诨緮?shù)據(jù)項和01層組數(shù)據(jù)項。格式:SYNCHRONIZED/SYNC LEFT/RIGHT.USAGE:指定數(shù)據(jù)在內(nèi)存中的表示格式。可用于除66和88外的任意層次的數(shù)據(jù)描述條目。組數(shù)據(jù)項的USAGE將作用于組內(nèi)每一個基本數(shù)據(jù)項。當USAGE沒有被顯式地指定時,將默認為如下的USAGE:DISPLAY:當PICTURE從句只包含G、N以外的符號。 NATIONAL:當PICTURE從句只包含一個或多個N,并且編譯器選項NSYMBOL(NATIONAL)有效。 DISPLAY-1:當PICTURE從句只包含一個或多個N,并且編譯器選項NSYMBOL(DBCS)有效。 計算項(computational items)用于算術運算,必須是數(shù)字型。其最大長度為18位數(shù),除了PACKED-DECIMAL項外。如果編譯器選項ARITH(COMPAT)有效,PACKED-DECIMAL的最大長度為18位數(shù);如果ARITH(EXTEND)有效,則PACKED-DECIMAL的最大長度為31位數(shù)。其PICTURE字符串只能包含:9、S、V、P。COMP-1和COMP-2不能有PICTURE字符串。計算項包括以下用語(COMP是COMPUTATIONAL的縮寫,二者等價):BINARY:二進制數(shù)據(jù)項。負數(shù)用其絕對值的2的補碼表示。所占內(nèi)存取決于其PICTURE從句中定義的十進制數(shù)的個數(shù)。 位數(shù): 內(nèi)存:14 2個字節(jié)59 4個字節(jié)1018 8個字節(jié)二進制數(shù)是big-endian的,運算符包含在最左邊的位上。PACKED-DECIMAL:內(nèi)部十進制數(shù)據(jù)項。PICTURE字符串中每2個十進制數(shù)占用一個字節(jié)的內(nèi)存,除了最右邊的字節(jié)只包含1個十進制數(shù)及符號。 COMP:等價于BINARY。 COMP-1:內(nèi)部浮點數(shù)據(jù)項(單精度)。4字節(jié)長。 COMP-2:內(nèi)部浮點數(shù)據(jù)項(雙精度)。8字節(jié)長。 COMP-3:等價于PACKED-DECIMAL。 COMP-4:等價于BINARY。 COMP-5:本地二進制數(shù)據(jù)項。其取值范圍可達到本地二進制表示所能容納的范圍,而不受限于PICTURE字符串中9的個數(shù)所指的值。 PIC: 內(nèi)存: 取值范圍:S9(01)S9(04) 2個字節(jié) 2(-15)215-1S9(05)S9(09) 4個字節(jié) 2(-31)231-1S9(10)S9(18) 8個字節(jié) 2(-63)263-19(01)9(04) 2個字節(jié) 0216-19(05)9(09) 4個字節(jié) 0232-19(10)9(18) 8個字節(jié) 0264-1Cobol積累:cobol 知識點集錦COBOL數(shù)據(jù)類型 計息是銀行的一項重要業(yè)務,包括日常代理客戶收、付計算客戶利息和年度計息等。目前,這些工作大多數(shù)是在IBM ES9000主機的SAFE應用系統(tǒng)平臺上進行,該系統(tǒng)聯(lián)機程序和聯(lián)機計息程序是用IBM 370匯編語言實現(xiàn)的。為方便匯編語言讀寫,在VSAM文件存儲的數(shù)據(jù)中,數(shù)據(jù)存放格式進行了特殊的定義。如日期存放采用X(3)型,01年03月15日,存入EBCD碼為X010315。在進行年度計息時,為了實現(xiàn)各種復雜的運算工作,一般采用COBOL語言來實現(xiàn)各種運算。而采用COBOL語言讀取X(3)型數(shù)據(jù)時,讀出的是字符型數(shù)據(jù),不能直接進行運算,必須轉(zhuǎn)換為COBOL數(shù)據(jù)類型的數(shù)據(jù)后才能進行相應處理。如剛才的X010315,需要轉(zhuǎn)換為內(nèi)部十進制數(shù)據(jù)X0010315C。

溫馨提示

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

評論

0/150

提交評論