ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>综合激情婷婷,国产+人+亚洲,成人中文视频http://www.aygfsteel.com/superwei/category/4333.htmlzh-cnWed, 28 Feb 2007 07:42:52 GMTWed, 28 Feb 2007 07:42:52 GMT60COBOL 教程 http://www.aygfsteel.com/superwei/articles/17637.htmlž®è¾žçŒ?/dc:creator>ž®è¾žçŒ?/author>Tue, 01 Nov 2005 01:07:00 GMThttp://www.aygfsteel.com/superwei/articles/17637.htmlhttp://www.aygfsteel.com/superwei/comments/17637.htmlhttp://www.aygfsteel.com/superwei/articles/17637.html#Feedback6http://www.aygfsteel.com/superwei/comments/commentRss/17637.htmlhttp://www.aygfsteel.com/superwei/services/trackbacks/17637.html阅读全文

]]>
COBOL½E‹åºæ ¼å¼ http://www.aygfsteel.com/superwei/articles/17510.htmlž®è¾žçŒ?/dc:creator>ž®è¾žçŒ?/author>Mon, 31 Oct 2005 03:04:00 GMThttp://www.aygfsteel.com/superwei/articles/17510.htmlhttp://www.aygfsteel.com/superwei/comments/17510.htmlhttp://www.aygfsteel.com/superwei/articles/17510.html#Feedback0http://www.aygfsteel.com/superwei/comments/commentRss/17510.htmlhttp://www.aygfsteel.com/superwei/services/trackbacks/17510.html     æ¯è¡Œå¼€å¤´æœ‰6个字½W¦çš„序号区。可以输å…?00010åQ?00020½{‰è¡¨½Cø™¡ŒåQŒä¹Ÿå¯ä»¥ä¸è¾“ã€?BR>     åºå·åŒºåŽé¢æ˜¯ä¸€ä¸ªå­—½W¦ï¼ˆ½W?位)的指½Cºç¬¦åŒºï¼Œå¦‚第一行所½Cºã€‚可以用*å’?表示注释åQŒ_表示¾l­è¡ŒåQŒD表示调试ã€?BR>     指示½W¦åŒºåŽé¢æ˜?个字½W¦ï¼ˆ8~11位)的A区。可以放入部åQŒèŠ‚åQŒæ®µæ ‡é¢˜åQŒæ®µåï¼Œå±‚指½Cºç¬¦å’Œå±‚å?1ä¸?7åQ?BR>            关键字DECLARATIVESå’ŒEND DECLARATIVES,½E‹åº¾l“束标题ã€?BR>     A区后面(12位以后)是语句体åQŒç§°ä¸ºB区。过½E‹éƒ¨çš„语句必™åÖM»ŽB区开始。B区宽度通常ä¸?2æˆ?0个字½W¦ã€?BR>            本例æ˜?0个字½W¦ã€?BR>     ½Iø™¡Œçš„æ¯ä¸ªåŒºéƒ½æ˜¯½Iºæ ¼

