【正文】
(1)格式1用于保存和恢復(fù)索引。01 TABLE. 03 A OCCURS 5 INDEXED BY A1, A2. 05 B OCCURS 5 INDEXED BY B1, B2. 07 C PIC 99 OCCURS 8 INDEXED BY C1, C2. A(A1), B(A1, B2) , C(A1, B2, C2)(5),需要另外定義一種特殊的數(shù)據(jù)項叫索引數(shù)據(jù)項,用來專門存儲索引的值。01 TABLE.03 A PIC X(2) OCCURS 5 INDEXED BY K. (1)索引專門用于表元素的引用,不需要在其它地方進(jìn)行數(shù)據(jù)描述。2.用OCCURS從句和REDEFINES從句給各個表元素賦初值。三.表格的初始化1.對整個表格賦初值。如果是二維表,在括弧中要用兩個下標(biāo)分別表示此元素在每一維中的位置。(5)只有當(dāng)OCCURS所說明的數(shù)據(jù)是基本項時,才能在該數(shù)據(jù)項的描述中使用PIC從句。)(3)如果用OCCURS來描述一個基本項,則重復(fù)出現(xiàn)的是這個基本項。4. 有關(guān)說明(1)OCCURS后面只能為正整數(shù)。dataname2應(yīng)為整數(shù),確定每次引用表格時數(shù)據(jù)項的實際個數(shù),取值為integer1和integer2之間。1.定長表 OCCURS integer1 TIMESOCCURS從句生成定長數(shù)據(jù)項表格,數(shù)據(jù)項個數(shù)就是指定的個數(shù),引用表格的下標(biāo)取值為1到integer1之間。十一.多分支選擇語句(EVALUATE語句) EVALUATE語句根據(jù)一列表達(dá)式的值,從一大組語句中選擇一組要執(zhí)行的語句,相當(dāng)于CASE語句。 PERFORM 過程名1 [ THRU 過程名2 ] UNTIL 條件注意:在執(zhí)行PERFORM語句時,先判斷指定的條件是否為真,若為假則執(zhí)行所指定的語句序列,如果一開始條件就為真,則一次也不執(zhí)行。它相當(dāng)于子程序調(diào)用,只是不傳遞參數(shù)。標(biāo)識符 IS [ NOT ] NUMERIC ALPHABETIC ALPHABETICLOWER ALPHABETICUPPER Classname ENVIRONMENT DIVISION.CONFIGURATION SECTION. SPECIALNAMES.CLASS REALNUMBER IS ’0123456789+*/’.…… PROCEDURE DIVISION. IF A IS REALNUMBER … 一個基本項只能根據(jù)某些條件取預(yù)定的值,或只能在一個預(yù)定的范圍中取值,則這個變量稱條件變量。(等同于用一系列ALL選項。 例:77 CS PIC X(9) VALUE ‘REELWHEEL’. 77 COUNT0 PIC 9(1). 77 COUNT1 PIC 9(1). 77 COUNT2 PIC 9(1). MOVE 0 TO COUNT0,COUNT1,COUNT2. INSPECT CS TALLYING COUNT0 FOR ALL ‘E’, COUNT1 FOR LEADING ‘W’ AFTER ‘L’ COUNT2 FOR CHARACTERS. (COUNT0=4,COUNT1=1,COUNT2=4)2.INSPECT REPLACING格式,用指定的字符代替另一些指定的字符。 INSPECT A TALLYING N FOR ALL ’*’, ALL ’,’AFTER ’T’( N = 7 ) AFTER設(shè)置開始比較的點,若沒發(fā)現(xiàn)指定的開始字符,則不進(jìn)行比較。對TALLYING后的變量要由使用者負(fù)責(zé)初始化到適當(dāng)數(shù)值,不能自動初始化到零。 如果發(fā)送項的長度小于接收項的總長度或遇到分隔字符串使UNSTRING語句結(jié)束,則接收項中沒有復(fù)制到的字符位置保持不變。 UNSTRING A DELIMITED BY ’T’ INTO B COUNT IN W.3.DELIMITER短語,定界符存儲短語。MOVE 3 TO TSTRING A, B, C DELIMITED BY SIZE INTO D POINTER T.(溢出短語)STRING A, B, C DELIMITED BY SIZE INTO D ON OVERFLOW DISPLAY ‘OVERFLOW’ NOT ON OVERFLOW DISPLAY ‘NOT OVERFLOW’ENDSTRING.注:發(fā)送項必須為USAGE DISPLAY數(shù)據(jù)項;接收項也應(yīng)為USAGE DISPLAY數(shù)據(jù)項,不能是編輯數(shù)據(jù)項或包括JUSTIFIED從句的數(shù)據(jù)項。五.轉(zhuǎn)移語句(GOTO語句)GOTO語句是一個無條件轉(zhuǎn)移語句,程序執(zhí)行到此語句,無條件轉(zhuǎn)到指定的節(jié)或段去。 DISPLAY 標(biāo)識符 [ UPON 助憶名 ] [ WITH NO ADVANCING ]**助憶名應(yīng)與環(huán)境部SPECIALNAMES段中的硬件名相關(guān)聯(lián)。有兩種格式:一種是將輸入設(shè)備中的少量數(shù)據(jù)移到程序中,通常通過鍵盤或控制臺;一種是使程序可以取得系統(tǒng)日期和時間。01 A. 01 B. 03 A1 PIC 999. 03 B1 PIC X(6). 03 A2 PIC XX. 03 B2. 03 A3 PIC 999. 05 B21 PIC X(6). 03 A4 PIC A(5). 05 B22 PIC A(2). 03 A5 PIC X(3). 03 B3 PIC X(2).5.對應(yīng)傳送(CORRESPONDING子句) 對應(yīng)傳送即把一個組合項中若干項傳送給另一個組合項中同名的項。(2)接收項為字符數(shù)據(jù)或字符編輯數(shù)據(jù),則發(fā)送項目可以用任何類別。2.編輯傳送。) 02 A. 02 B.03 A1 PIC 9(3). 03 A1 PIC 99V99.03 A2 PIC 99V99. 03 A2 PIC 9V9.03 A3 PIC 9V9. 03 A3 PIC 99V99.ADD CORR A TO B.三.傳送語句(MOVE語句)MOVE語句用來實現(xiàn)數(shù)據(jù)的傳送,將一個數(shù)據(jù)從一個內(nèi)存域送到另一個內(nèi)存域。) 算術(shù)運算語句中的ADD和SUBTRACT語句除了可以用來使兩個或多個單個的數(shù)據(jù)項進(jìn)行運算外,還可以用來使兩個組合項中的對應(yīng)項進(jìn)行加,減運算。 COMPUTE T = (A + B) * C / D COMPUTE T = X ** 2 COMPUTE T = 1 / (1 / A + 1 / B) 運算次序:( )-> 單邊運算符+、― ->**?。荆ⅲ荆?、-例1:IDENTIFICATION DIVISION.PROGRAMID EX1.ENVIRONMENT DIVISION.DATA DIVISION.WORKINGSTORAGE SECTION.77 X PIC 9999.77 A PIC 9977 B PIC 99.77 C PIC 99.PROCEDURE DIVISION. ACCEPT A. ACCEPT B. ACCEPT C. COMPUTE X = (A + B) / C. DISPLAY X. STOP RUN.6.四舍五入處理(ROUNDER子句) 接收項目后邊的ROUNDER短語表示運算產(chǎn)生的數(shù)值先進(jìn)行四舍五入處理再存入接收項目中。引用段名時可以用所屬的節(jié)限定如下:GO TO PARA1 IN SECTION22.例1:PROCEDURE DIVISION. (過程部頭)A SECTION. (A節(jié))A1. MOVE 1 TO I. (A1段) MOVE 2 TO J.A2. ADD I TO J. (A2段)B SECTION. (B節(jié))…例2:PROCEDURE DIVISION.DISPLAY ’HOW DO YOU DO’STOP RUN.例3:MOVE 100 TO X.ADD Y TO Z.IF X 100 GO TO FINISH.二.算術(shù)運算語句1. 加法語句(ADD 語句)ADD A TO B A + B → BADD 15 TO C 15 + C → CADD A, B TO C A + B + C → CADD 15, 25 TO C 15 + 25 + C → CADD A, B GIVING C A + B → CADD 15, 25 GIVING C 15 + 25 → CADD A, B TO C, D A + B + C → C, A + B + D → D2. 減法語句(SUBTRACT語句)SUBTRACT B FROM A A – B → A SUBTRACT B, C FROM A A – B –C → A SUBTRACT B, C FROM A, T A – B –C → A, T – B –C → T SUBTRACT B, C FROM A GIVING X A – B –C → X3.乘法語句(MULTIPLY 語句) MULTIPLY A BY B A * B → B MULTIPLY A BY B GIVING C A * B → C MULTIPLY A BY B, C A * B → B, A * C → C4.除法語句(DIVIDE語句) DIVIDE A INTO B B / A → B DIVIDE A INTO B GIVING C B / A → C DIVIDE A BY B GIVING C A / B → C DIVIDE A BY B GIVING C REMAINDER D A / B → 商C, 余數(shù)D REMAINDER子句 :取得余數(shù)。段的最后一條語句要用英文句號結(jié)束。(1) 語句(statement):以動詞開頭的單詞、直接數(shù)和分隔符的組合。第四章 過程部一.簡介過程部是COBOL程序的最后一個部分。66 數(shù)據(jù)名1 RENAMES 數(shù)據(jù)名2 [ THRU 數(shù)據(jù)名3 ]01 A. 03 B05 G05 H 03 C05 I05 J03 D03 E 03 F66 K RENAMES G THRU I.66 M RENAMES B THRU C.66 N RENAMES E.(1)層號只能用66,它必須緊跟在01層記錄中最后一個數(shù)據(jù)描述體之后。 01 A1 PIC 99 VALUE 12. 01 A2 PIC X(5) VALUE ’COBOL’. 01 A3 PIC S99V99 VALUE . 01 T. 03 A4 PIC 9(6) VALUE ZERO. 03 A5 PIC X(6) VALUE SPACES. 03 A6 PIC X(6) VALUE ALL ’A’.03 A7 VALUE ’1234’. 組項目被初始化了,則下屬項目不能有05 A71 PIC 99. VALUE子句。標(biāo)準(zhǔn)規(guī)則為與最左邊的字符對齊并在右邊截尾或填充。可參看教科書的25章。OCCURS子句不能用