superwei

          導(dǎo)航

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統(tǒng)計(jì)

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          COBOL語法和文法(2)

           

          ACCEPT
              從鍵盤或其他輸入設(shè)備讀取數(shù)據(jù)。
              ACCEPT A FROM DEV.    從DEV讀取數(shù)據(jù)到A,也可以省略FROM DEV,表示從鍵盤讀取。
              ACCEPT A FROM DATE/DAY/DAY-OF-WEEK/TIME.讀取日期,表示為6個(gè)字符,如990909(1999年9月9日)。
              讀取當(dāng)前日期在年度(前2位)中為第幾天(后3位),表示為6個(gè)字符,如1994年4月1日表示為94091。
              讀取當(dāng)前星期幾,表示為1位字符。1表示星期一,7表示星期日。
              讀取當(dāng)前時(shí)間,表示為8位字符。精確到毫秒。如下午2:41表示為14410000。

          DISPLAY
              將數(shù)據(jù)寫入輸出設(shè)備。如監(jiān)視器(monite),系統(tǒng)輸出流和操作員控制臺(tái)(console)。
              DISPLAY AAAAA BBBBB [UPON DEV] [WITH NO ADVANCING]
              如果使用UPON選項(xiàng),dev要與special-names段中的硬件名相關(guān)聯(lián)。
              如果使用no advancing選項(xiàng),則輸出最后一個(gè)字符后輸出設(shè)備仍然保持原位,使下一條display語句還在該位置顯示。否則可能到下一行顯示。

          INITIALIZE
              初始化數(shù)據(jù),數(shù)字和數(shù)字編輯數(shù)據(jù)項(xiàng)初始化為0,其他初始化為空格。

          INSPECT TALLYING
              計(jì)算項(xiàng)目中該字符串出現(xiàn)的次數(shù)。
              INSPECT AA TALLYING BB FOR ALL “EE”.  從AA中查找有多少個(gè)EE,將個(gè)數(shù)寫入BB。
              INSPECT AA TALLYING BB FOR CHARACTERS BEFORE “E”.  從AA中查找E前面有多少個(gè)字符,將個(gè)數(shù)寫入BB。
              INSPECT AA TALLYING BB FOR CHARACTERS AFTER “C” BEFORE “E”.  從AA中查找C后面E前面有多少個(gè)字符,將個(gè)數(shù)寫入BB。
              INSPECT AA TALLYING BB FOR LEADING “E”.  從AA中第一個(gè)字符開始查找有多少個(gè)E,如果沒有就結(jié)束操作,有就將個(gè)數(shù)寫入BB,直至沒有。
              INSPECT AA TALLYING BB FOR LEADING “E” AFTER “C”.  從AA中C后面開始查找有多少個(gè)E,如果沒有就結(jié)束操作,有就將個(gè)數(shù)寫入BB,直至沒有。
          組合例子:
              77 CS PIC X(9) VALUE "REELWHEEL".
              77 COUNT-0.
              77 COUNT-1.
              77 COUNT-2.
              MOVE 0 TO COUNT-0,COUNT-1,COUNT-2.
              INSPECT CS TALLYING
                  COUNT-0 FOR ALL "E",
                  COUNT-1 FOR LEADING "W" AFTER "L",
                  COUNT-2 FOR CHARACTERS.
              程序首先判斷的是字符"R",執(zhí)行COUNT-0 FOR ALL "E",因?yàn)榈谝粋€(gè)字符不是"E",所以程序轉(zhuǎn)而執(zhí)行COUNT-1 FOR LEADING "W" AFTER "L",也不符合要求,
              于是程序執(zhí)行COUNT-2 FOR CHARACTERS,COUNT-2 =1。然后字符串往下一位,判斷"E",執(zhí)行COUNT-0 FOR ALL "E",符合要求,則COUNT-0=1。
              有了滿足條件的判斷,則余下的判斷不再執(zhí)行,字符串再往下一位,判斷"E",則COUNT-0=2。接著判斷"L",則COUNT-2 =2。以此類推,最后結(jié)果為COUNT-0=4,
              COUNT-1=1,COUNT-2=4。
          INSPECT REPLACING
              用另一個(gè)字符串替換這個(gè)字符串。
              還用上面的例子。
              INSPECT CS REPLACING ALL "E" BY "Y".  結(jié)果"RYYLWHYYL"
              INSPECT CS REPLACING CHARACTERS BY "Z" AFTER  "L".  結(jié)果"REELZZZZZ"
              INSPECT CS REPLACING LEADING "E" BY "Y".  結(jié)果不變
              INSPECT CS REPLACING LEADING "E" BY "Z" AFTER  "H".  結(jié)果"REELWHZZL"
              INSPECT CS REPLACING FIRST "E" BY "I".  結(jié)果"RIELWHEEL"
              INSPECT CS REPLACING FIRST "EE" BY "00",ALL "WH" BY "TH",CHARACTERS BY SPACE.  結(jié)果" 00 TH   "
          INSPECT CONVERTING
              就是INSPECT REPLACING的縮寫。
              INSPECT CS CONVERTING "EE" TO "00". 也可以加上BEFORE,AFTER。

          STRING
              將幾個(gè)字符串合并成一個(gè)字符串。
              STRING A DELIMITED BY SPACE," !" DELIMITED BY SIZE INTO C.假設(shè)A中的內(nèi)容是"HELLO",則結(jié)果是"HELLO !".
              DELIMITED BY SPACE意思是碰到空格,或到A的結(jié)尾或C的結(jié)尾,則合并A字符串結(jié)束。
              DELIMITED BY SIZE意思是到" !"的結(jié)尾或C的結(jié)尾,則合并" !"字符串結(jié)束。
              STRING A INTO B POINTER C ON OVERFLOW PROC1 NOT ON OVERFLOW  PROC2.
              將A字符串復(fù)制到B中由C開始的地址處。如果C小于1或大于B的長(zhǎng)度,或A的長(zhǎng)度大于B中C到結(jié)尾處的長(zhǎng)度,則發(fā)生
              OVERFLOW溢出,執(zhí)行PROC1。

          UNSTRING
              將一個(gè)字符串中的字符按照要求放入多個(gè)變量中。
              UNSTRING AAA [DELIMITED BY [ALL] B [OR [ALL] C] ...] INTO { C [DELIMITER IN D] [COUNT IN E] } ...[WITH POINTER F] [TALLYING IN G] [ON OVERFLOW PROC1] [NOT ON OVERFLOW PROC2] [END-UNSTRING] 
              將AAA中的字符放入C,如果還有其他變量,如C2,則等C放滿后放入C2。
              DELIMITED BY和STRING中的作用一樣。表示將AAA中到B為止的字符取出。如果有OR,則表示到B或C字符為止的字符取出。如果有ALL,則如果幾個(gè)相同的B在一起,則認(rèn)為是一個(gè)B。
              DELIMITER IN 將B放入D,知道是哪個(gè)字符為分隔符。
              COUNT IN 實(shí)際復(fù)制到C中的字符數(shù)放入E中。
              WITH POINTER 和STRIGN中一樣。
              TALLYING IN 計(jì)算有幾個(gè)接受項(xiàng)。訪問一個(gè)新的接受項(xiàng),G值加1。
          例子:
              03 CITY PIC X(10).
              O3 ZIP  PIC X(10).
              77 TEST PIC X(20).
              MOVE "NEW YORK,NY 10017" TO TEST.
              UNSTRING TEST DELIMITED BY "," INTO CITY,ZIP.
              執(zhí)行結(jié)果CITY值是NEW YORK.ZIP的值是NY 10017。

          邏輯和控制語句
              IF (A [NOT] > B) 等價(jià)于 IF (A [NOT] GREATER THAN B)
              IF (A [NOT] < B) 等價(jià)于 IF (A [NOT] LESS THAN B)
              IF (A [NOT] = B) 等價(jià)于 IF (A [NOT] EQUAL TO B)
              IF (A >= B) 等價(jià)于 IF (A GREATER THAN OR EQUAL TO B)
              IF (A <= B) 等價(jià)于 IF (A LESS THAN OR EQUAL TO B)

              IF A IS [NOT] NUMERIC    數(shù)字和可選符號(hào)
              IF A IS [NOT] ALPHABETIC A~Z,a~z字符和空格
              IF A IS [NOT] ALPHABETIC-LOWER a~z字符和空格
              IF A IS [NOT] ALPHABETIC-UPPER A~Z字符和空格
              IF A IS [NOT] CLASS-NAME       SPECIAL-NAMES定義的字符集
              例如:SPECIAL-NAMES.
                        CLASS MYDEFINE IS "12345+ABCDE-".

              判斷變量是否定義了數(shù)值。這個(gè)變量是88層的,且要與一個(gè)數(shù)據(jù)項(xiàng)關(guān)聯(lián)。
              03 STATE PIC XX.
              88 CON VALUES ARE "A","B","C".
              IF CON ...

              判斷廠家定義運(yùn)行開關(guān)的開/關(guān)狀態(tài)。
              SPECIAL-NAMES.
                  SWITCH-A ON STATUS IS A-ON ,OFF STATUS IS A-OFF.
              IF A-ON...
              若開關(guān)在開位置,則IF A-ON返回TRUE。

              IF A IS [NOT] POSITIVE  判斷是否大于0
              IF A IS [NOT] NEGATIVE  判斷是否小于0
              IF A IS [NOT] ZERO      判斷是否等于0

              COBOL支持NOT ,AND ,OR 操作。

          PERFORM
              過程調(diào)用,但是不傳遞參數(shù)。
            PERFORM PROC1 [THROUGH PROC2] 
              執(zhí)行完P(guān)ROC1再執(zhí)行PROC2.沒有THROUGH(THRU)就只執(zhí)行PROC1.
            PERFORM PROC1 [THRU PROC2] N TIMES
              執(zhí)行PROC1[或者還有PROC2]N次。
            PERFORM PROC1 [THRU PROC2] [WITH TEST BEFORE/AFTER] UNTIL A NOT EUQAL 0.
              執(zhí)行PROC1[或者還有PROC2]直到A不等于0。WITH TEST BEFORE/AFTER指定在第一次執(zhí)行之前還是之后判斷條件。默認(rèn)是BEFORE,執(zhí)行之前判斷。
            PERFORM PROC1 [THRU PROC2] [WITH TEST BEFORE/AFTER] VARYING A FROM B BY C UNTIL CONDITION1 [AFTER D FROM E BY F UNTIL CONDITION2].
              相當(dāng)于FOR循環(huán),將A的值從B開始,以C為單位遞增,直到滿足CONDITION1。AFTER語句是一個(gè)嵌套的FOR 循環(huán)。VARYING是外循環(huán),AFTER是內(nèi)循環(huán)。A,B可以是索引。

              過程也可以直接寫入PERFORM中。但是THROUGH就不好用了。語法如下 :
            PERFORM 過程語句 END-PERFORM.
            PERFORM N TIMES 過程語句 END-PERFORM.
            PERFORM [WITH TEST BEFORE/AFTER] UNTIL CONDITION 過程語句 END-PERFORM.
            PERFORM [WITH TEST BEFORE/AFTER] VARYING A FROM B BY C UNTIL CONDITION1 過程語句 END-PERFORM.

          IF語句
            IF CONDITION THEN STATEMENTS1/NEXT SENTENCE ELSE STATEMENTS2 END-IF/NEXT SENTENCE/ENDIF
              NEXT SENTENCE將跳出IF操作語句執(zhí)行下一條語句。
              IF語句中不要使用.句號(hào)。.句號(hào)將結(jié)束所有IF語句。要結(jié)束一個(gè)嵌套的IF語句,可以使用END-IF或者NEXT SENTENCE.如
              IF A IF B END-IF ELSE C END-IF.或者
              IF A IF B ELSE NEXT SENTENCE ELSE C END-IF.

          EVALUATE
              相當(dāng)于SWITCH CASE語句。
              EVALUATE A
                  WHEN B ...
                  WHEN 0 THRU 100 ...(FROM 0 TO 100)
                  WHEN OTHER ...
              [END-EVALUATE]
              首先得到A的結(jié)果,和WHEN語句的參數(shù)比較,如果和B相等,就執(zhí)行B后的操作,執(zhí)行完了不再執(zhí)行后面的WHEN語句。如果不等就執(zhí)行下一條WHEN語句。如果沒有相等的就執(zhí)行WHEN OTHER語句。
              EVALUATE A ALSO B
                  WHEN C ALSO D ...
                  WHEN E ALSO F ...
                  WHEN OTHER ...
              對(duì)于有多個(gè)判斷條件的,要多個(gè)條件同時(shí)滿足。如上要C=A同時(shí)D=B,才執(zhí)行WHEN語句。

          CONTINUE
              繼續(xù)執(zhí)行下面的程序。

          GO TO
              GO TO PROC1 [DEPENDING ON N] DEPENDING ON N將跳轉(zhuǎn)到清單中的第N個(gè)PROC.

          EXIT
              一般為最后一句話。

          STOP
              STOP RUN  結(jié)束程序。

          ALTER
              ALTER PROC1 TO PROC2. 不懂什么意思,反正已經(jīng)從標(biāo)準(zhǔn)中廢除了這個(gè)語句。

          ENTER
              使其他編程語言中的語句可以放進(jìn)當(dāng)前源程序中。
              ENTER LANGUAGE-NAME [ROUTINE-NAME]
              LANGUAGE 是廠家指定可以輸入COBOL的任何語言,這個(gè)語句后面是其他編程語言的語句,然后要用ENTERCOBOL表示返回COBOL語言。
              如果無法將其他語言的程序直接放入,可以用ROUTINE-NAME引用其他語言編寫的程序。

          posted on 2005-10-31 11:03 小辭猬 閱讀(670) 評(píng)論(0)  編輯  收藏 所屬分類: COBOL


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 富宁县| 临沭县| 黑龙江省| 广河县| 名山县| 苍溪县| 龙井市| 琼海市| 鄂伦春自治旗| 大田县| 疏勒县| 隆林| 乌兰察布市| 宣汉县| 和田县| 彰化县| 赤峰市| 金华市| 赞皇县| 竹北市| 府谷县| 崇仁县| 平陆县| 清苑县| 嘉禾县| 桦南县| 乌鲁木齐市| 海丰县| 新巴尔虎右旗| 虎林市| 澄城县| 淮安市| 梓潼县| 博乐市| 武城县| 滕州市| 屏山县| 瓮安县| 西乌珠穆沁旗| 大余县| 城口县|