标识部(2~4行)åQŒPROGRAM-IDŒDµåŒ…含程序名åQŒæ˜¯æ¯ä¸ª½E‹åºéƒ½å¿…™åȝš„。AUTHOR½{‰å…¶ä»–段是可有可无的ã€?BR>          
环境部(5~15行)åQŒæä¾›ä¸Ž½E‹åºå¤–部有关的项目,具体地说åQŒå°±æ˜¯åˆ—出程序所用的文äšg。如果不需要可以省略ã€?BR>          环境部有配置节(6~10è¡Œï¼‰å’Œè¾“å…¥è¾“å‡ø™Š‚åQ?1~15行)ã€?BR>          ½W?行表½Cºç¼–译程序的计算机。如果指定WITH DEBUGGING MODEž®Þq¼–译调试行ã€?BR>          ½W?行表½Cºç¨‹åºè¿è¡Œçš„计算机ã€?BR>          ½W?åQ?0行包含一¾l„指定输出样式。这里是标准输出åQŒå¯ä»¥è‡ªå®šä¹‰ã€?BR>          输入输出节只用于文äšgã€?BR>          ½W?3åˆ?5行表½Cºå¦‚果程序ä‹É用文ä»Óž¼Œåˆ™è¿™ä¸ªæ®µå¯Òޝä¸ªæ–‡ä»¶åŒ…含一个项目ã€?BR>                  æ–‡äšg控制™å¹ç›®çš„æ ¼å¼å–决于æ–?nbsp; 件的描述¾cÕdž‹ã€?BR>          
数据部(16~22行)åQŒæä¾›ç¨‹åºå˜é‡çš„存放位置åQŒå¯¹ä¸åŒçš„æ•°æ®ç±»åž‹åˆ†æˆä¸åŒçš„节:文äšg数据åQˆFile SectionåQ‰ã€?BR>          静态数据(Working-Storage SectionåQ‰ã€å‚敎ͼˆLinkage SectionåQ‰ã€é€šä¿¡åQˆCommunication SectionåQ‰ã€?BR>          æŠ¥è¡¨åQˆReport SectionåQ‰ã€?BR>    æ–‡äšg节(18~21行)åQŒæ¯ä¸ªæ–‡ä»¶æ˜qîC¸­åŒ…含文äšg所含纪录的定义åQŒæ–‡ä»¶èŠ‚ä¸­çš„æ•°æ®æˆ–ä»Žæ–‡äšgè¯Õd–åQ?BR>          或由写文件的½E‹åºäº§ç”Ÿã€?BR>    ½W?2行表½Cºå·¥ä½œå­˜å‚¨èŠ‚åQŒè¿™èŠ‚åŒ…å«ç¨‹åºæ‰€éœ€çš„äÍ时结果和初始化静态数据的数据ã€?BR>    参数åQˆLinkage SectionåQ‰åŒ…含调用程序传递的数据åQˆå…¶ä»–语­a€ä¸­ç§°ä¸ºå‚敎ͼ‰ã€?BR>    é€šä¿¡åQˆCommunication SectionåQ?处理COBOL½E‹åºå’Œé€šä¿¡è®‘Ö¤‡ä¹‹é—´çš„æ¶ˆæ¯ã€?BR>    æŠ¥è¡¨åQˆReport SectionåQ‰ï¼ŒæŠ¥è¡¨èŠ‚å®žçŽ°COBOL报告¾~–写工具¾pȝ»Ÿæ‰€éœ€çš„æ•°æ®ã€?BR>     ½W?0åQ?1行的PIC是PICTURE的羃写,表示定义数据格式ã€?BR>            X(12)表示12个字½W¦çš„字符ä¸ÔŒ¼Œ9(09)表示9位的整数ã€?BR>可以ž®†åŸºæœ¬é¡¹ç›®ç»„成层‹Æ¡ç»“构,¿UîCØ“¾l„数据项或组ã€?BR>COBOL½E‹åºä¸­çš„æ•°æ®™å¹çš„定义从层号开始,01层是最高层åQ?9层是最低层ã€?BR>          77层项目用于某个组的数据项åQŒå¦‚½E‹åºä¸­çš„临时变量ã€?BR>          66层是为特ŒDŠæ˜q°ç¬¦™å¹ç›®ä¿ç•™çš„,可以更名现有的数据项或组åQŒæˆ–以原定义未允许的方式¾l„合ã€?BR>          88层是对特ŒDŠæ•°æ®é¡¹ç›®æ¡ä»¶åä¿ç•™çš?BR>          如:
          03 STATE PIC XX.
          88 NEW-ENGLAND VALUES ARE "1","2","3","4","5".
          IF NEW-ENGLAND ... then do something
          
˜q‡ç¨‹éƒ¨ï¼ˆ23~30行)åQŒåŒ…含构成程序的˜q‡ç¨‹æ€§è¯­å¥ã€?BR>          带DECLARATIVES的过½E‹éƒ¨ã€‚有些程序用ç‰ÒŽ®Šçš„USE语句表示遇到ç‰Òޮп¡äšg时要执行的过½E‹ï¼Œ
                 如发生I/O错误时ã€?BR>                 USE语句¾l„åˆåœ¨ä¸€èµøP¼Œæ”‘Öœ¨˜q‡ç¨‹éƒ¨å¼€å¤ß_¼Œç”±å…³é”®å­—DECLARATIVESå’ŒEND DECLARATIVES限定ã€?BR>          ½W?4行相当于定义了一个名字叫ACAB030100-PROCåQˆï¼‰çš„函数ã€?BR>          ½W?5åQ?9行定义了标志åQŒå¯ä»¥ç”¨GO TO 语句跌™{到这个地方,执行下面的语句ã€?BR>          ½W?6行在屏幕上打华ͼŒç›¸å½“于printf("ACAB030100-START");
          ½W?7行是调用ACAB030100-PROCåQˆï¼‰å‡½æ•°ã€?BR>          
cobol½E‹åºçš„要求:必须以英文句å?¾l“束部标题、节标题、段名、项目和语句ã€?BR>         句号为小数点æ—Óž¼Œä¸¤è¾¹éƒ½è¦æœ‰æ•°å­—ã€?BR>

]]>
COBOL语法和文æ³?2)http://www.aygfsteel.com/superwei/articles/17509.htmlž®è¾žçŒ?/dc:creator>ž®è¾žçŒ?/author>Mon, 31 Oct 2005 03:03:00 GMThttp://www.aygfsteel.com/superwei/articles/17509.htmlhttp://www.aygfsteel.com/superwei/comments/17509.htmlhttp://www.aygfsteel.com/superwei/articles/17509.html#Feedback0http://www.aygfsteel.com/superwei/comments/commentRss/17509.htmlhttp://www.aygfsteel.com/superwei/services/trackbacks/17509.html 

