cobol基本语法

cobol基本语法
cobol基本语法

基本語法

一、COBOL基本語法

COBOL是Common Business-Oriented Language(通用商业语言)

一、cobol的书写格式(每行)

●不区分大小写

例:ABC 等同于 Abc

●COBOL每个句子后要加句号“.”

例:PERFORM 1000-INIT.

※但在特殊的语句体里是不能写句号、包括:条件、循环、调用

例:IF IN1-AREA = HIGH-VALUE

MOVE FLG-ON TO FLG-END

END-IF.

●运算符和等号左右两边留空格。()左右两边留空格。

例:IF (IN1-AREA = HIGH-VALUE) OR (IN2-AREA = SPACE)

……

END-IF.

●空格必须是半角。

●COBOL程序纸每行有80列,一行分为几个区

1、第7列为标示列,仅可以写如下几个标示符。

a. “*”注释符(注释当前行的代码)

b. “/“注释符(注释当前行的代码,程序编译时,强制程序清单另起一页,不建议使用)

c. “-“字符串连接符

d. “D”DEBUG行标示符(程序为DEBUG模式时,标有该标示符的语句行代码执行,否则和注

释行效果一样)

2、在COBOL中数据项的定义是由若干个层来组织的,即:一个数据项的定义要包括(层号、数据项名称、

定义语句、数据类型及数据长度等部分组成)77层用来描述独立的数据项,66和88是特殊层。

二、cobol的语法结构(几大部分)

节和段

除标识部没有节,每个部下面有若干个节(SECTION)。每一节下面可包括若干段。

※程序中四大部分缺一不可

1、标识部(IDENTIFICATION DIVISION):提供程序的一般性文档说明。

元素①.IDENTIFICATION DIVISION.//部起始标识

②.PROGRAM-ID.XXXXX. //程序名称

③.AUTHOR.XXXXX. //作者名称

④.INSTALLAION.XXXXX. //公司名称

⑤.DATE-WRITTEN.XXXXX. //修改日期

⑥.DATE-COMPILED.XXXXX. //编译日期

⑦.SECURITY.XXXXX. //安全信息

2、环境部(ENVIRONMENT DIVISION): 提供程序外部有关的项目。

a.配置节(CONFIGURATION SECTION)

①.指定程序编译计算机型号(SOURCE-COMPUTE).

②.指定程序运行计算机型号(OBJECT-COMPUTE).

③.设置debug模式(SOURCE-COMPUTE IBM-390 WITH DEBUGGING MODE)

④. 指定读环境变量设置.

b.输入输出节(INPUT-OUTPUT SECTION)。

FILE-CONTROL.//文件信息描述段标识

I-O-CONTROL.//输入输出描述段标识

文件的物理路径的定义。

方法一:(写死文件路径)

SELECT FILE-LOG ASSIGN

"/usr/sample/log/sample1.log"

ORGANIZATION IS LINE SEQUENTIAL.

方法二:(过程部中动态指定文件)

SELECT FILE-LOG ASSIGN TO SELECT-FILE

ORGANIZATION IS LINE SEQUENTIAL.

在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。

方法三:(环境变量中动态指定文件)

SELECT FILE-LOG ASSIGN TO EXTERNAL EXTFILELOG

ORGANIZATION IS LINE SEQUENTIAL.

在该程序运行前,设置环境变量:

setenv dd_ EXTFILELOG /usr3/WSI/nco035/lsc/tstlog/WSIXXXX.log

3、数据部(DATA DIVISION)。

程序中的变量都在数据部中定义,Cobol中没有全局变量和局部之分。

a. 文件节(FILE SECTION)

给环境部定义的文件指定一个RECORD变量,读写文件用:

FD FILE-LOG.

01 RECORD-LOG PIC X(2000).

b. 工作存储节(WORKING-STORAGE SETION)

定义程序中用到的中间变量。

a) COBOL变量定义需要加层号(表示层次关系),

·层号从01开始

如: 01 I PIC X(10).

·组合项

如: 01 WORK-AREA.

05 NUM-1 PIC 9(09).

05 STR-1 PIC X(10).

b) 层号依次排列顺序为:01 ,05,10,15,20,30 ·······

c.连接节(LINKAGE SECTION)

调用子程序的参数的定义。

d. 通讯节(COMMUNICATION SECTION)

e. 报表节(REPORT SECTION)

4、过程部(PROCEDURE DIVISION)

程序的主体:程序的逻辑运算在此操作。

a、每个程序分为四大节(模块),

·前处理(初始化变量,设定初始值等)

·主处理(程序业务处理部分)

·后处理(程序正常结束时的出口)

·错误处理(程序异常结束时的出口)

b、对于子程序,PROCEDURE DIVISION 后应列出LINK节中定义的参数。

如: PROCEDURE DIVISION USING LINK-INPUT-DATA LINK-OUTPUT-DATA.

c、程序结束。

·主程序 STOP RUN.

·子程序 GO BACK.

三、变量类型

COBOL程序的基本变量类型分为两大类字符串型(X)、数值型(9)。

●字符串型

01 STRING-A PIC X(100).

