【正文】
齊,如發(fā)送項長于接收項,則多余位截去,如短于接收項,接收項的空位補零。 字母或字符型數(shù)據(jù)間的傳送,按左端對齊,如發(fā)送項長于接收項,則右端多余位截去,如短于接收項,右端補空格。2.編輯傳送。 發(fā)送項是數(shù)字型數(shù)據(jù),而接收項是編輯數(shù)字型數(shù)據(jù),則先將發(fā)送項中數(shù)據(jù)按接收項的描述要求進行編輯,然后再傳送。3.不同類型數(shù)據(jù)間的傳送規(guī)則(1)接收項為數(shù)字或數(shù)字編輯型,則發(fā)送項為數(shù)字和數(shù)字編輯型或字母數(shù)字型。常量ZERO可直接賦值。(2)接收項為字符數(shù)據(jù)或字符編輯數(shù)據(jù),則發(fā)送項目可以用任何類別。如果發(fā)送項是數(shù)字,則必須是無符號整數(shù)。4.組合項的傳送 MOVE可以一次傳送一個基本項,也可以傳送一組合項或一個記錄。組合項的傳送是將發(fā)送項的內(nèi)容不加轉換地一個字節(jié)一個字節(jié)地順序傳送到接收項。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.對應傳送(CORRESPONDING子句) 對應傳送即把一個組合項中若干項傳送給另一個組合項中同名的項。如果兩個組合項中包括的項不同,則只傳送同名的項。傳送的兩者間必須有成對的同名數(shù)據(jù)項,而且這一對中必須至少有一個項是基本項。四.輸入輸出語句1.接收語句(ACCEPT語句) ACCEPT語句從輸入設備讀取數(shù)據(jù)。有兩種格式:一種是將輸入設備中的少量數(shù)據(jù)移到程序中,通常通過鍵盤或控制臺;一種是使程序可以取得系統(tǒng)日期和時間。 ACCEPT 標識符 [ FROM 助憶名 ]**助憶名應與環(huán)境部SPECIALNAMES段中的硬件名相關聯(lián)。省略時為鍵盤輸入。 ACCEPT 標識符 FROM DATE (6字符)DAY (6字符)DAYOFWEEK (1字符)TIME (8字符)2.顯示語句(DISPLAY語句) DISPLAY語句將數(shù)據(jù)寫入輸出設備。 DISPLAY 標識符 [ UPON 助憶名 ] [ WITH NO ADVANCING ]**助憶名應與環(huán)境部SPECIALNAMES段中的硬件名相關聯(lián)。省略時為操作員控制臺。 如果使用NO ADVANCING短語則傳輸最后一個字符后,輸出設備仍然保持原位,使下一條DISPLAY語句在該位置開始輸出數(shù)據(jù)。否則顯示這個數(shù)據(jù)后輸出設備復位到下一行。五.轉移語句(GOTO語句)GOTO語句是一個無條件轉移語句,程序執(zhí)行到此語句,無條件轉到指定的節(jié)或段去。A1. ADD A TO C ON SIZE ERROR GOTO A2.A2. STOP RUN.六.字符串連接語句(STRING語句)STRING語句從一個或幾個發(fā)送數(shù)據(jù)項收集字符并將數(shù)據(jù)合成一個接收數(shù)據(jù)項。STRING A, B, C TO D1.DELIMITED(定界短語),用來控制各個發(fā)送項的終止位置。STRING A, B, C DELIMITED BY SIZE INTO DSTRING A, B, C DELIMITED BY SPACE INTO D2.POINTER(指針短語),用來指定開始復制的具體字符位置。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ù)項;接收項也應為USAGE DISPLAY數(shù)據(jù)項,不能是編輯數(shù)據(jù)項或包括JUSTIFIED從句的數(shù)據(jù)項。若取得的發(fā)送項的長度小于接收項,則接收項中沒有復制的字符位置保持不變。七.字符串分解語句(UNSTRING語句)UNSTRING語句取一個發(fā)送數(shù)據(jù)項中的字符并將其放進多個接收數(shù)據(jù)項。UNSTRING A INTO B, C, D1.DELIMITED短語UNSTRING A DELIMITED BY SIZE INTO B, CUNSTRING A DELIMITED BY ’T’ INTO B, CUNSTRING A DELIMITED BY ALL ’’ INTO B, CUNSTRING A DELIMITED BY ALL SPACE OR ’. ’ INTO B, C 2.COUNT短語,將已發(fā)送的字符個數(shù)記入用戶定義的記數(shù)器。 UNSTRING A DELIMITED BY ’T’ INTO B COUNT IN W.3.DELIMITER短語,定界符存儲短語。 UNSTRING A DELIMITED BY ’T’ OR ALL ’ ’ OR ’R’ INTO B DELIMITER IN QC DELIMITER IN PD ENDUNSTRING.4.POINTER短語,指定從發(fā)送項某一指定位置開始傳送。MOVE 5 TO TUNSTRING A INTO B WITH POINTER T.5.TALLYING短語,接收項記數(shù)短語,用來記錄實際接收傳送的接收項項數(shù)。UNSTRING A INTO B, C, D TALLYING IN N. (N=3)6.OVERFLOW短語 注:如果發(fā)送項的長度大于接收項的總長度,則填完最后一個接收項時,語句結束并發(fā)生溢出。 如果發(fā)送項的長度小于接收項的總長度或遇到分隔字符串使UNSTRING語句結束,則接收項中沒有復制到的字符位置保持不變。八.檢測語句(INSPECT語句) INSPECT語句檢查數(shù)據(jù)項以計算該項目中某個字符串出現(xiàn)的次數(shù)或用另一個字符串替換該字符串。1.INSPECT TALLYING格式,用來統(tǒng)計滿足某種條件的字符的個數(shù)。(檢查方向由左向右。對TALLYING后的變量要由使用者負責初始化到適當數(shù)值,不能自動初始化到零。) MOVE ’AT**F,***,T’ TO A INSPECT A TALLYING N FOR ALL ’*’ AFTER ’T’ ( N = 5 ) ALL檢查匹配的字符或字符串個數(shù)。 INSPECT A TALLYING N FOR LEADING ’*’ AFTER ’T’ ( N = 2 ) INSPECT A TALLYING N FOR LEADING ’*’ ( N = 0 ) LEADING只計算開頭的匹配,其他都不算匹配。 INSPECT A TALLYING N FOR CHARACTERS AFTER ’T’ ( N = 9 )CHARACTERS計算所有字符,任何字符都算匹配。 INSPECT A TALLYING N FOR ALL ’*’, ALL ’,’AFTER ’T’( N = 7 ) AFTER設置開始比較的點,若沒發(fā)現(xiàn)指定的開始字符,則不進行比較。 INSPECT A TALLYING N FOR ALL ’*’ BEFORE ’,’ ( N = 2 ) BEFORE指定停止比較中斷,若沒發(fā)現(xiàn)指定的字符,則效果如同沒有指定BEFORE. 注意:如果在同一條INSPECT TALLYING 語句中組合CHARACTERS、ALL、LEADING,則檢查一個字符進行,連續(xù)采用每個檢查標準,檢查順序按INSPECT語句中指定的順序。找到匹配后,當前位置移動,比較在次從第一個操作數(shù)開始。即是說,第一個比較成功后,指針移動到下一個字符,再從第一個比較做起。 例: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格式,用指定的字符代替另一些指定的字符。 MOVE ’’ TO A INSPECT A REPLACING ALL ’0’ BY SPACE ALL ’.’ BY ’,’ ALL ’A’ BY ’B’ INSPECT A REPLACING FIRST ’0’ BY SPACE BEFORE ’.’ FIRST短語時,只把第一個出現(xiàn)的字符當作匹配。2. 組合INSPECT TALLYING 和 REPLACING格式 (等于INSPECT語句順序編寫,先用TALLYING選,再用REPLACING選項。) INSPECT A TALLYING N FOR ALL ’L’ REPLACING LEADING ’A’ BY ’E’ AFTER ’L’3. INSPECT CONVERTING格式,是INSPECT REPLACING語句縮寫。(等同于用一系列ALL選項。對象與目標應當長度相同,且對象中字符不能重復。) INSPECT A CONVERTING ’EL’ TO ’AX’ ===〉 INSPECT A REPLACING ALL ‘E’ BY ‘A’,REPLACING ALL ‘L’ BY ‘X’.九.條件語句(IF語句)IF 條件 THEN 語句組1 ELSE 語句組2ENDIF1.關系表達式條件 關系運算符: , , = , = , =,NOT , NOT , NOT = , NOT = , NOT = IF A = ZERO … IF B NOT EQUAL TO 1 … IF ( * C) D … IF NAME NOT = ’WANG’ … IF STU = SPACE … 2.符號條件 符號條件測試算術表達式的代數(shù)值大于,小于或等于0。數(shù)據(jù)名或 IS [ NOT ] POSITIVE算術表達式 NEGATIVE ZEROIF A IS POSITIVE …IF B IS NOT NEGATIVE …IF (A + B) IS ZERO …3.類型條件 類型條件測試數(shù)據(jù)項的類型是否完全由屬于某個類或集合的字符組成。標識符 IS [ NOT ] NUMERIC ALPHABETIC ALPHABETICLOWER ALPHABETICUPPER Classname ENVIRONMENT DIVISION.CONFIGURATION SECTION. SPECIALNAMES.CLASS REALNUMBER IS ’0123456789+*/’.…… PROCEDURE DIVISION. IF A IS REALNUMBER … 一個基本項只能根據(jù)某些條件取預定的值,或只能在一個