ACCEPT
    从键盘或其他输入讑֤‡è¯Õd–数据ã€?BR>    ACCEPT A FROM DEV.    从DEVè¯Õd–数据到AåQŒä¹Ÿå¯ä»¥çœç•¥FROM DEVåQŒè¡¨½CÞZ»Žé”®ç›˜è¯Õd–ã€?BR>    ACCEPT A FROM DATE/DAY/DAY-OF-WEEK/TIME.è¯Õd–日期åQŒè¡¨½CÞZØ“6个字½W¦ï¼Œå¦?90909åQ?999òq?æœ?日)ã€?BR>    è¯Õd–当前日期在年度(å‰?ä½ï¼‰ä¸­äØ“½W¬å‡ å¤©ï¼ˆå?位)åQŒè¡¨½CÞZØ“6个字½W¦ï¼Œå¦?994òq?æœ?日表½CÞZØ“94091ã€?BR>    è¯Õd–当前星期几,表示ä¸?位字½W¦ã€?表示星期一åQ?表示星期日ã€?BR>    è¯Õd–当前旉™—´åQŒè¡¨½CÞZØ“8位字½W¦ã€‚ç²¾¼‹®åˆ°æ¯«ç§’。如下午2åQ?1表示ä¸?4410000ã€?/P>