100个字符长的变量,程序可以局部操作一个变量( STRING-A(start: length)如: MOVE ALL “X” TO STRING-A(2:10)

(将变量STRING-A第2位开始10长度的内容全赋为”X”字符)

●数据常量

1.ZERO:表示一个或多个零字符

2.SPACE:表示一个或多个空格字符

3.HIGH-VALUE:表示一个或多个具有“最高值”的字符(二进制11111111)4.LOW-VALUE:表示一个或多个具有“最高值”的字符(二进制00000000)●数值型

注:①、对于出力型数值变量,可以用9代替Z,它们的区别是:

结果为零的整数部高位,小数部低位: Z型变量用空格显示,9型变量用零显示

②、COBOL语言中数值型变量种类很多,针对不同的要求有不同的数值类型。

●不同类型变量间赋值。

◎整数

1、字符串中数值部分可以作为对应长度的DISPLAY型变量给其它各种数值型变量。

2、DISPLAY型变量(包括出力型变量)被赋值时,超出它表示范围的数可以被接受,但截去超出

的高位。

3、COMP型变量被赋值时,超出它表示范围的数不能被接受。

◎小数

1、DISPLAY型变量(包括出力型变量)被赋值时,超出它表示范围的数可以被接受,但整数部截

去超出的高位,小数部截去低位。

2、COMP型变量被赋值时,整数部超出它表示范围的数不能被接受,小数部超出它表示范围的数

可以被接受,但小数部截去低位

注: 以上所述赋值变量为任何类型的数值型变量(经过严格测试得出结论)。

●字符型比较。

·字符串比较时,系统自动截去尾部空格(如“a “ = “a”)。

·数字的数值形式和数字字符形式相等(如“1234567890” = 1234567890)

·综合以上两点, 有“12 “ = 12

四、基本语法:

(一)操作语句

1、赋值语句MOVE。

a、将一个变量赋给另个变量

MOVE A TO B.

b、将一个变量同时赋给另外两个变量。

MOVE A TO B C .

c、将一个变量全部赋为某个字符

MOVE ALL "X" TO A.

d、对于赋值溢出,截取的方式为.

·字符型变量截去右边的溢出部分。

·数值型变量截去整数部高位、小数部低位的溢出部分。

e、组和项传送,它们的数据结构必须相同

f、对于组合项成员的局部引用,应该如下:

01 A-AREA.

05 STR-1 PIC X(10).

05 STR-2 PIC X(10).

01 B-AREA.

05 STR-1 PIC X(20).

05 STR-2 PIC X(10).

MOVE STR-1 OF A-AREA(1:4) TO STR-1 OF B-AREA(1:4).

2、显示语句DISPLAY

a、向控制台打印显示的信息。

DISPLAY “A=” A.

3、接受语句ACCEPT

a、接受从控制台上的输入值。

ACCPET A.

4、四则运算

原则上,四则运算不用助记符语句,但对于简单运算( ++,--),可采用助记符语句。

a、加法( ADD 1 TO NUM-1.

ADD A ,B GIVING C. )

b、减法( SUBTRACT 1 FROM NUM-1.

SUBTACT B ,C FROM A GIVING X ,Y )

c、乘( MULTIPLY A BY B.)

d、除( DIVIDE A INTO B.

DIVIDE A BY B.)

e、四舍五入( ADD A TO B ROUNDED. )

f、溢出处理( ON SIZE ERROR 强制语句 )

g、其它所有运算均采用COMPUTE 语句

COMPUTE NUM-1 = NUM-2 + NUM3 * 10

运算符如下:

+ 加

- 减

* 乘

/ 除

** 指数

在COMPUTE语句中,变量和运算符间至少留有一个空格。

5、重定义语句REDEFINES(数据部中使用)

01 A PIC X(100) VALUE SPACE.

01 B R EDEFINES A.

05 AA PIC X(10).

05 BB PIC X(30).

05 CC PIC X(60).

变量A,B使用同一个空间,重定义时,重定义变量必须紧跟着被重定义变量后面,并且在字符串同数值一起重定义时,如果对变量进行初始化,变量会初始化为空格。

6、数组关键词OCCURS

OCCURS 整数 TIMES.

a.简单数组

01 A OCCURS 10 PIC X(30).

b. 组合项数组

01 A.

05 B OCCURS 10.

10 C PIC X(10).

10 D PIC X(20).

注意:引用数组中某一元素如下

DISPLAY C OF B OF A(1).

7、检查替换语句INSPECT.

I NSPECT A TALLYING N FOR ALL ‘X’.

·在字符串A中找‘X’,找到后在计数器N中加1.

INSPECT A REPLACING ALL ‘X’ BY ‘A’.

·将字符串A中所有的‘X’字符替换成‘A’.

还可以在最后加BEFORE ‘X’或 AFTER ‘X’,即在某一字符前或后的查找或替换。

8、字符串操作语句STRING,UNSTRING

a. STRING A, B, C DELIMITED BY SIZE INTO D .

·将字符串A, B, C按它们定义长度连接赋给变量D.

STRING A, B, C DELIMITED BY SPACE INTO D .

·将字符串A, B, C连接赋给变量D,去掉中间所有的空格.

STRING “AAAAAAA” DELIMITED BY SIZE,

“BBBBBBB ” DELIMITED BY SIZE,

B DELIMITED BY ‘X’

INTO D .

·将字符串和字符串变量连接赋给变量D.

b. UNSTRING A DELIMITED BY SIZE INTO B, C, D.

·将字符串A按长度拆分到B,C,D中.

UNSTRING A DELIMITED BY ‘X’ INTO B, C.

·将字符串A中‘X’之前的给B,其余给C.

UNSTRING A DELIMITED BY ALL ‘’INTO B, C.

·将字符串A以空格分割,赋给B,C.

9、FILLER语句//用来临时占用不使用的数据位置,FILLER不能赋值,不被初始化

格式:层号FILLER PIC类型长度

(二)逻辑语句

1、IF语句

IF 语句包含以下三种:

· IF 条件

THEN

语句(无“.”结束)

END-IF.

· IF 条件

THEN

语句(无“.”结束)

ELSE

语句(无“.”结束)

END-IF.

· IF 条件

THEN

语句(无“.”结束)

ELSE

IF 条件

THEN

语句(无“.”结束)

END-IF

END-IF.

注: IF 语句最多只能使用三层嵌套,条件用括号括起来。

2、关系运算符

注:

判断字符串能否转换为数字。

NUMERIC NOT NUMERIC

IS NOT NUMERIC

3、PERFORM 语句

PERFORM 节名称.

·调用

子节,直到遇到第一个只包含EXIT语句的段中止,回到该调用语句的下一条语句。 EXIT只与它搭配有效。

所以节的定义规定如下:

XXX SECTION.

语句块········

XXX-EXT.

EXIT.

PERFORM 节名称 N TIMES.

·循环调用子节N次

PERFORM XXX UNTIL N> 30.

·循环调用子节,直到N 大于30。

PERFORM UNTIL 表达式

语句·······

END-PERFORM.

·循环调用语句块,表达式判断在语句块前进行。

PERFORM VARYING X FROM A BY B UNTIL X > 12 语句·······

END-PERFORM.

·循环调用语句块,相当于FOR 循环。

4、EVALUATE 语句

EVALUATE 变量、常量、表达式

WHEN ANY

TRUE

FALSE

(NOT) 常量1 THRU (THROUGH) 常量2

WHEN OTHER .

END–EVALUATE

· ANY :任何变量、常量值

· TRUE、FALSE :关系表达式的结果

· (NOT) 常量1 THRU (THROUGH) 常量2: 值(不)在常量1和常量2 构成的闭区间

·另外,在WHEN 后面可以包含简单的关系表达式。

如:

EVALUATE A

WHEN => 10

EVALUATE B

WHEN = 1 OR = 2 OR = 3

语句····

WHEN OTHER

语句····

END-EVALUATE

WHEN OTHER

语句····

END-EVALUATE.

5、另外,不同的COBOL系统提供了不同内部函数,建议少用内部函数,以下提供几个通用的内部函数

· ORD 取得字符的ASICII码如:

MOVE FUNCTION O RD (“A”) TO NUMBER.

? UPPER-CASE 字母小写转换成大写如:

MOVE FUNCTION UPPER-CASE (STRING(START:1)) TO STRING(START:1) · LOWER -CASE 字母小写转换成大写如:

MOVE FUNCTION LOWER-CASE (STRING(START:1)) TO STRING(START:1)

· REVERSE 对字符串中所有字符进行倒序如:

MOVE FUNCTION REVERSE(STRING-1) TO STRING

· LENGTH 取得变量的定义长度,如:

COMPUTE LEN = FUNCTION LENGTH(STRING)

(三)控制语句

1.GOTO语句 //GOTO语句将控制转入过程部中的另一个位置

GOTO 标示

2.CONTINUE语句 //CONTINUE语句什麽也不干,只是一个语句占位符

3.STOP语句//STOP语句结束程序或暂停程序直到操作员将其重新启动

4.EXIT语句//EXIT语句什麽也不干,作为段中唯一的语句,提供程序中插入段名的位置(四)逻辑处理

1.子程序

①.子程序类型:外部子程序、内部子程序

②.参数区定义:数据部的数据节

A.数据部:WORKING-STORAGE SETION

③.程序调用:PERFORM、CALL ......USING ......

2.文件访问

①.信息定义:环境部的文件节、数据部的文件节

A.环境部:INPUT-OUTPUT SECTION(FILE-CONTROL、I-O-CONTROL)

B.数据部:FILE SECTION(FD)

②.文件操作:过程部的文件节

A.OPEN、CLOSE

B.READ、WRITE

3.数据库访问

①. DB类型:DB2、ORACLE、SQL SERVER

②.缓冲区定义:数据部的数据库节

A.数据部:WORKING-STORAGE SETION

③.数据操作:过程部的数据库节

A.EXEC SQL ......END-EXEC.

B.OPEN、CLOSE、SELECT...

④.连接数据库

A.连接到默认数据库,指定用户名

EXEC SQL

CONNECT :USRNAME IDENTIFIED BY :PASSWD END-EXEC.

B.

EXEC SQL

CONNECT :UID = “OPS$XXXX/****”

END-EXEC.

二、PRO*COBOL基本語法

PRO*COBOL是ORACLE公司提供的在COBOL程序中嵌入SQL语句的一种方法,使得程序方便地访问操作ORACLE数据库;PRO*COBOL程序经过ORACLE提供的预编译器预编译生成中间COBOL程序后,程序中所有的SQL 语句直接调用ORACLE库函数,再经过COBOL编译器同一般COBOL程序一样编译生成各种可执行模块,由于程序中直接调用ORACLE库函数,所以它们访问操作ORACLE数据库的速度很快,基本语法如下。

一、特点。

·所有的SQL或数据库操作相关语句均被括在” EXEC SQL”和“END-EXEC”之间,并且它们只能包含一条语句,如:

EXEC SQL

SQL语句

END-EXEC.

·所有访问操作数据库的变量都必须是主变量。

·“EXEC SQL”,”END-EXEC’及其包含的语句都必须从12列或12列以后开始。

二、数据部内容。

·引用两个对象SQLCA, ORACA.

EXEC SQL INCLUDE SQLCA END-EXEC.

EXEC SQL INCLUDE ORACA END-EXEC.

·主变量定义。

EXEC SQL BEGIN DECLARE SECTION END-EXEC. (主变量定义开始)

EXEC SQL END DECLARE SECTION END-EXEC.(主变量定义结束)

··主变量都必须定义在这里,具体定义和一般的COBOL变量一样。

·· VARCHAR型变量(可变长度).

该变量定义就是在X型变量后加关键字VARYING.如:

05 STRING PIC X(100) VARYING.

它实际包含两部分(预编译后的中间COBOL程序可见)

05 STRING.

06 STRING-LEN PIC S9(4) COMP.

06 STRING-ARR PIC X(100).

STRING-LEN 表示字符串的实际长度,STRING-ARR 表示字符串的实际内容。

SQL语句中,只能用STRING.

从表中得到值时,STRING-LEN 自动被赋值。

向表中写入值时,STRING-LEN 需要手工指定长度,SQL将STRING(1:STRING-LEN)部分有效字符串写到表中。

定义主变量时,引用COPY句: EXEC SQL INCLUDE PGM0001.cpy END-EXEC.

·游标的定义可以放在数据中。

三、数据部中SQL语句的基本语法

1)、错误扑获

ORACLE错误扑获是一个全局性的标志,在一个事务(在PRO*COBOL中,ORACLE事务以COMMIT或ROLLBACK 为分割点)中,后一个错误扑获会覆盖前一个错误扑获设置。

·遇到SQL警告(SQLCODE > 0 )继续

EXEC SQL WHENEVER SQLWARNING CONTINUE END-EXEC.

·遇到SQL错误(SQLCODE < 0 )继续

EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC.

·遇到SQL错误(SQLCODE < 0 )跳转

EXEC SQL WHENEVER SQLERROR GOTO ORA-ERROR END-EXEC.

2)、数据连接

·方式一(USERNAME 和PASSWORD分开,如:USERNAME = “OPS$USER51”PASSWORD = “PASSWORD”)EXEC SQL

CONNECT :USERNAME IDENTIFIED BY :PASSWD

END-EXEC.

·方式二(USERNAME 和PASSWORD合并,如:UID = “OPS$USER51/ PASSWORD”)

EXEC SQL

CONNECT :UID

END-EXEC.

3)、静态SQL语句

·单条记录的检索

EXEC SQL

SELECT ENAME, SAL, COMM

INTO :EMP-NAME, :SALARY, :COMMISSION:COMM-IND

FROM EMP

WHERE EMPNO = :EMP-NUMBER

END-EXEC.

注: 上例中的COMM-IND为指示变量,在检索操作中每个接受主变量都可指定一个指示变量(9(04)

COMP型),它用来判断主变量是不是接受到一个空值(NULL)(主变量不能接受空值),当指示变量

为-1时,表示对应的主变量应该接受到一个空值(主变量自己表示不出来)

·多条记录的检索(CURSOR 游标)

··游标的定义

EXEC SQL

DECLARE CUR_NAME CURSOR FOR

SELECT MSG_CD , MSG_1,MSG_2

FROM TMSG1

END-EXEC.

游标的定义:将SQL查询语句声明为一个游标,不调用ORACLE库函数,不会更新SQLCODE的值。

··游标的打开

EXEC SQL

OPEN CUR_NAME

END-EXEC.

游标的打开:用游标定义的SQL语句检索数据库,将检索结果生成一个游标对象,(此时游标指

针在第一条记录前一位置,无法确定游标中有没有记录)。

··游标中记录的抽取

EXEC SQL

FETCH CUR_NAME

INTO : HST-MSG-CD , : HST-MSG-1,:HST-MSG-2

END-EXEC.

游标中记录的抽取:将游标中的记录抽取到相应的主变量中,一次抽取一条。

··游标的关闭

EXEC SQL

CLOSE CUR_NAME

END-EXEC.

游标的关闭: 将现有的游标对象释放,游标再次打开前,必须关闭。

·更新

EXEC SQL

UPDATE TMSG1

SET MSG_1 = : WK-MSG-1,

MSG_2 = : WK-MSG-2

WHERE MSG_CD = : WK-MSG-CD

END-EXEC.

·删除

EXEC SQL

DELETE FROM TMSG1

WHERE MSG_CD = : WK-MSG-CD

END-EXEC

·插入

EXEC SQL

INSERT

INTO TMSG1(MSG_CD,

MSG_1,

MSG_2)

VALUES (:WK-MSG-CD,

:WK-MSG-1,

:WK-MSG-2)

END-EXEC

·事务的提交

··方式一(释放连接)

EXEC SQL COMMIT WORK RELEASE END-EXEC.

··方式二(不释放连接)

EXEC SQL COMMIT WORK END-EXEC.

·事务的回滚

··方式一(释放连接)

EXEC SQL ROLLBACK WORK RELEASE END-EXEC.

··方式二(不释放连接)

EXEC SQL ROLLBACK WORK END-EXEC.

·典型的SQLCODE值

·· SELECT

1403 : 没有检索到记录

·· FETCH(游标中记录的抽取)

1403 : 游标指针FETCH到游标的尾部

·· UPDATE

1403 : 没有更新的记录

-60 : 死锁

-2049: 由于死锁导致系统超时

·· DELETE

1403 : 没有删除的记录

-60 : 死锁

-2049: 由于死锁导致系统超时

·· INSERT

-1 : 插入的记录已存在

-60 : 死锁

-2049: 由于死锁导致系统超时

·典型ORACLE内部变量

SQLCODE : SQL语句运行后得到的返回值

SQLERRMC: SQL语句运行后得到的返回信息

SQLERRD(3): SQL语句运行处理的记录条数

4)、动态SQL语句

·动态一(直接执行SQL字符串)

··方式一

MOVE "INSERT INTO DYN1 VALUES ('TEST')" TO DYNSTMT.

EXEC SQL EXECUTE IMMEDIATE :DYNSTMT END-EXEC.

··方式二

EXEC SQL EXECUTE IMMEDIATE

"INSERT INTO DYN1 VALUES ('TEST')"

END-EXEC.

动态一:只用于没有任何参数和返回结果的SQL语句操作·动态二(用于非检索SQL语句)

··方式一(带参数)

MOVE "INSERT INTO EMP (EMPNO, DEPTNO) VALUES (:V1, :V2)" TO DYNSTMT-ARR.

EXEC SQL PREPARE S FROM :DYNSTMT END-EXEC.

EXEC SQL EXECUTE S USING :EMPNO, :DEPTNO1 END-EXEC.

其中V1,V2为形参,S为PREPARE生成的临时对象··方式二(不带参数)

STRING "INSERT INTO " DELIMITED BY SIZE

"EMP (EMPNO, " DELIMITED BY SIZE

"DEPTNO) " DELIMITED BY SIZE

"VALUES ( '" DELIMITED BY SIZE

EMPNO DELIMITED BY SIZE

"' , '" DELIMITED BY SIZE

DEPTNO1 DELIMITED BY SIZE

"' ) " DELIMITED BY SIZE INTO DYNSTMT.

EXEC SQL PREPARE S FROM :DYNSTMT END-EXEC.

EXEC SQL EXECUTE S END-EXEC.

·动态三(用于检索SQL语句)

··方式一(带参数)

MOVE "SELECT ENAME FROM EMP WHERE DEPTNO = :V1"

TO DYNSTMT.

EXEC SQL PREPARE S FROM :DYNSTMT END-EXEC.

EXEC SQL DECLARE C CURSOR FOR S END-EXEC.

EXEC SQL OPEN C USING :DEPTNO END-EXEC.

EXEC SQL FETCH C INTO :ENAME END-EXEC.

EXEC SQL CLOSE C END-EXEC.

··方式二(不带参数)

STRING "SELECT ENAME FROM " DELIMITED BY SIZE

"EMP WHERE DEPTNO = '" DELIMITED BY SIZE

DEPTNO DELIMITED BY SIZE

"' " DELIMITED BY SIZE INTO DYNSTMT.

EXEC SQL DECLARE C CURSOR FOR S END-EXEC.

EXEC SQL OPEN C END-EXEC.

EXEC SQL FETCH C INTO :ENAME END-EXEC.

EXEC SQL CLOSE C END-EXEC.

所有的检索SQL语句都必须采用游标方式。

01-Cobol-基础知识讲义

第一章关于COBOL的初步知识 一. COBOL语言的特点 COBOL是Common Business-Oriented Language(公用面向商业的语言)的缩写,主要供数据处理、数据收集及分析之用。COBOL自60年代初开始广泛应用于计算机应用领域(商业和其他领域)。事实上,除了商业之外,各种管理工作都广泛使用COBOL,如各种统计工作,财会工作,企业计划编制,作业制度,情报检索,人事管理等。COBOL针对商业世界的使用,是真正商用应用程序开发的首选语言。 . 1 适于数据处理领域。 . 2 采用英语语法的高级语言,可读性、可维护性、可移植性较强。 3 . 通用性强,标准化程度较高。 . 4 结构严谨,层次分明。 . 5 缺点是比较繁琐。 . 最简单的COBOL程序介绍 二例1: IDENTIFICATION DIVISION.(标识部) PROGRAM-ID. EXAM1.(程序标识段) ENVIRONMENT DIVISION.(设备部) DATA DIVISION.(数据部) PROCEDURE DIVISION.(过程部) A. DISPLAY ‘THIS IS A COBOL PROGRAM.’. STOP RUN. 例2: IDENTIFICATION DIVISION.(标识部) PROGRAM-ID. EXAM2.(程序标识段) ENVIRONMENT DIVISION.(设备部) DATA DIVISION.(数据部) WORKING-STORAGE SECTION.(工作单元节) 77 A PICTURE IS 9(3).(对A进行描述) 77 B PICTURE IS 9(3).(对B进行描述) PROCEDURE DIVISION.(过程部) S. ACCEPT A.(输入A值) ACCEPT B.(输入B值) ADD A TO B.(A+B->B) DISPLAY A,B.(显示A和B值) STOP RUN. 三.COBOL程序的结构 1.部 每个程序都包括四个部: IDENTIFICATION DIVISION (标识部)提供程序的一般性文档说明,主要用来指定源程序名。 ENVIRONMENT DIVISION (环境部)列出程序中所用到的文件。程序中不需要外部文件时,环境部为空,也可以省略部标题。 DATA DIVISION (数据部)程序中所用到的全部数据(包括:文件数据—-用于输入输出、静态数据、参数等)都应在数据部中说明它们的类型和所占内存的情况。 PROCEDURE DIVISION (过程部)包含构成程序的过程性语句,用来给出程序要执行的指令,使计算机产生相应的操作。 2.节和段 标识部下只有各个段。除标识部以外,每个部下可以有若干个节(SECTION),每个节以“节头”作标识。每个节下又可包括若干段(PARAGRAPH),每个段用“段名”标识。各个段内有各种COBOL元素。 3.句子,语句和子句 在过程部中,每一段由若干个句子(Sentence)组成。一个句子是以英文句号来结束的。句子又由语

COBOL+CICS文件操作

COBOL+CICS文件操作 1.输入输出数据 非CICS: ACCEPT数据来源:终端输入和系统接收。 一般系统接收数据为日期或者时间。 DA TE--YYMMDD. DAY---YYDDD. DAY-OF-WEEK--- PIC 9. 范围1-7. TIME---HHMMSSHH,最后HH表示hundredths from midnigth. 如:DA TA DIVISION. WORKING-STORAGE SECTION. 01 INPUT-DATE. 05 INPUT-YEAR PIC 99. 05 INPUT-MONTH PIC 99. 05 INPUT-DAY PIC 99. * PROCEDURE DIVISION. ... ACCEPT TEST-DA TE. DISPLAY TEST-DATE. ---终端输入的数据 ACCEPT TEST-DA TE FROM DA TE. --系统产生的数据 DISPLAY TEST-DATE. --输出 CICS下: 如:DA TA DIVISION. WORKING-STORAGE SECTION. 01 INFLDS. 05 INLEN PIC 9(4) COMP. 01 INPUT-NAME. 05 INPUT-FIRST PIC X(10). 05 INPUT-MIDDLE PIC X(10). 05 INPUT-LAST PIC X(10). *PROCEDURE DIVISION. ... MOVE 15 TO INLEN. EXEC CICS RECEIVE INTO(INPUT-NAME) LENGTH(INLEN) --所接收的最大长度,小于为实际,大于为异常END-EXEC. EXEC CICS SEND FROM(INPUT-NAME) LENGTH(20) --为实际长度,并非变量。输出位置为当前光标位置END-EXEC. ... GOBACK.

cobol基本语法教学内容

c o b o l基本语法

基本語法 一、COBOL基本語法 一、cobol的书写格式(每行) 1、前6列为序号区(一般不编辑) 2、第7列为标示列,仅可以写如下几个标示符。 a. “*”注释符(注释当前行的代码) b “-“字符串连接符 3、第8列---11列为A区,包括以下内容。 a 部、节名。 b 层号01 4、第12列---72列为B区,过程部的程序必须写在B区中。 5、第72以后部分不能编辑。 二、cobol的语法结构 (几大部分) 1、标示部(IDENTIFICATION DIVISION):提供程序的一般性文档说明。 2、环境部(ENVIRONMENT DIVISION): 提供程序外部有关的项目。 a.配置节(CONFIGURATION SECTION) ①.指定源计算机(SOURCE-COMPUTE). ②.目标计算机(OBJECT-COMPUTE). b. 输入输出节(INPUT-OUTPUT SECTION). 文件的物理路径的定义。 方法二:(过程部中动态指定文件) SELECT FILE-LOG ASSIGN TO SELECT-FILE ORGANIZATION IS LINE SEQUENTIAL. 在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。 3、数据部(DATA DIVISION)。 程序中的变量都在数据部中定义,Cobol中没有全局变量和局部之分。(变量的类型结构参照5.变量类型) a. 文件节(FILE SECTION) 给环境部定义的文件指定一个RECORD变量,读写文件用: FD FILE-LOG. 01 RECORD-LOG PIC X(2000). b. 工作存储节 定义程序中用到的临时变量。 a) COBOL变量定义需要加层号(表示层次关系), ·层号从01开始 如: 01 I PIC X(10). ·组合项 如: 01 WORK-AREA. 05 NUM-1 PIC 9(09).

宏病毒文档修复前备份

2、数据库的特点是( ) A、与其他软件连接 B、描述数据性质 C、数据库的用户 D、用数据字段表示实体的属性 2 、 SQL 是 A 、结构化查询语言 B 、结构化疑问语言 C 、法定查询语言 D 、法定疑问语言 3 、操作系统的作用是 A 、一种程序语言 B 、使用户能与计算机交互的界面 C 、给用户提供一个应用平台 D 、是一个应用软件的例子 4 、下列哪一种是应用软件 A 、 Fortran B、PASCAL C、Word for Windows D、Windows XP 5 、用户接口软件是为了 A 、使得用户和系统交互更方便 B、替换DOS C 、使得编程工作更加容易 D、替换应用软件 6 、 DBMS 是用来 A 、开发电子数据表 B、管理数据库中的大量数据 C 、在数据库和电子数据表之间处理大量数据 D、使一个文字处理器连接到一个电子数据表 7 、下列哪一个不是数据的类型 A 、常量 B 、变量 C、字符 D、表格 8 、下列哪一个是计算机处理方法 A 、解释 B 、编译 C、汇编 D、批处理 9 、下列哪一个不是一种数据类型 A 、字符型 B 、数值型 C、实数型 D、列表 19 、程序设计语言是用于 A 、运行计算机 B 、运行计算机而不是DOS C 、编写应用软件 D 、控制硬件和软件 20 、下列哪一个是图像文件格式 A 、 JPEG B 、 MP3 C 、 ASII D 、二进制

1.最适合于建立通讯地址簿并具有查询功能的软件是:() A.CAD应用 B.数据库软件 C.文字处理软件 D.电子表格软件 3.UNIX是一种 A.第四代程序设计语言 B.编译程序 C.个人电脑 D.多用户操作系统 5.在数学计算和科学研究中常用的程序设计语言是 A.C++ B.COBOL C.FORTRAN D.PROLOG 11.第一代程序设计语言是 A.C语言 B.机器语言 C.javascript D.脚本语言 12.数据库管理员的主要职责是 A 管理数据库和设定用户访问权限 B负责每天更新数据库中在数据 C 维护数据库运行所需的硬件设备 D 为有权访问数据库的用户提供详细的查询 13.关系数据库是 A 一系列相关在二维表 B 一系列记录 C 一系列相关文档 D 基于大型机的大型数据库 19.信息的定义是 A 存储在计算机中的数据 B 存储在数据库中的数据 C 显示在计算机屏幕上或打印出来能看到的数据 D 经过处理后得到的有用数据 10、计算机的机器语言是( ) A、第五代计算机语言 B、第一代计算机语言 C、标记性语言 D、计算机高级程序语言 17、用于数值计算和科学研究的计算机语言是( ) A、C语言 B、COBOL语言 C、FORTRAN语言 D、PROLOG语言 4、通常将有用的数据称为( ) A、数据变换 B、高级编程 C、伪代码 D、信息 7、如果你想建立一个可查询的地址簿,选择的应用软件是( ) A、分页软件 B、数据库软件 C、字处理软件 D、多媒体编辑软件 8、宏是( ) A、一种报告错误的程序 B、一种软件报告 C、一种自动触发文件的方法 D、一种高级语言编写的程序 计算机中宏又称为宏命令,即通过特殊的控制语,将一系列动作简便化;即:一种批处理的程序 10、用于进行数学计算和计算机语言是( ) A、C语言 B、COBLL C、FORTRAN D、PROLOG A、C语言 B、机器语言 C、PROLOG D、汇编语言 12、第一代计算机语言是指( ) 15、UNIX是( ) A、第四代程序语言 B、解释程序 C、应用软件 D、多用户操作系统

COBOL面试1—30题答案

COBOL面试1—30题答案 A1) IDENTIFICA TION DIVISION, ENVIRONMENT DIVISION, DA TA DIVISION, PROCEDURE DIVISION. Q:列举COBOL的DEVISION A:标识部,环境部,数据部,过程部 A2) Alpha-numeric (X), alphabetic (A) and numeric (9). Q:COBOL有哪些可用的数据类型 A:字符型(这里指的是包含字母和数字),字母型,数字型 A3) Alphabetic, Alphanumeric fields & alphanumeric edited items are set to SPACES. Numeric, Numeric edited items set to ZERO. FILLER , OCCURS DEPENDING ON items left untouched. Q:INITIALIZE这个词做了些什么 A:将字母,字符,数字区域都置成空格(置空),将数字区置0,FILLER和OCCURS DEPENDING ON项不处理 A4) Elementary level item. Cannot be subdivisions of other items (cannot be qualified), nor can they be subdivided themselves. Q:77层有什么作用 A:基本层数据项,不能用做细分别的层,也不能被细分 A5) For condition names. Q:88层有什么作用 A:条件逻辑层 A6) For RENAMES clause. Q:66层有什么作用 A:重命名层 A7) IS NUMERIC can be used on alphanumeric items, signed numeric & packed decimal items and unsigned numeric & packed decimal items. IS NUMERIC returns TRUE if the item only consists of 0-9. However, if the item being tested is a signed item, then it may contain 0-9, + and - . Q:IS NUMERIC这个子句怎么确定(也就是说确定句子的真值) A:IS NUMERIC用在字符项,带符号数字,浮点数,不带符号数。如果目标项只含0~9则返回TRUE。但是,如果待测项目是个带符号数,那么他就含有0-9还有+和- A8) ARRAYS. 05 ARRAY1 PIC X(9) OCCURS 10 TIMES. 05 ARRAY2 PIC X(6) OCCURS 20 TIMES INDEXED BY WS-INDEX Q:COBOL中怎么建表/数组 A:如上.

浅谈COBOL开发

浅谈COBOL开发 近几年,由于IBM和HITACHI等大型机力推COBOL,使COBOL在沉睡了几年以后又重新火了起来。因为本人从毕业以来,一直在做COBOL的项目,今天斗胆把毕业以来的一些经验写出来,不管对还是错拿出来大家一起讨论讨论。 COBOL语言常用的开发方式有以下几种: 1. PC机开发。这种开发方式比较灵活,可以与当今比较流行的语言进行对接。把数据库、及开发环境都可以集成到我们的PC机上。程序执行的LOG和文件都在PC机上指定目录。当今比较流行的语言如.net、 VB、 C++等编译生成的LIB文件,COBOL都可以直接调用。这种开发方式所使用的开发工具中首推日立推出的COBOL2002,还有一个比较低的版本COBOL85,COBOL2002的优势在于DB连接方面。当然由于COBOL85版本太老,本人无缘使用,但是曾经听过一位前辈说COBOL85不能进行DB连接,也就是说COBOL85的数据存储只能以文件的形式存储。COBOL2002可以设定断点(VB、.NET程序员应该比较熟悉),程序执行过程中可以单步调试,察看变量值。COBOL2002还可以记录测试路径的覆盖率,一些异常处理可以利用设定断点的方式跑到,所以这种开发方式可以出现路径覆盖率为100%的情况。但是这种开发形式的语法要求比较低,比如说代码中出现全角空格就能顺利通过编译,而相同的代码在大机上编译就会出错。 2.B/S形式大机开发。程序员在PC机上开发,代码编写完成以后,通过FTP上传工具,把代码上传到大机端。利用远程登录telnet登录大机,在命令行输入编译代码。本身程序员在编写代码过程中完全占用PC机资源,不占用大机内存资源。当程序被传到大机上以后,才占用大机资源。由于大机是多用户多线程作业,所以即使代码死循环,大机也不会停掉。而是在这个线程执行一段时间以后,压到堆栈中,执行其他线程。这种大机典型的是H9000(HITACHI9000,个别人可能误以为是HP的产品)。大机上常常把目录固定,主处理和子程序往往在不同的目录下存放。程序执行过程中无法设定断点。如果想要查看程序执行过程中的变量,只能在代码中追加DISPLAY语句,在LOG中把变量值打出来。一般来说,大机的语法要求高一些,代码里除了X型变量中和注释出现全角空格外,其他地方出现空格是绝对不能编译通过的。 3.HOST端大机开发。程序员通过个人计算机和网络和大机相连,在编写代码的过程中,占用大机资源。就是说如果你PC删除一行代码,对应大机上也要删除一行代码。编写的代码无法在PC机上进行编译,代码需要使用大机的操作系统命令进行编译和执行。代码编写操作远远没有ULTRAEDIT方便,删除、拷贝都需要系统命令。而且要进行用户登录和退出。开发担当常常用一个文本记下所有常用命令,以便开发过程使用。这种开发的典型就是IBM 的S/390

AS400 基本命令和操作

数据描述规范DDS通过文件的记录字段仅一次的说明,可定义多种访问路径,多个程序使用。 结构化查询语言SQL/400组成:(1)SQL运行支持程序(2)SQL预编译程序(3)SQL交互式接口(4)DB2 QUERY MANAGER FOR AS/400,提供菜单、填空式提示的交互式接口,允许建立、增加、维护数据,和运行报表 PDM(PROGRAMMING DEVELOPMENT MANAGER)处理源代码、对象和库 SEU(SOURCE ENTRY UTILITY)建立和编辑源文件成员STRSEU SDA(SCREEN DESIGN AID)交互式设计、创建和维护应用屏幕 RLU(REPORT LAYOUT UTILITY)交互式定义打印报表的格式分布 DFU(DA TA FILE UTILITY)快速定义、创建面向数据录入、查询或文件维护STRDFU QUERY/400获取外部描述数据库文件信息STRQRY CL(CONTROL LANGUAGE)调用AS/400的所有系统功能。简化操作,控制工作流程,设置作业运行环境等 AS/400三级存储结构 库(LIBRARY)——数据库文件(FILE)——成员(MEMBER) 一级目录——二级目录——三级目录 字段是用来描述某一属性的一组值;字段定义是对字段属性的说明 记录是把一组字段放在一起命名,用来说明某一事物;记录格式是对记录中所有字段的简单说明以及对各字段排序的说明 文件是已命名的一组记录,文件说明是对文件所有的记录格式和存取路径的说明,数据库文件分为数据文件和源文件,数据文件就是程序中使用的物理文件和逻辑文件。 物理文件(*FILE,PF-DTA):在SQL中称做表(TABLE),含有系统实际存储的数据,每个物理文件只有一个固定长度的记录格式。CRTPF 逻辑文件(*FILE,LF):在SQL中称做表(VIEW),它不含有实际数据,依附于物理文件,可以描述一个或多个物理文件的记录(JOIN逻辑文件)。CRTLF 源文件(*FILE,PF-SRC):是系统用来建立源程序(RPGLE、CLLE、C)或源物理文件(PF)等目标的源说明CRTSRCPF 库名:存放该应用系统的源程序库就命名为SGM SRC,存放该应用系统目标的库可命名为SGM OBJ CRTLIB 源文件名:存放程序的源文件叫R+PGM+SCF,存放物理文件和逻辑文件定义的源文件叫R+DTA+SCF 物理文件/逻辑文件名:学生成绩表命名为STGD+A其中一个逻辑名为STGD L1 程序名:SGM+0400+R‘R’:RPGLE,‘C’:C,C或CL,‘R’:报表等 DDS行中对物理文件有效的位置是: 6:A=DDS 17:R=RECORD NAME ,K=KEY FIELD NAME,BLANK=FIELD NAME)

Cobol基础

Cobol 语法基础 作成者审查者承认者 丁成远 变更履历 日期版本作成者备注 2005-03-01 1.0 丁成远初版

一.COBOL 语言的特点 最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定的逻辑关系,大量的分类排序;COBOL 比较接近英语,容易懂;通用性强,易植,COBOL结构严谨,层次分明。 二. COBOL的组成部分 1.标识部(IDENTIFICATION DIVISION):用于标识程序名。

IDENTIFICATION DIVISION. PROGRAM-ID. 程序名。 [AUTHOR。作者名。 ] [INSTALLATION。计算机设置场所。 ] [DATE-WRITTEN。源程序编写日期。 ] [DATE-COMPILED。源程序编译日期。 ] [SECURITY。保密程度。] 2.环境部(ENVIRONMENT DIVISION):用于说明程序运行的环境。ENVIRONMENT DIVISION. CONFIGRATION SECTION。 SOURCE-COMPUTER。源计算机名。 OBJECT-COMPUTER。目标计算机名。 [SPECIAL-NAMES。专用名描述项。 ] [INPUT-OUTPUT SECTION。 FILE-CONTROL。 {文件控制描述体} [I-O-CONTROL。输入输出控制描述体]] 3.数据部(DATA DIVISION):用于说明程序中涉及的所有数据。4.过程部(PROCEDURE DIVISION):是程序的核心部分,它决定计算机应进行什么操作。

COBOL语言基础教程

cobol语言基础培训教程 2009年04月23日 | 5:23 下午分类:大型机|Mainframe | 标签:cobol 数据类型、COBOL 程序举例、cobol入门、cobol教程、cobol语言、大型机培训 | CHAPTER 1 COBOL 概述 COBOL 是Common Business Oriented Language 的缩写。它不仅是商业数据处理的理想语言, 而且广泛用于数据管理领域,因此COBOL 语言也被称为”用于管理的语言”。 一。COBOL 语言的特点 最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定的逻辑关系,大量的分类排序;COBOL比较接近英语,容易懂;通用性强,易移植,COBOL结构严谨,层次分明。 二。COBOL的组成部分: 1。标识部(IDENTIFICATION DIVISION):用于标识程序名。 2。环境部(ENVIRONMENT DIVISION):用于说明程序运行的环境。 3。数据部(DATA DIVISION):用于说明程序中涉及的所有数据。 4。过程部(PROCEDURE DIVISION):是程序的核心部分,它决定计算机应进行什么操作。 三。最简单的COBOL 程序举例: COL 1 —6 7 8 12—72 73—80 IDENTIFICATION DIVISION。 PROGRAM-ID。 PSAMPLE1。 ENVIRONMENT DIVISION。 DATA DIVISION。 PROCEURE DIVISION。 DISPLAY ’THIS IS A COBOL PROGRAM.’ STOP RUN。 四。COBOL 源程序的书写格式: 第1 至 6 列为”标号区”。第7列为”续行标志区” 第8至此11列,称为”A区”。程序中有些内容如部头,节头,段头,层号 01,层号 77 及文件 描述符FD等应从A区开始写。 第12至此72列,称为”B区”。写程序中的正文部分。如过程部中的句子只能从B区开始写。 第73至80列,称为”注释区”。 五。COBOL字符集包括:

cobol基本语法

基本語法 一、COBOL基本語法 一、cobol的书写格式(每行) 1、前6列为序号区(一般不编辑) 2、第7列为标示列,仅可以写如下几个标示符。 a. “*”注释符(注释当前行的代码) b “-“字符串连接符 3、第8列---11列为A区,包括以下内容。 a 部、节名。 b 层号01 4、第12列---72列为B区,过程部的程序必须写在B区中。 5、第72以后部分不能编辑。 二、cobol的语法结构 (几大部分) 1、标示部(IDENTIFICATION DIVISION):提供程序的一般性文档说明。 2、环境部(ENVIRONMENT DIVISION): 提供程序外部有关的项目。 a.配置节(CONFIGURATION SECTION) ①.指定源计算机(SOURCE-COMPUTE). ②.目标计算机(OBJECT-COMPUTE). b. 输入输出节(INPUT-OUTPUT SECTION). 文件的物理路径的定义。 方法二:(过程部中动态指定文件) SELECT FILE-LOG ASSIGN TO SELECT-FILE ORGANIZATION IS LINE SEQUENTIAL. 在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。 3、数据部(DATA DIVISION)。 程序中的变量都在数据部中定义,Cobol中没有全局变量和局部之分。(变量的类型结构参照5.变量类型) a. 文件节(FILE SECTION) 给环境部定义的文件指定一个RECORD变量,读写文件用: FD FILE-LOG. 01 RECORD-LOG PIC X(2000). b. 工作存储节 定义程序中用到的临时变量。 a) COBOL变量定义需要加层号(表示层次关系), ·层号从01开始 如: 01 I PIC X(10). ·组合项 如: 01 WORK-AREA.

COBOL语言测试试卷(一)

COBOL语言测试试卷(一) 一、选择题(共10分) 1、关于COBOL语言,下述描述中正确的是:() A.COBOL可以用于开发操作系统。 B.COBOL还可以用于开发编译器。 C.COBOL主要用于编写面向商业的应用程序。 D.如今比较少用COBOL开发应用程序。 2、不属于COBOL程序的部的是:() A.过程部。 B.程序部。 C.数据部 D.环境部 3、COBOL代码中最小的单位是:() A. Division B. Section C. Sentence D. Statement 4、COBOL程序中的数据在哪个部中定义?() A.过程部。 B.环境部。 C.数据部 D.定义部 5、COBOL程序中如果有环境部的话,应置于:() A.过程部之后定义部之前。 B.定义部之后过程部之前。 C.定义部之后数据部之前。 D.数据部之后过程部之前。 6、定义部中不可缺少的段名是:() A.PROGRAM-ID B.AUTHOR C.FILE SECTION D.PROGRAM 7、COBOL程序中一般变量在哪里定义?() A.定义部 B.环境部 C.数据部的FILE SECTION D.数据部的WORKING-STORAGE SECTION 8、在过程部中,可以没有的是:() A.SECTION B.PARAGRAPH C.SENTENCE D.STATEMENT 9、当一个COBOL编译器区分A区和B区的时候,必须从B区开始的是:() A.段名 B.节名和01级数据 C.部名 D.过程部里的Sentences。 10、在COBOL程序中,下列用户自定义的名称有效的是:() A.This result B.-Grosspay C.Grosspay- D.Gross-pay 二、判断题(共20分)

COBOL经典面试题库(中文)

COBOL经典面试题库 Q1:列举COBOL的DEVISION A1:标识部,环境部,数据部,过程部 Q2:COBOL有哪些可用的数据类型 A2:字符型(这里指的是包含字母和数字),字母型,数字型 Q3:INITIALIZE这个词做了些什么 A3:将字母,字符,数字区域都置成空格(置空),将数字区置0,FILLER和OCCURS DEPENDING ON项不处理 Q4:77层有什么作用 A4:基本层数据项,不能用做细分别的层,也不能被细分 (来源:) Q5:88层有什么作用 A5:条件逻辑层 Q6:66层有什么作用 A6:重命名层 Q7:IS NUMERIC这个子句怎么确定(也就是说确定句子的真值) A7:IS NUMERIC用在字符项,带符号数字,浮点数,不带符号数。如果目标项只含0~9则返回TRUE。但是,如果待测项目是个带符号数,那么他就含有0-9还有+和- 05 ARRAY1 PIC X(9) OCCURS 10 TIMES. 05 ARRAY2 PIC X(6) OCCURS 20 TIMES INDEXED BY WS-INDEX Q8:COBOL中怎么建表/数组 A8:如上. Q9:OCCURS 子句能用在第一层吗 A9:不能 Q10:索引和下标有什么区别 A10:下标可以指定数组中任意中位置的元素(只要知道其下标),下标只能是数字型常量或者数字型变量(但是不能在指定的时候修改,如:A(K+1)这样是不行的,要修改的话要在指定的外部改,如:ADD 1 TO K,而索引的话是从表头/数组头开始检索(以BY N的指定检索规律往后滚) 再者,索引只能通过PERFORM, SEARCH 和SET来修改,如果要在一个表中使用SEARCH, SEARCH ALL,那这个表就要有索引(因为SEARCH, SEARCH ALL的参数中指定索引,所以即使其有很多限制还是得用它)

大型机COBOL程序之简易报表打印

COBOL实验报告2 一,实验目的 1,能够利用cobol程序实现一个报表的编辑和制作。 2,能够对文件进行操作,比如说:打开,关闭,读和写3,了解COBOL的常用语句和一些常用的数据类型, 能够利用编辑型数据实现数据的友好输出。 4,能够运用sdsf修改程序中的错误 5,学会编写稍微复杂的COBOL程序。 二,实验原理和内容 1,修改UTE20.COBOL.MURACH.EXERCISE(RPT1000X) 使之正常运行。 2,在RPT1000原有基础上改进成增强的报表打印程序。 3,利用给定的数据和格式独立的制作一个报表 三,实验环境 PC机和TSO下的ISPF环境 四,实验步骤

1,步骤1和步骤2:修改 UTE20.COBOL.MURACH.EXERCISE(RPT1000X) 使之正常运行,并在此基础上改进成增强型的报表打印程序。 1.1 代码: 000100 IDENTIFICATION DIVISION. 000200 000300 PROGRAM-ID. RPT1000. 000400 000500 ENVIRONMENT DIVISION. 000600 000700 INPUT-OUTPUT SECTION. 000800 000900 FILE-CONTROL. 001000 001100 SELECT CUSTMAST ASSIGN TO CUSTMAST. 001200 SELECT SALESRPT ASSIGN TO SALESRPT. 001300 001400 DATA DIVISION. 001500 001600 FILE SECTION. 001700

COBOL语法和文法

COBOL语法和文法 REDEFINES 可以用不同的变量描述同一内存。 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还是PART_TYPE_B还是PART_TYPE_C。 规则: PART_TYPE_B和PART_TYPE_C长度不能大于PART_TYPE_A。 数据项不能有VALUE。 01层不能用REDEFINES. PART_TYPE_B和PART_TYPE_C中不能有OCCURS. PICTURE 定义基本项目的具体长度,格式,数据类型。可以简写成PIC. 格式字符串最多30个字符,可以包含下列字符: A 字母A-Z,a-z,空格 B 插入空格 P 标量字符,代表字段中不显示的小数点位置 S 代数符号,实际显示取决于项目的USAGE V 小数点位置 X 任何字符 Z 抑制前头的0并转换成空字符 0 插入0 9 数字0~9 / 插入/ , 插入,(逗号不能作为字符串的最后一位,最后时逗号是分隔符) 。插入。 * 抑制前头的0并转换成* + 正值插入+,负值插入- - 正值插入空格,负值插入- $ 插入美元号 CR 正值插入两个空格,负值插入CR DB 正值插入两个空格,负值插入DB 例子: 03 VAR PIC AAAAA. STATE变量长度为5个字符,不能有数字,等价于03 STATE PIC A(5)。

COBOL试题答案

一、选择题(15分)(含多项选择) 1、不属于COBOL程序的部的是:(B ) A.过程部。 B.程序部。 C.数据部 D.环境部 2、COBOL程序中的数据在哪个部中定义?(C ) A.过程部。 B.环境部。 C.数据部 D.标识部 3、COBOL程序中如果有环境部的话,应置于:(C ) A.过程部之后标识部之前。 B.标识部之后过程部之前。 C.标识部之后数据部之前。 D.数据部之后过程部之前。 4、标识部中不可缺少的段名是:(A ) A.PROGRAM-ID B.AUTHOR C.FILE SECTION D.PROGRAM 5、COBOL程序中一般变量在哪里定义?(D ) A.标识部 B.环境部 C.数据部的FILE SECTION D.数据部的WORKING-STORAGE SECTION 6、下列关于过程部的说法正确的是:(C ) A.过程部中可以不定义节但是必须定义段 B.过程部中可以不定义段但是必须定义节 C.过程部中可以不定义节和段,节和段是根据需要定义的 D.所有程序都是在过程部中以STOP RUN来结束的 7、下面是COBOL合法数据名的是:(ABD ) A.W ANG B.TAN-1 C.12345 D.END-OF E.PROGRAM F.GROSS-$ G.SECTION 8、关系运算符的优先顺序正确的是(A ) A.NOT > AND > OR B.OR> NOT > AND C.AND > NOT > OR D.NOT > OR > AND 9、下记语句表示A/B=>C的是(B ) A.DIV A INTO B GIVING C. B.DIV A BY B GIVING C 10、下记哪些方法可以显示出…ABCD?六个字符(A,C ) A. PIC X(6) VALUE "'ABCD'". 说明:V ALUE后依次为空格双引号单引号ABCD单引号双引号 B. PIC X(6) V ALUE ''ABCD''.说明:V ALUE后依次为空格单引号单引号ABCD单引号单引号 C. QUOTE ?ABCD? QUOTE 11、COBOL对文件的操作以为单位的(B ) A.整个文件 B.记录 C.字段

实验五COBOL程序的编译与运行

实验五 COBOL程序的编译与运行 实验所属系列:操作系统高级试验 实验对象:本科 相关课程及专业:大型机系统管理,计算机专业 实验类型:课程设计 实验时数: 2 ●实验目的 熟悉PCOM及ISPF环境;熟悉在大机系统编译连接与运行基本COBOL 程序的方法。 ●实验内容与要求 1.首先使用由老师分配的IBM的主机用户名和密码登陆大型机 2.建立相应数据集: 1)建立分区数据集<用户名>.E,根据下图初始化数据集的参数,该参 数只是参考,需要根据系统实际或者指导老师要求进行调整。 2)用同样方法建立分区数据集<用户名>.

3)建立名为<用户名>.的数据集,参数Record format改为U。 3.在数据集<用户名>.E中建立一个member,并输入一下COBOL程序: 4.输入编译JCL程序,并编译源程序为目标文件 1)在<用户名>.中建立名为CTEST1的MEMBER,然后在其中输入如 下JCL程序: 注意,程序中的斜体部分应该换成实验者的用户名。 2)然后输入SUB提交该JCL程序,返回值如果不是0,请检查JCL程 序是否有错。若有错,修改后重新提交。输出结果可以在SDSF的H 里面看见。 5.输入运行的JCL程序,并运行编译结果 1)在<用户名>.中建立名为CTEST1的MEMBER,然后在其中输入如 下JCL程序:

注意,程序中的斜体部分应该换成实验者的用户名。 2)然后输入SUB提交该JCL程序,返回值如果不是0,请检查JCL程 序是否有错。若有错,修改后重新提交。输出结果可以在SDSF的H 里面看见。如果输出不是想要的结果,请检查COBOL源程序。 6.控制台方式运行编译程序 1)在ISPF首页选6,输入如下命令: allocate fi(sysout) fi(sysin) da('*') 并运行。该命令的目的是定义标准输出和输入。 2)进入<用户名>.数据集,在名为TEST1的MEMBER前输入CALL后 回车。即可以在屏幕上看见运行结果。 实验思考 1.为什么数据集<用户名>.的参数Record format要设为U?

Cobol基本语法总结

コボル基本語法 一、COBOL基本語法 compla項目使用的Cobol是Micro Focus 公司生产的Cobol,采用在HP-UNIX上运行。 一、cobol的书写格式(每行) 1、前6列为序号区(一般不编辑) 2、第7列为标示列,仅可以写如下几个标示符。 a. “*”注释符(注释当前行的代码) b “/“注释符(注释当前行的代码,程序编译时,强制程序清单另起一页,不建议使用) c “-“字符串连接符 d “D”DEBUG行标示符(程序为DEBUG模式时,标有该标示符的语句行代码执行,否则和注 释行效果一样) 3、第8列---11列为A区,包括以下内容。 a 部、节名。 b 层号01 4、第12列---72列为B区,过程部的程序必须写在B区中。 5、第72以后部分不能编辑。 二、cobol的语法结构(几大部分) 1、标示部(IDENTIFICATION DIVISION):提供程序的一般性文档说明,本项目只保留程序名 (PROGRAM-ID)一项。 2、环境部(ENVIRONMENT DIVISION): 提供程序外部有关的项目。 a.配置节(CONFIGURATION SECTION) ①.指定源计算机(SOURCE-COMPUTE). ②.目标计算机(OBJECT-COMPUTE). ③.设置debug模式(SOURCE-COMPUTE H9000V WITH DEBUGGING MODE) ④. 指定读环境变量设置. SPECIAL-NAMES. ENVIRONMENT-VALUE IS CNS-ENV-PARM ENVIRONMENT-NAME IS CNS-ENV-NAME. b. 输入输出节(INPUT-OUTPUT SECTION). 文件的物理路径的定义。 方法一:(写死文件路径) SELECT FILE-LOG ASSIGN "/usr3/WSI/commonlog/WSI1101.log" ORGANIZATION IS LINE SEQUENTIAL. 方法二:(过程部中动态指定文件) SELECT FILE-LOG ASSIGN TO SELECT-FILE ORGANIZATION IS LINE SEQUENTIAL. 在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。 方法三:(环境变量中动态指定文件)

VSAM文件笔记

要在COBOL中使用文件,要在3个不同的部中放上信息。 环境部,要有程序使用的每个文件的文件控制项目(FILE-CONTROL)。这个项目将程序中使用的文件名与程序外的实际文件联系起来。这些项目还定义文件的组织和访问方式。 数据部,要有每个文件的文件描述符(FD)项目,就是数据定义。 过程部,放上处理语句,OPEN,READ,WRITE,DELETE等。 环境部中主要是FILE-CONTROL和I-O-CONTROL.I-O-CONTROL很少使用。 SELECT[OPTIONAL]file-name ASSIGN TO DEV/FILE [RESERVE N[AREA/AREAS]] [FILE STATUS IS VAR] SELECT必须是第一句,其他顺序无关。file-name是程序中传递使用的文件名,相当于实际文件的一个别名。OPTIONAL用于执行可能不存在的文件。 ASSIGN将file-name连接到实际的外部设备或文件。(TO好像可以省略。)RESERVE指定文件缓冲区。 FILE STATUS指定一个变量存放文件状态,这个变量应该已在WORKING-STORAGE SECTION中定义。 对于顺序文件,还有声明如下: [ORGANIZATION IS SEQUENTIAL]可选,缺省为顺序组织文件 [ACCESS MODE IS SEQUENTIAL]可选。顺序文件只允许顺序访问[PADDING CHARACTER IS char]指定文件在固定块长设备上时键块所用的字符,char为一个字符的数据项。 [RECORD DELIMITER IS STANDARD/usr-define]指定如何确定变长纪录的长度。 顺序文件例子: SELECT file-name ASSIGN TO"/usr/file1" FILE STATUS IS file-status 对于相对文件,还有声明如下: [ORGANIZATION IS RELATIVE]是相对文件必须的 [ACCESS MODE IS SEQUENTIAL[RELATIVE KEY IS data]]或者 [ACCESS MODE IS RANDOM/DYNAMIC RELATIVE KEY IS data] 访问方式有3种,缺省是SEQUENTIAL。 RELATIVE KEY可选。如果存在,则文件读取操作顺利完成后,data用所读取纪录的关键字更新。data应为文件的纪录区中没有的整数数据项。 相对文件的例子: SELECT file-name ASSIGN TO"/usr/file2" ORGANIZATION IS RELATIVE ACCESS MODE IS DYNAMIC RELATIVE KEY IS DAY-NUMBER FILE STATUS IS file-status 对于索引文件,还有声明如下: [ORGANIZATION IS INDEXED]是索引文件必须的 [ACCESS MODE IS SEQUENTIAL/RANDOM/DYNAMIC]RECORD KEY IS data1

cobol 知识点集锦

cobol 知识点集锦 COBOL数据类型 计息是银行的一项重要业务,包括日常代理客户收、付计算客户利息和年度计息等。目前,这些工作大多数是在IBM ES9000主机的SAFE应用系统平台上进行,该系统联 机程序和联机计息程序是用IBM 370汇编语言实现的。为方便汇编语言读写,在VSAM文 件存储的数据中,数据存放格式进行了特殊的定义。如日期存放采用X(3)型,01年03月15日,存入EBCD码为X‘010315’。在进行年度计息时,为了实现各种复杂的运算工作,一般采用COBOL语言来实现各种运算。而采用COBOL语言读取X(3)型数据时,读出的是字符型数据,不能直接进行运算,必须转换为COBOL数据类型的数据后才能进行相应处理。 如刚才的X‘010315’,需要转换为内部十进制数据X‘0010315C’。本文介绍一种用COBOL语言实现字符型X(3)与内部十进制数据相互转换的方法。 由X(3)型转换为内部十进制 由于日期数据总是大于零,在COBOL语言的工作单元节定义变量DATE-FIRST后,再追加 定义COBOL语言的最小数据单元X‘000C’,即十进制12。由于重定义DATE-CASE为DATE-CHANGE后,DATE-CHANGE是原日期数据的1000倍,于是要在过程部将DATE-CHANGE除以1000。 首先,在COBOL程序WORKING-STORAGE SECTION. 中定义如下内容: WORKING-STORAGE SECTION. 01 DATE-CASE. 02 DATE-FIRST PIC X(3). 02 DATE-SIGN PIC 9(4) COMP VALUE 12.;定点二进制数 01 DATE-CHANGE REDEFINES DATE-CASE PIC 9(9) COMP-3. ;内部十进制数据 01 DATE-HEX PIC X(3). ;转换前数据 01 DATE-DEC PIC S9(7)COMP-3 . ;转换后数据 然后,在过程部PROCEDURE DEVISION.中加入如下语句: PROCEDURE DEVISION. MOVE DATE-HEX TO DATE-FIRST . COMPUTE DATE-CHANGE = DATE- CHANGE / 1000.

相关文档
最新文档