COBOL语法和文法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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字符和空格

相关文档
最新文档