DISPLAY
    ž®†æ•°æ®å†™å…¥è¾“凸™®¾å¤‡ã€‚如监视器(moniteåQ‰ï¼Œ¾pȝ»Ÿè¾“出‹¹å’Œæ“ä½œå‘˜æŽ§åˆ¶å°åQˆconsoleåQ‰ã€?BR>    DISPLAY AAAAA BBBBB [UPON DEV] [WITH NO ADVANCING]
    如果使用UPON选项åQŒdev要与special-namesŒDµä¸­çš„硬件名相关联ã€?BR>    如果使用no advancing选项åQŒåˆ™è¾“出最后一个字½W¦åŽè¾“出讑֤‡ä»ç„¶ä¿æŒåŽŸä½åQŒä‹É下一条display语句˜q˜åœ¨è¯¥ä½¾|®æ˜¾½Cºã€‚否则可能到下一行显½Cºã€?/P>

INITIALIZE
    åˆå§‹åŒ–æ•°æ®ï¼Œæ•°å­—å’Œæ•°å­—ç¼–è¾‘æ•°æ®é¡¹åˆå§‹åŒ–äØ“0åQŒå…¶ä»–初始化为空根{€?/P>

INSPECT TALLYING
    计算™å¹ç›®ä¸­è¯¥å­—符串出现的‹Æ¡æ•°ã€?BR>    INSPECT AA TALLYING BB FOR ALL “EEâ€?  从AA中查找有多少个EEåQŒå°†ä¸ªæ•°å†™å…¥BBã€?BR>    INSPECT AA TALLYING BB FOR CHARACTERS BEFORE “Eâ€?  从AA中查找E前面有多ž®‘个字符åQŒå°†ä¸ªæ•°å†™å…¥BBã€?BR>    INSPECT AA TALLYING BB FOR CHARACTERS AFTER “Câ€?BEFORE “Eâ€?  从AA中查找C后面E前面有多ž®‘个字符åQŒå°†ä¸ªæ•°å†™å…¥BBã€?BR>    INSPECT AA TALLYING BB FOR LEADING “Eâ€?  从AA中第一个字½W¦å¼€å§‹æŸ¥æ‰¾æœ‰å¤šå°‘个EåQŒå¦‚果没有就¾l“束操作åQŒæœ‰ž®±å°†ä¸ªæ•°å†™å…¥BBåQŒç›´è‡Ïx²¡æœ‰ã€?BR>    INSPECT AA TALLYING BB FOR LEADING “Eâ€?AFTER “Câ€?  从AA中C后面开始查找有多少个EåQŒå¦‚果没有就¾l“束操作åQŒæœ‰ž®±å°†ä¸ªæ•°å†™å…¥BBåQŒç›´è‡Ïx²¡æœ‰ã€?BR>¾l„合例子åQ?BR>    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.
    ½E‹åºé¦–先判断的是字符"R",执行COUNT-0 FOR ALL "E"åQŒå› ä¸ºç¬¬ä¸€ä¸ªå­—½W¦ä¸æ˜?E"åQŒæ‰€ä»¥ç¨‹åºè{而执行COUNT-1 FOR LEADING "W" AFTER "L"åQŒä¹Ÿä¸ç¬¦åˆè¦æ±‚,
    于是½E‹åºæ‰§è¡ŒCOUNT-2 FOR CHARACTERSåQŒCOUNT-2 =1。然后字½W¦ä¸²å¾€ä¸‹ä¸€ä½ï¼Œåˆ¤æ–­"E",执行COUNT-0 FOR ALL "E"åQŒç¬¦åˆè¦æ±‚,则COUNT-0=1ã€?BR>    有了满èƒö条äšg的判断,则余下的判断不再执行åQŒå­—½W¦ä¸²å†å¾€ä¸‹ä¸€ä½ï¼Œåˆ¤æ–­"E"åQŒåˆ™COUNT-0=2。接着判断"L",则COUNT-2 =2ã€‚ä»¥æ­¤ç±»æŽ¨ï¼Œæœ€åŽç»“æžœäØ“COUNT-0=4åQ?BR>    COUNT-1=1åQŒCOUNT-2=4ã€?BR>INSPECT REPLACING
    用另一个字½W¦ä¸²æ›¿æ¢˜q™ä¸ªå­—符丌Ӏ?BR>    ˜q˜ç”¨ä¸Šé¢çš„例子ã€?BR>    INSPECT CS REPLACING ALL "E" BY "Y".  ¾l“æžœ"RYYLWHYYL"
    INSPECT CS REPLACING CHARACTERS BY "Z" AFTER  "L".  ¾l“æžœ"REELZZZZZ"
    INSPECT CS REPLACING LEADING "E" BY "Y".  ¾l“果不变
    INSPECT CS REPLACING LEADING "E" BY "Z" AFTER  "H".  ¾l“æžœ"REELWHZZL"
    INSPECT CS REPLACING FIRST "E" BY "I".  ¾l“æžœ"RIELWHEEL"
    INSPECT CS REPLACING FIRST "EE" BY "00",ALL "WH" BY "TH",CHARACTERS BY SPACE.  ¾l“æžœ" 00 TH   "
INSPECT CONVERTING
    ž®±æ˜¯INSPECT REPLACING的羃写ã€?BR>    INSPECT CS CONVERTING "EE" TO "00". 也可以加上BEFOREåQŒAFTERã€?/P>

STRING
    ž®†å‡ ä¸ªå­—½W¦ä¸²åˆåƈ成一个字½W¦ä¸²ã€?BR>    STRING A DELIMITED BY SPACEåQ? åQ? DELIMITED BY SIZE INTO C.假设A中的内容æ˜?HELLO",则结果是"HELLO !".
    DELIMITED BY SPACE意思是¼„°åˆ°½Iºæ ¼åQŒæˆ–到A的结ž®¾æˆ–C的结ž®¾ï¼Œåˆ™åˆòq¶A字符串结束ã€?BR>    DELIMITED BY SIZE意思是åˆ? åQ?的结ž®¾æˆ–C的结ž®¾ï¼Œåˆ™åˆòq? åQ?字符串结束ã€?BR>    STRING A INTO B POINTER C ON OVERFLOW PROC1 NOT ON OVERFLOW  PROC2.
    ž®†A字符串复制到B中由C开始的地址处。如果Cž®äºŽ1或大于B的长度,或A的长度大于B中C到结ž®‘Ö¤„的长度,则发ç”?BR>    OVERFLOW溢出åQŒæ‰§è¡ŒPROC1ã€?/P>

UNSTRING
    ž®†ä¸€ä¸ªå­—½W¦ä¸²ä¸­çš„字符按照要求攑օ¥å¤šä¸ªå˜é‡ä¸­ã€?BR>    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åQŒå¦‚果还有其他变量,如C2åQŒåˆ™½{‰C放满后放入C2ã€?BR>    DELIMITED BYå’ŒSTRING中的作用一栗÷€‚表½Cºå°†AAA中到B为止的字½W¦å–出。如果有ORåQŒåˆ™è¡¨ç¤ºåˆ°B或C字符为止的字½W¦å–出。如果有ALLåQŒåˆ™å¦‚果几个相同的Båœ¨ä¸€èµøP¼Œåˆ™è®¤ä¸ºæ˜¯ä¸€ä¸ªBã€?BR>    DELIMITER IN ž®†B攑օ¥DåQŒçŸ¥é“是哪个字符为分隔符ã€?BR>    COUNT IN 实际复制到C中的字符数放入E中ã€?BR>    WITH POINTER å’ŒSTRIGN中一栗÷€?BR>    TALLYING IN 计算有几个接受项。访问一个新的接受项åQŒG值加1ã€?BR>例子åQ?BR>    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.
    执行¾l“æžœCITY值是NEW YORK.ZIP的值是NY 10017ã€?/P>

逻辑和控制语å?BR>    IF (A [NOT] > B) ½{‰ä­häº?IF (A [NOT] GREATER THAN B)
    IF (A [NOT] < B) ½{‰ä­häº?IF (A [NOT] LESS THAN B)
    IF (A [NOT] = B) ½{‰ä­häº?IF (A [NOT] EQUAL TO B)
    IF (A >= B) ½{‰ä­häº?IF (A GREATER THAN OR EQUAL TO B)
    IF (A <= B) ½{‰ä­häº?IF (A LESS THAN OR EQUAL TO B)

    IF A IS [NOT] NUMERIC    数字和可选符å?BR>    IF A IS [NOT] ALPHABETIC A~Z,a~z字符和空æ ?BR>    IF A IS [NOT] ALPHABETIC-LOWER a~z字符和空æ ?BR>    IF A IS [NOT] ALPHABETIC-UPPER A~Z字符和空æ ?BR>    IF A IS [NOT] CLASS-NAME       SPECIAL-NAMES定义的字½W¦é›†
    例如åQšSPECIAL-NAMES.
              CLASS MYDEFINE IS "12345+ABCDE-".

    判断变量是否定义了数倹{€‚这个变量是88层的åQŒä¸”要与一个数据项兌™”ã€?BR>    03 STATE PIC XX.
    88 CON VALUES ARE "A","B","C".
    IF CON ...

    判断厂家定义˜qè¡Œå¼€å…³çš„å¼€/关状态ã€?BR>    SPECIAL-NAMES.
        SWITCH-A ON STATUS IS A-ON ,OFF STATUS IS A-OFF.
    IF A-ON...
    若开兛_œ¨å¼€ä½ç½®åQŒåˆ™IF A-ON˜q”回TRUEã€?/P>

    IF A IS [NOT] POSITIVE  判断是否大于0
    IF A IS [NOT] NEGATIVE  判断是否ž®äºŽ0
    IF A IS [NOT] ZERO      判断是否½{‰äºŽ0

    COBOL支持NOT ,AND ,OR 操作ã€?/P>

PERFORM
    ˜q‡ç¨‹è°ƒç”¨åQŒä½†æ˜¯ä¸ä¼ é€’参数ã€?BR>  PERFORM PROC1 [THROUGH PROC2] 
    执行完PROC1再执行PROC2.没有THROUGH(THRU)ž®±åªæ‰§è¡ŒPROC1.
  PERFORM PROC1 [THRU PROC2] N TIMES
    执行PROC1[或者还有PROC2]N‹Æ¡ã€?BR>  PERFORM PROC1 [THRU PROC2] [WITH TEST BEFORE/AFTER] UNTIL A NOT EUQAL 0.
    执行PROC1[或者还有PROC2]直到A不等äº?。WITH TEST BEFORE/AFTER指定在第一‹Æ¡æ‰§è¡Œä¹‹å‰è¿˜æ˜¯ä¹‹åŽåˆ¤æ–­æ¡ä»¶ã€‚默认是BEFOREåQŒæ‰§è¡Œä¹‹å‰åˆ¤æ–­ã€?BR>  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循环åQŒå°†Açš„å€ég»ŽB开始,以C为单位递增åQŒç›´åˆ°æ»¡­‘³CONDITION1。AFTER语句是一个嵌套的FOR 循环。VARYING是外循环åQŒAFTER是内循环。AåQŒB可以是烦引ã€?/P>

    ˜q‡ç¨‹ä¹Ÿå¯ä»¥ç›´æŽ¥å†™å…¥PERFORM中。但是THROUGHž®×ƒ¸å¥½ç”¨äº†ã€‚语法如ä¸?åQ?BR>  PERFORM ˜q‡ç¨‹è¯­å¥ END-PERFORM.
  PERFORM N TIMES ˜q‡ç¨‹è¯­å¥ END-PERFORM.
  PERFORM [WITH TEST BEFORE/AFTER] UNTIL CONDITION ˜q‡ç¨‹è¯­å¥ END-PERFORM.
  PERFORM [WITH TEST BEFORE/AFTER] VARYING A FROM B BY C UNTIL CONDITION1 ˜q‡ç¨‹è¯­å¥ END-PERFORM.

IF语句
  IF CONDITION THEN STATEMENTS1/NEXT SENTENCE ELSE STATEMENTS2 END-IF/NEXT SENTENCE/ENDIF
    NEXT SENTENCEž®†èŸ©å‡ºIF操作语句执行下一条语句ã€?BR>    IF语句中不要ä‹Éç”?句号ã€?句号ž®†ç»“束所有IF语句。要¾l“束一个嵌套的IF语句åQŒå¯ä»¥ä‹É用END-IF或者NEXT SENTENCE.å¦?BR>    IF A IF B END-IF ELSE C END-IF.或è€?BR>    IF A IF B ELSE NEXT SENTENCE ELSE C END-IF.

EVALUATE
    相当于SWITCH CASE语句ã€?BR>    EVALUATE A
        WHEN B ...
        WHEN 0 THRU 100 ...(FROM 0 TO 100)
        WHEN OTHER ...
    [END-EVALUATE]
    首先得到A的结果,和WHEN语句的参数比较,如果和B相等åQŒå°±æ‰§è¡ŒB后的操作åQŒæ‰§è¡Œå®Œäº†ä¸å†æ‰§è¡ŒåŽé¢çš„WHEN语句。如果不½{‰å°±æ‰§è¡Œä¸‹ä¸€æ¡WHEN语句。如果没有相½{‰çš„ž®±æ‰§è¡ŒWHEN OTHER语句ã€?BR>    EVALUATE A ALSO B
        WHEN C ALSO D ...
        WHEN E ALSO F ...
        WHEN OTHER ...
    对于有多个判断条件的åQŒè¦å¤šä¸ªæ¡äšg同时满èƒö。如上要C=A同时D=BåQŒæ‰æ‰§è¡ŒWHEN语句ã€?/P>

CONTINUE
    ¾l§ç®‹æ‰§è¡Œä¸‹é¢çš„程序ã€?/P>

GO TO
    GO TO PROC1 [DEPENDING ON N] DEPENDING ON Nž®†èŸ©è½¬åˆ°æ¸…单中的½W¬N个PROC.

EXIT
    ä¸€èˆ¬äØ“æœ€åŽä¸€å¥è¯ã€?/P>

STOP
    STOP RUN  ¾l“束½E‹åºã€?/P>

ALTER
    ALTER PROC1 TO PROC2. 不懂什么意思,反正已经从标准中废除了这个语句ã€?/P>

ENTER
    使其他编½E‹è¯­­a€ä¸­çš„语句可以放进当前源程序中ã€?BR>    ENTER LANGUAGE-NAME [ROUTINE-NAME]
    LANGUAGE 是厂家指定可以输入COBOLçš„ä“Q何语­a€åQŒè¿™ä¸ªè¯­å¥åŽé¢æ˜¯å…¶ä»–¾~–程语言的语句,然后要用ENTERCOBOL表示˜q”回COBOL语言ã€?BR>    如果无法ž®†å…¶ä»–语­a€çš„程序直接放入,可以用ROUTINE-NAME引用其他语言¾~–写的程序ã€?BR>



]]>
COBOL语法和文æ³?1)http://www.aygfsteel.com/superwei/articles/17508.htmlž®è¾žçŒ?/dc:creator>ž®è¾žçŒ?/author>Mon, 31 Oct 2005 03:01:00 GMThttp://www.aygfsteel.com/superwei/articles/17508.htmlhttp://www.aygfsteel.com/superwei/comments/17508.htmlhttp://www.aygfsteel.com/superwei/articles/17508.html#Feedback0http://www.aygfsteel.com/superwei/comments/commentRss/17508.htmlhttp://www.aygfsteel.com/superwei/services/trackbacks/17508.html REDEFINES
    可以用不同的变量描述同一内存�BR>    01 PART_RECODE USAGE DISPLAY
      03 PART-TYPE PICTURE...
      03 PART_TYPE_A.
        05 PART_NUMBER PICTURE...
        05 PART_COST PICTURE...
      03 PART_TYPE_B REDEFINES PART_TYPE_A.
        05 UPC_CODE PICTURE...
      03 PART_TYPE_C REDEFINES PART_TYPE_A.
        05 ISBN PICTURE...
    æ ÒŽ®PART_TYPE军_®šç”¨PART_TYPE_A˜q˜æ˜¯PART_TYPE_B˜q˜æ˜¯PART_TYPE_Cã€?BR>    规则åQ?BR>        PART_TYPE_Bå’ŒPART_TYPE_C长度不能大于PART_TYPE_Aã€?BR>        数据™å¹ä¸èƒ½æœ‰VALUEã€?BR>        01层不能用REDEFINES.
        PART_TYPE_B和PART_TYPE_C中不能有OCCURS.

PICTURE
    定义基本™å¹ç›®çš„具体长度,格式åQŒæ•°æ®ç±»åž‹ã€‚可以简写成PIC.
    格式字符串最å¤?0个字½W¦ï¼Œå¯ä»¥åŒ…含下列字符åQ?BR>    A  字母A-Z,a-z,½Iºæ ¼
    B  插入½Iºæ ¼
    P  标量字符åQŒä»£è¡¨å­—ŒDµä¸­ä¸æ˜¾½Cºçš„ž®æ•°ç‚¹ä½¾|?BR>    S  代数½W¦å·åQŒå®žé™…显½Cºå–决于™å¹ç›®çš„USAGE
    V  ž®æ•°ç‚¹ä½¾|?BR>    X  ä»ÖM½•字符
    Z  抑制前头çš?òq¶è{换成½Iºå­—½W?BR>    0  插入0
    9  数字0~9
    /  插入/
    ,  插入,(é€—å·ä¸èƒ½ä½œäØ“å­—ç¬¦ä¸²çš„æœ€åŽä¸€ä½ï¼Œæœ€åŽæ—¶é€—å·æ˜¯åˆ†éš”ç¬¦)
    ã€?插入ã€?BR>    *  抑制前头çš?òq¶è{换成*
    +  正值插å…?åQŒè´Ÿå€¼æ’å…?
    -  正值插入空æ û|¼Œè´Ÿå€¼æ’å…?
    $  插入¾ŸŽå…ƒå?BR>    CR 正值插入两个空æ û|¼Œè´Ÿå€¼æ’å…¥CR
    DB 正值插入两个空æ û|¼Œè´Ÿå€¼æ’å…¥DB
例子åQ?BR>    03 VAR PIC AAAAA.    STATE变量长度ä¸?个字½W¦ï¼Œä¸èƒ½æœ‰æ•°å­—,½{‰ä­häº?3 STATE PIC A(5)ã€?BR>   输入ASDFG ,昄¡¤ºASDFG
    03 VAR PIC XXXXX.   FILLER变量长度ä¸?个ä“Q意字½W¦ã€‚等价于03 FILLER PIC X(5)ã€?BR>   输入123AS åQ?昄¡¤º123AS
    03 VAR PIC 99/XXX/9999 长度11åQŒè¾“å…?5may2004,昄¡¤º05/may/2004
    03 VAR PIC 0ABXXX/9999 长度11åQŒè¾“å…?5may2004,昄¡¤º05 may/2004
    03 VAR PIC 9(3) 长度3åQ?~999之间ã€?BR>    03 VAR PIC 9(4)V99 长度6åQ?.00~9999.99之间ã€?BR>    03 VAR PIC S9(5)V99 长度7åQ?99999.99~99999.99之间ã€?BR>    03 VAR PIC 9(6)PPP 长度6åQŒå¯ä»¥æ˜¯1000åQ?000åQ?..,999999000。输å…?234åQŒæ˜¾½C?000ã€?BR>    03 VAR PIC PPP999 长度3åQ?.000001~0.000999之间。输å…?23åQŒæ˜¾½C?.000123ã€?BR>    03 VAR PIC ZZZ.99åQŒè¾“å…?00.50,昄¡¤º100.50;输入-51.50,昄¡¤º51.50;
            输入0,昄¡¤º.00.
    03 VAR PIC $ZZZ.ZZ-åQŒè¾“å…?00.50,昄¡¤º$100.50;输入-51.50,昄¡¤º$51.50-;
            输入0,昄¡¤º
    03 VAR PIC $***,***.99CRåQŒè¾“å…?000,昄¡¤º$**1000.00;输入-1000,昄¡¤º$**1000.00CR;
            输入0,昄¡¤º$***,***.00;输入51.5,昄¡¤º$***,*51.50
    03 VAR PIC $$$,$$$.99åQŒè¾“å…?00.50,昄¡¤º$100.50;输入-100.50,昄¡¤º$100.50;
            输入0.777,昄¡¤º$.77;输入0,昄¡¤º$.00
    03 VAR PIC $.$$$åQŒè¾“å…?.00,昄¡¤º$.00;输入0.65,昄¡¤º$.65;
            输入0,昄¡¤º$.00;
    03 VAR PIC $--åQŒè¾“å…?7.7,昄¡¤º$17;输入-17.7,昄¡¤º$-17;
            输入-5,昄¡¤º$-5
    03 VAR PIC $999.99+åQŒè¾“å…?00.50,昄¡¤º$100.50+;输入-100.50,昄¡¤º$100.50-;
    03 VAR PIC 9(3)B9(3)åQŒè¾“å…?5,昄¡¤º000 055;输入1000.78,昄¡¤º001 000;

USAGE 表示基本或组数据的类型。有BINARY,COMPUTATIONAL(COMP),DISPLAY,INDEX,PACKED-DECIMAL.

JUSTIFIED
    03 VAR1 PIC X(5) JUSTIFIED RIGHT.
    03 VAR2 PIC X(5).
    输入XYZåQŒVAR1昄¡¤ºçš„æ˜¯"  XYZ",VAR2昄¡¤ºçš„æ˜¯"XYZ  "ã€?/P>

BLANK WHEN ZERO
    03 VAR PIC $999,999.99 BLANK WHEN ZERO .
    当字ŒDµå€égØ“0åQŒè¿™ä¸ªé¡¹ç›®è®¾¾|®äؓ全部½Iºæ ¼ã€?/P>

VALUE
    定义的时候就赋倹{€?BR>    03 VAR PIC X(5) VALUE "ABCDE".
    01 VAR VALUE ALL SPACES.
      03 VAR1 PIC XXX.
      03 VAR2 PIC XX.

½Ž—术语句
    COBOL中操作符执行™åºåºä¸ºï¼šå–æ­£(+)、取è´?-)最高çñ”åQŒæŒ‡æ•°æ“ä½?**)其次åQŒä¹˜(*)、除(/)再其‹Æ¡ï¼ŒåŠ?+)、减(-)最后ã€?BR>ROUNDED   舍入操作ã€?BR>    77 A PIC 9V9 VALUE 9.1.
    77 B PIC 9.
      ADD 0.5 TO A GIVING B ON SIZE ERROR GO TO PROC1.
      ADD 0.5 TO A GIVING B ROUNDED ON SIZE ERROR GO TO PROC2.
      END-ADD.
ON SIZE ERROR 是当语句出现错误时执行的。本例中½W¬ä¸€å¥è¯æ‰§è¡Œæ²¡æœ‰é”™è¯¯åQŒæ‰€ä»¥ON SIZE ERROR
不执行PROC1.½W¬äºŒå¥è¯åQŒå½“0.5加上9.1得到9.6åQŒå› ä¸ºæœ‰ROUNDED,所以执行舍入操作,得到10。而B只有1位数字,所以发生错误,执行ON SIZE ERROR操作åQŒèŸ©è½¬æ‰§è¡ŒPROC2。Â?
CORRESPONDING(CORR)    数据™å¹åŒåæ—¶¾~–写多条语句。ADDå’ŒSUBSTRACT有此选项ã€?BR>    01 A .
      03 B.
        05 B1 PIC 999V99.
        05 B1 PIC 999V99.
        05 B1 PIC 999V99.
      03 C.
        05 B1 PIC 999V99.
        05 B1 PIC 999V99.
        05 B1 PIC 999V99.
则语句ADD CORR B TO C.相当于执行了下面3条语句�BR>    ADD B1 OF B TO B1 OF C.
    ADD B2 OF B TO B2 OF C.
    ADD B3 OF B TO B3 OF C.
¾l„项目不一定要格式相同。一个组™å¹ç›®ä¸­çš„内容在另一个组™å¹ç›®ä¸­å¯ä»¥æ²¡æœ‰ï¼Œæ•°æ®™åšw¡ºåºä¹Ÿæ— å…³ç´§è¦ã€‚只是严格按照数据项名称对应ã€?BR>    ADD A,B GIVING C. END-ADD.              ž®†A,B相加攑օ¥Cã€?BR>    SUBTRACT A,B FROM C。END-SUBTRACT.      从C中减去A,B.
    MULTIPLY A BY B GIVING C. END-MULTIPLY. ž®†A,Bç›æ€¹˜æ”‘Ö…¥Cã€?BR>    DIVIDE A INTO B GIVING C. END-DIVIDE.   ž®†B除于A的结果放入C.
    DIVIDE A BY B GIVING C. END-DIVIDE.     ž®†A除于B的结果放入C.
    DIVIDE A BY B GIVING C REMAINDER D.     ž®†A除于B的商攑օ¥CåQŒä½™æ•°æ”¾å…¥D.
    D=A-B*C.
    77 C PIC S99V9.
    77 D PIC S99V9.
    DIVIDE 3 INTO 7 GIVING C REMAINDER D.
    Cçš„å€égØ“2.3åQŒDä¸?.1ã€?D=7-3*2.3)

COMPUTE
    除了取余操作要用DIVIDE外,其他操作都可以用此语句。本语句求å€ég¸€ä¸ªç®—术表辑ּåQŒåƈž®†ç»“果存攑֜¨ä¸€ä¸ªæˆ–几个变量中ã€?BR>COMPUTE  A ROUNDED,B  = X*Y/(N+M)+Z. ž®†X*Y/(N+M)+Z的结果存攑֜¨B中,然后舍入后放入A中ã€?/P>

MOVE
    MOVE A TO B.
    也可以用CORR选项�BR>    MOVE CORR A TO B.



]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ¹ã°²ÊÐ| ÉÏÁÖÏØ| ¶¨ÈÕÏØ| Çí½áÏØ| Ó¡½­| Î÷ºÍÏØ| ÁÙãðÏØ| Ö£ÖÝÊÐ| ¡µÂÏØ| ¶õÍÐ¿ËÆì| ÐÂÖñÊÐ| ÒÁÄþÏØ| DZ½­ÊÐ| ÍòÈÙÏØ| ÐÞË®ÏØ| ±±Á÷ÊÐ| ¶¼À¼ÏØ| ¼¦Î÷ÊÐ| ÐËÄþÊÐ| ½Á¼ÏØ| ÑÎÉ½ÏØ| ɳÑÅÏØ| »¢ÁÖÊÐ| ÎýÁÖºÆÌØÊÐ| ʱÉÐ| ÎÚÀ­ÌØÇ°Æì| ·½³ÇÏØ| ÍͲýÏØ| »ª°²ÏØ| ¸£ÖÝÊÐ| º¼½õºóÆì| ¾°Äþ| ËçÄþÏØ| °¢ºÏÆæÏØ| ¼ªÄ¾ÄËÏØ| »´±õÏØ| Ê¯Â¥ÏØ| »áÀíÏØ| ¶Ø»ÍÊÐ| ãôÑôÏØ| ¶¨½áÏØ|