<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    superwei

    導航

    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    COBOL語法和文法(2)

     

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

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

    INITIALIZE
        初始化數據,數字和數字編輯數據項初始化為0,其他初始化為空格。

    INSPECT TALLYING
        計算項目中該字符串出現的次數。
        INSPECT AA TALLYING BB FOR ALL “EE”.  從AA中查找有多少個EE,將個數寫入BB。
        INSPECT AA TALLYING BB FOR CHARACTERS BEFORE “E”.  從AA中查找E前面有多少個字符,將個數寫入BB。
        INSPECT AA TALLYING BB FOR CHARACTERS AFTER “C” BEFORE “E”.  從AA中查找C后面E前面有多少個字符,將個數寫入BB。
        INSPECT AA TALLYING BB FOR LEADING “E”.  從AA中第一個字符開始查找有多少個E,如果沒有就結束操作,有就將個數寫入BB,直至沒有。
        INSPECT AA TALLYING BB FOR LEADING “E” AFTER “C”.  從AA中C后面開始查找有多少個E,如果沒有就結束操作,有就將個數寫入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",執行COUNT-0 FOR ALL "E",因為第一個字符不是"E",所以程序轉而執行COUNT-1 FOR LEADING "W" AFTER "L",也不符合要求,
        于是程序執行COUNT-2 FOR CHARACTERS,COUNT-2 =1。然后字符串往下一位,判斷"E",執行COUNT-0 FOR ALL "E",符合要求,則COUNT-0=1。
        有了滿足條件的判斷,則余下的判斷不再執行,字符串再往下一位,判斷"E",則COUNT-0=2。接著判斷"L",則COUNT-2 =2。以此類推,最后結果為COUNT-0=4,
        COUNT-1=1,COUNT-2=4。
    INSPECT REPLACING
        用另一個字符串替換這個字符串。
        還用上面的例子。
        INSPECT CS REPLACING ALL "E" BY "Y".  結果"RYYLWHYYL"
        INSPECT CS REPLACING CHARACTERS BY "Z" AFTER  "L".  結果"REELZZZZZ"
        INSPECT CS REPLACING LEADING "E" BY "Y".  結果不變
        INSPECT CS REPLACING LEADING "E" BY "Z" AFTER  "H".  結果"REELWHZZL"
        INSPECT CS REPLACING FIRST "E" BY "I".  結果"RIELWHEEL"
        INSPECT CS REPLACING FIRST "EE" BY "00",ALL "WH" BY "TH",CHARACTERS BY SPACE.  結果" 00 TH   "
    INSPECT CONVERTING
        就是INSPECT REPLACING的縮寫。
        INSPECT CS CONVERTING "EE" TO "00". 也可以加上BEFORE,AFTER。

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

    UNSTRING
        將一個字符串中的字符按照要求放入多個變量中。
        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,則如果幾個相同的B在一起,則認為是一個B。
        DELIMITER IN 將B放入D,知道是哪個字符為分隔符。
        COUNT IN 實際復制到C中的字符數放入E中。
        WITH POINTER 和STRIGN中一樣。
        TALLYING IN 計算有幾個接受項。訪問一個新的接受項,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.
        執行結果CITY值是NEW YORK.ZIP的值是NY 10017。

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

        IF A IS [NOT] NUMERIC    數字和可選符號
        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-".

        判斷變量是否定義了數值。這個變量是88層的,且要與一個數據項關聯。
        03 STATE PIC XX.
        88 CON VALUES ARE "A","B","C".
        IF CON ...

        判斷廠家定義運行開關的開/關狀態。
        SPECIAL-NAMES.
            SWITCH-A ON STATUS IS A-ON ,OFF STATUS IS A-OFF.
        IF A-ON...
        若開關在開位置,則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
        過程調用,但是不傳遞參數。
      PERFORM PROC1 [THROUGH PROC2] 
        執行完PROC1再執行PROC2.沒有THROUGH(THRU)就只執行PROC1.
      PERFORM PROC1 [THRU PROC2] N TIMES
        執行PROC1[或者還有PROC2]N次。
      PERFORM PROC1 [THRU PROC2] [WITH TEST BEFORE/AFTER] UNTIL A NOT EUQAL 0.
        執行PROC1[或者還有PROC2]直到A不等于0。WITH TEST BEFORE/AFTER指定在第一次執行之前還是之后判斷條件。默認是BEFORE,執行之前判斷。
      PERFORM PROC1 [THRU PROC2] [WITH TEST BEFORE/AFTER] VARYING A FROM B BY C UNTIL CONDITION1 [AFTER D FROM E BY F UNTIL CONDITION2].
        相當于FOR循環,將A的值從B開始,以C為單位遞增,直到滿足CONDITION1。AFTER語句是一個嵌套的FOR 循環。VARYING是外循環,AFTER是內循環。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操作語句執行下一條語句。
        IF語句中不要使用.句號。.句號將結束所有IF語句。要結束一個嵌套的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
        相當于SWITCH CASE語句。
        EVALUATE A
            WHEN B ...
            WHEN 0 THRU 100 ...(FROM 0 TO 100)
            WHEN OTHER ...
        [END-EVALUATE]
        首先得到A的結果,和WHEN語句的參數比較,如果和B相等,就執行B后的操作,執行完了不再執行后面的WHEN語句。如果不等就執行下一條WHEN語句。如果沒有相等的就執行WHEN OTHER語句。
        EVALUATE A ALSO B
            WHEN C ALSO D ...
            WHEN E ALSO F ...
            WHEN OTHER ...
        對于有多個判斷條件的,要多個條件同時滿足。如上要C=A同時D=B,才執行WHEN語句。

    CONTINUE
        繼續執行下面的程序。

    GO TO
        GO TO PROC1 [DEPENDING ON N] DEPENDING ON N將跳轉到清單中的第N個PROC.

    EXIT
        一般為最后一句話。

    STOP
        STOP RUN  結束程序。

    ALTER
        ALTER PROC1 TO PROC2. 不懂什么意思,反正已經從標準中廢除了這個語句。

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

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


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: xvideos亚洲永久网址| 亚洲自偷自偷偷色无码中文| 成年免费a级毛片| 国产免费MV大全视频网站| 国产成人啪精品视频免费网| 亚洲欧美国产精品专区久久| 久久精品国产亚洲av影院| 国产亚洲精品激情都市| 毛片免费在线播放| 在线播放高清国语自产拍免费| 57pao一国产成永久免费| 亚洲色欲色欲www| 国产男女猛烈无遮挡免费视频| 特级做A爰片毛片免费69| 最近免费中文字幕大全| 最近2019中文字幕免费看最新 | 日韩亚洲AV无码一区二区不卡| 国产亚洲自拍一区| 亚洲AV日韩AV天堂一区二区三区 | 亚洲国产免费综合| 手机看片国产免费永久| 久久99热精品免费观看动漫| 污污网站18禁在线永久免费观看| 最近免费中文在线视频| 免费看小12萝裸体视频国产| 国产亚洲精品免费视频播放| 亚洲一区二区三区在线观看精品中文 | 国语成本人片免费av无码| 亚洲精品av无码喷奶水糖心| 国产v亚洲v天堂无码网站| 亚洲第一区香蕉_国产a| 久久精品国产亚洲AV忘忧草18 | 亚洲成a人片在线观看精品| 国产av无码专区亚洲av毛片搜| 任你躁在线精品免费| 免费夜色污私人影院网站电影| 中文字幕无码亚洲欧洲日韩| 免费毛片在线看不用播放器| 美女视频黄的全免费视频| 日本zzzzwww大片免费| 在线观看亚洲成人|