当前位置:文档之家› Cobol基本语法总结

Cobol基本语法总结

Cobol基本语法总结
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打开前动态指定文件路径。

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

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中没有全局变量和局部之分。(变量的类型结构参照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).

05 STR-1 PIC X(10).

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

c.连接节

子程序的参数的定义。

4、过程部(PROCEDURE DIVISION)

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

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

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

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

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

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

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

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

c、程序结束。

·主程序 STOP RUN.

·子程序 GO BACK.

5、变量类型

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

a 字符串型

01 STRING-A PIC X(100).

100个字符长的变量,程序可以局部操作一个变量( STRING-A(start: length)如:

MOVE ALL “X”TO STRING-A(2:10)

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

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

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

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

c、在COBOL变量定义时,可以加入格式字符串字符。

d、不同类型变量间赋值。

整数

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

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

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

小数

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

小数部截去低位。

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

但小数部截去低位

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

e、字符型比较。

·字符串比较时,系统自动截去尾部空格(如“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、对于组合项成员的局部引用,应该如下:

01A-AREA.

05 STR-1 PIC X(10).

05 STR-2 PIC X(10).

01B-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.向控制台打印显示的信息(如果程序基于opentp1环境,该信息将写到opentp1的log文件中).

DISPLAY “DISPLAY RESULT:”STR-1 “@@”.

b、输出一个环境变量名。

DISPLAY WK-ENV-NAME UPON CNS-ENV-NAME.

3、接受语句ACCEPT

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

b、接受环境变量值。

ACCEPT WK-ENV-PARM FROM CNS-ENV-PARM

ON EXCEPTION

·············

NOT ON EXCEPTION

·············

END-ACCEPT.

4、四则运算

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

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

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

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

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

运算符如下:

+ 加

- 减

* 乘

/ 除

** 指数

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

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

01 A PIC X(10) VALUE SPACE.

01 B REDEFINES A PIC 9(10).

变量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(1) OF A.

7、检查替换语句INSPECT.

INSPECT A TALLYING N FOR ALL ‘X’.

·计算字符串A中含有‘X’字符的个数,结果赋给N.

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

·将字符串A中所有的‘X’字符用‘A’代替.

8、连结语句STRING

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 SIZE

INTO D .

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

9、IF语句

IF 语句包含以下三种:

·IF ( 条件)

THEN

语句(无“.”结束)

END-IF.

·IF ( 条件)

THEN

语句(无“.”结束)

ELSE

语句(无“.”结束)

END-IF.

·IF ( 条件)

THEN

语句(无“.”结束)

ELSE

IF ( 条件)

THEN

语句(无“.”结束)

END-IF

END-IF.

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

10关系运算符

注:

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

A1 IS NUMERIC

A1 IS NOT NUMERIC

11、PERFORM 语句

PERFORM XXX-RTN.

·调用子节,直到遇到第一个只包含EXIT语句的段中止,回到该调用语句的下一条语句。

EXIT只与它搭配有效。

所以节的定义规定如下:

XXX-RTN SECTION.

语句块········

XXX-EXT.

EXIT.

PERFORM XXX-RTN N TIMES.

·循环调用子节N次

PERFORM XXX-RTN UNTIL N> 30.

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

PERFORM UNTIL 表达式

语句·······

END-PERFORM.

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

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

END-PERFORM.

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

12、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.

13、另外,不同的COBOL系统提供了不同内部函数,建议少用内部函数,以下提供几个通用的内部函数·ORD 取得字符的ASICII码如:

MOVE FUNCTION ORD (“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)

二、PRO*COBOL基本語法

COMPLA使用的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 WSIT1101.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$LAPROC51” PASSWORD = “LAPROC”)EXEC SQL

CONNECT :USERNAME IDENTIFIED BY :PASSWD

END-EXEC.

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

EXEC SQL

CONNECT :UID

END-EXEC.

3)、静态SQL语句

·单条记录的检索

EXEC SQL

SELECT ENAME,

SAL,

COMM

INTO :HST-EMP-NAME,

:HST-SALARY,

:HST-COMMISSION:HST-COMM-IND

FROM EMP

WHERE EMPNO = :HST-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 WWWTMSG1

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 WWWTMSG1

SET MSG_1 = : HST-MSG-1,

MSG_2 = : HST-MSG-2

WHERE MSG_CD = : HST-MSG-CD

END-EXEC.

·删除

EXEC SQL

DELETE FROM WWWTMSG1

WHERE MSG_CD = : HST-MSG-CD

END-EXEC

·插入

EXEC SQL

INSERT

INTO WWWTMSG1(MSG_CD,

MSG_1,

MSG_2)

VALUES (:HST-MSG-CD,

:HST-MSG-1,

:HST-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语句都必须采用游标方式。

三、开发环境

一、概要

Compla项目的开发环境

·以HP UNIX B.11.11 为操作系统

·以OPENTP1 SERVER(日立制品)为APPLICATION SERVER,COMPLA所有的程序都基于OPENTP1.

·以MQ SERVER(INFOR STAR MQ ,IBM MQ的改造品)完成异步通信方式。

·以ORACLE SERVER 为数据库系统

二、通信处理方式

Compla项目采用两种处理方式RPC(同步),MQ(异步).

·MQ(Message Queue)方式

MQ 發信

MQ受信處理示意圖

如上图所示,AP制御以SUP的方式常驻于OPENTP1下,监视受信MQ SERVER,受信MQ SERVER

中一有MQ数据,AP制御就取出来,传给DB同期更新程序进行处理,更新关联

DB,发信方和

受信方以受信MQ SERVER隔离,互相不影响,完成异步处理,在项目开发中,主要开发DB同期更新,不涉及具体环境。

· RPC (Remote Process Call )方式

RPC方式为OPENTP1 SERVER 提供的进程间访问方式,由SUP( Service Use Process) 和 SPP ( Service Provide Process)组成。Compla项目就是制作若干SPP,常驻于OPENTP1中,供其它系统调用。如下具体介绍SUP 和 SPP的基本结构和基本函数.

·· SUP (服务使用者)

··· RPC OPEN (アプリケーションプログラムの開始)

01 RPC-OP-ARG.

02 REQEST PIC X(8) VALUE 'OPEN '.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

CALL 'CBLDCRPC' USING RPC-OP-ARG.

进入OPENTP1 环境

··· RPC ADM(ユーザサーバの開始処理完了の報告)

01 ADM-ARG.

02 REQUEST PIC X(8) VALUE 'COMPLETE'.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

02 FILLER PIC X(3).

CALL 'CBLDCADM' USING ADM-ARG.

如果SUP常驻OPENTP1下,该函数向OPENTP1报告注册信息。(不常驻OPENTP1下的SUP程序不调用该函数)··· RPC CALL (遠隔サービスの要求)

01 RPC-CALL-ARG1. (CALL-MAIN)

02 REQEST PIC X(8) VALUE 'CALL '.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

02 DESCRIPTOR PIC S9(9) COMP VALUE ZERO.

02 S-NAME PIC X(32) VALUE SPACE.

02 G-NAME PIC X(32) VALUE 'WSISPPSV'.

01 RPC-CALL-ARG2. (INPUT-DATA)

02 INDATA-LENG PIC S9(9) COMP VALUE ZERO

02 INDATA PIC X(40) VALUE SPACE.

01 RPC-CALL-ARG3. (OUTPUT-DATA)

02 OUTDATA-LENG PIC S9(9) COMP VALUE ZERO

02 OUTDATA PIC X(40) VALUE SPACE..

CALL 'CBLDCRPC' USING RPC-CALL-ARG1 RPC-CALL-ARG2 RPC-CALL-ARG3.

调用OPENTP1下注册的指定组(G-NAME)内的指定服务(S-NAME)。注意在SUP程序中调用前必须指定入力デー

タ的长度(INDATA-LENG)和出力データ的长度(OUTDATA-LENG)

··· RPC CLOSE

01 RPC-CL-ARG.

02 REQEST PIC X(8) VALUE 'CLOSE '.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

CALL 'CBLDCRPC' USING RPC-CL-ARG

退出OPENTP1环境

·· SPP (服务提供者)

如图所示,一个SPP Module 由一个SPP MAIN ,多个SPP SERVICE ,一个SPP SERVICE DEFINE 三部分组成。一个SPP Module 在OPENTP1下以一个组的方式注册。

···SPP MAIN

RPC OPEN (アプリケーションプログラムの開始)

01 RPC-OP-ARG.

02 REQEST PIC X(8) VALUE 'OPEN '.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

CALL 'CBLDCRPC' USING RPC-OP-ARG.

进入OPENTP1环境

RPC MAINLOOP (SPPのサービス開始)

01 RSV-ARG.

02 REQUEST PIC X(8) VALUE 'MAINLOOP'.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

CALL 'CBLDCADM' USING ADM-ARG.

该SPP MODULE 中所有的SPP SERVICE 都完成初始化(完成数据部前的运行),进入监视状态。

RPC CLOSE

01 RPC-CL-ARG.

02 REQEST PIC X(8) VALUE 'CLOSE '.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

CALL 'CBLDCRPC' USING RPC-CL-ARG

退出OPENTP1环境

SPP MAIN 只调用相关的OPENTP1或其它库函数,创建RPC环境,和SPP SERVICE 及其其它应用程序不存在任何调用关系。

··· SPP SERVICE

SPP SERVICE 和一般子程序基本上一样,主要区别在于SPP SERVICE 的接口形式固定。

入力データ

INPUT-DATA

INPUT-DATA-LENGTH

出力データ

OUTPUT-DATA

OUTPUT-DATA-LENGTH

(データ、データ长度的位置关系和SUP中RPC CALL的データ、データ长度的位置关系不同) ··· SPP SERVICE DEFINE

该文件只包含如下一行内容。

entry “SPP SEVICE NAME ”;

··另外将SUP或SPP常驻OPENTP1下还需以下内容

···ユーザーサービス定義ファイル(文件名不带任何后缀,并且不超过8个字母)

SPP ユーザーサービス定義ファイル

set module = "SPPMD"

set service_group = "SPPGP"

set service = "SPPSV1=SPPSV1P","SPPSV2=SPPSV2P" ·····

其中SPPSV1 ,SPPSV2 为向OPENTP1注册的SERVICE名,SPPSV1P ,SPPSV2P为对应SPP SERVICE 程序的

PROGRAM-ID.

SUPユーザーサービス定義ファイル

set module = "SUPMD"

以上是两种ユーザーサービス定義ファイル的基本内容,实际项目中还包含许多环境设置。

···相关命令

# 将编译生成的 MODULE拷贝到/opt/betran50/aplib/ 或 /opt/debug/WSI/exe/中。

# 将编辑好的ユーザーサービス定義ファイル以betran50用户置于/opt/betran50/conf内

# 可以使用以下命令启动,停止等服务。

## dcsvstart -u ユーザーサービス定義名启动指定服务

## dcsvstop ユーザーサービス定義名停止指定服务

## dcsvstop -f ユーザーサービス定義名强制停止指定服务

## prcls 当前启动中的所有服务列表

## tail -f /tmp2/betran50.log 跟踪OPENTP1的LOG文件

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基本语法教学内容

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).

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

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基本語法 一、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语法和文法 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基本語法 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打开前动态指定文件路径。 方法三:(环境变量中动态指定文件)

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.

COBOL谭浩强版学习笔记

COBOL资料整理 COBOL语言概述 一.COBOL程序的结构 1.部 IDENTIFICATION DIVISION 标识部 ENVIRONMENT DIVISION 环境部 DA TA DIVISION 数据部 PROCEDURE DIVISION 过程部 2.节(SECTION)和段(PARAGRAPH) (1)部-节-段 (2)标识部下面不设节,直接设段 (3)过程部可以设节,下面再设段,也可以直接设段 3.句子、语句和子句 每一段由若干句子(Sentence)组成,一个句子以句号加上一个以上的空格来结束。 句子由语句(Statement)组成。 语句中又可以包含若干子句(clause),每一个子句也有一个动词(但这个动词往往是可以省略的),它指定某一方面的特定功能。 二.COBOL源程序的书写格式 1.1-6列:标号区 2.第7列:续行标志区(“-”为续行,“*”为注解) 3.8-11列:A区(部头,节头,段头,层号01、77,文件描述符FD等) 4.12-72列:B区(正文) 5.73-80列:注释区 三.COBOL字符 数字0-9,大写字母A-Z,小写字母a-z, 专用字符15个{ + - * / = , . ; ‘( ) < > $ 空格} 四.常量 1.数值常量 (1)小数点不能多于一个,而且不能出现在常数最右边。 (2)数值常量的长度不能超过18位数字。 (3)至少要有一个数字,不能有多于一个符号。 (4)数字间不能有空格,空格是分界符。 2.非数值常量 (1)用’’把字符串包起来 (2)假如要把’’放到非数值常量中,用QUOTE保留字, 如MOVE QUOTE ‘CHINA’QUOTE TO A (3)长度不应超过120个字符。

cobol学习笔记

cobol学习笔记(1) COBOL入門 COBOLとは? 2010/06/29 16:35 COBOL面向商业的通用语言 (Common business Oriented Language) コボル ? 1960.04 CODASYL-60 ? 1968. ANSI COBOL(COBOL68)第1次規格 ? COBOL74 第2次規格 ? COBOL85 第3次規格 ? COBOL2002 第4次規格 COBOL是Common Business-Oriented Language(公用面向商业的语言)的缩写,主要供数据处理、数据收集及分析之用。COBOL自60年代初开始广泛应用于计算机应用领域(商业和其他领域)。事实上,除了商业之外,各种管理工作都广泛使用COBOL,如各种统计工作,财会工作,企业计划编制,作业制度,情报检索,人事管理等。COBOL针对商业世界的使用,是真正商用应用程序开发的首选语言。 1.适于数据处理领域。 2.采用英语语法的高级语言,可读性、可维护性、可移植性较强。 3.通用性强,标准化程度较高。 4.结构严谨,层次分明。 5.缺点是比较繁琐。 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学习笔记(2)COBOL的程序结构 IDENTIFICATION DIVISION 标识部見出し部 2010/06/29 20:44 COBOL程序由4部(DIVISION)组成:IDENTIFICATION DIVISION.(标识部)、ENVIRONMENT DIVISION.(环境部)、DATA DIVISION.(数据部)、PROCEDURE DIVISION.(过程部),而每个部又由若干节 (SECTION)组成。

cobol介绍

英文缩写: COBOL (Common business Oriented Language) 中文译名: COBOL语言 解释: 一种适合于商业及数据处理的类似英语的程序设计语言。这种语言可使商业数据处理过程精确表达。 COBOL(面向商业的通用语言,又称为企业管理语言、数据处理语言等,Common Business Oriented Langauge)是最早的高级编程语言之一,是世界上第一个商用语言。 1 COBOL的历史 1959年5月,五角大楼委托格雷斯·霍波(G.Hopper)博士领导一个委员会并由Rear Admiral Grace Hopper公司主持开发,并于1961年由美国数据系统语言协会公布。正式发布于1960年4月,称为Cobol-60。1959年12月出现了第一个COBOL语言文本,并于1960年4月正式发表,因此也被称为COBOL-60。1968年美国国家标准委员会ANSI 又通过了新的标准ANSI COBOL X.3.23-1968。1972年国际标准化组织ISO将其作为ISO COBOL-72。1974年ANSI对COBOL-68作出了修订扩充,形成了ANSI COBOL X3.23-1974,随后1978年ISO采用其形成ISO COBOL-78,后来又提出了ANSI X3.23-85,增加了很多结构化程序设计的内容,ISO标准ISO1989:1985也采用了该标准。COBOL 标准还在不断地改进和完善,最新的标准COBOL 2002主体已经于2002年12月出版,其他部分还在不断地完善之中。现在最新的版本是Cobol-2002。 1963年,美国国家标准研究所(ANSI)进行了标准化,但是ANSI标准很少被遵循;因此,COBOL程序只是部分可移植的。 2 COBOL的重要性 经过40多年的不断修改、丰富完善和标准化,COBOL已发展为多种版本的庞大语言,在财会工作、统计报表、计划编制、情报检索、人事管理等数据管理及商业数据处理领域,都有着广泛的应用。 COBOL的重要性可以用这句话来描述:世界上70%的数据都是用COBOL语言处理的,并且90%的A TM事务处理用的都是COBOL语言。每天在线处理的COBOL事务有300亿次。500强中有492家(包括全部的100强)使用了COBOL语言,目前在COBOL方面的投资已经超过3万亿美元,,据称用COBOL书写的程序超过了1000亿行,并且以每年大约50亿行代码的速度在增长。 由于COBOL在商业领域的雄厚基础,而且COBOL主要是应用于银行、金融和会计行业等非常重要的商业数据处理领域。所以,即使对于具有相当经验的IT公司来说,重新编写COBOL语言的可靠的应用软件也是不实际或是从商业角度上并不可行的,而且还要花上很长的时间,只要大型机存在,COBOL就不会消失,即使是对电脑界产生巨大影响的“千年虫”(Y2K)也没有改变COBOL的命运。 3 COBOL的特点 COBOL是一种面向数据处理的、面向文件的、面向过程(POL)的高级编程语言,是一种功能很强而又极为冗长的语言。 COBOL适合于具有循环处理周期的环境(例如打印工资支票)以及数据操纵量相当大的环境。COBOL主要应用于商业数据处理领域,对各种类型的数据进行收集、存储、传送、分类、排序、计算及打印报表、输出图象是它的强项。 COBOL语法与英文很接近,即使不懂电脑的人也能看懂程序。 强大的文件处理功能,大量的数据通常以文件的形式存储在磁盘上。 仅提供了加、减、乘、除及乘方这五种简单的算术运算,因而不适于进行科学计算。 未来的COBOL将支持XML等Web时代的新技术。 4 COBOL的程序结构

COBOL语言概述

COBOL语言概述 一.COBOL程序的结构 1.部 IDENTIFICATION DIVISION 标识部 ENVIRONMENT DIVISION 环境部 DATA DIVISION 数据部 PROCEDURE DIVISION 过程部 2.节(SECTION)和段(PARAGRAPH) (1)部-节-段 (2)标识部下面不设节,直接设段 (3)过程部可以设节,下面再设段,也可以直接设段 3.句子、语句和子句 每一段由若干句子(Sentence)组成,一个句子以句号加上一个以上的空格来结束。 句子由语句(Statement)组成。 语句中又可以包含若干子句(clause),每一个子句也有一个动词(但这个动词往往是可以省略的),它指定某一方面的特定功能。 二.COBOL源程序的书写格式 1.1-6列:标号区 2.第7列:续行标志区(“-”为续行,“*”为注解) 3.8-11列:A区(部头,节头,段头,层号01、77,文件描述符FD等)4.12-72列:B区(正文) 5.73-80列:注释区 三.COBOL字符 数字0-9,大写字母A-Z,小写字母a-z, 专用字符15个{ + - * / = , . ; ‘ ( ) < > $ 空格 } 四.常量 1.数值常量 (1)小数点不能多于一个,而且不能出现在常数最右边。 (2)数值常量的长度不能超过18位数字。 (3)至少要有一个数字,不能有多于一个符号。 (4)数字间不能有空格,空格是分界符。 2.非数值常量 (1)用’’把字符串包起来 (2)假如要把’’放到非数值常量中,用QUOTE保留字, 如MOVE QUOTE ‘CHINA’QUOTE TO A (3)长度不应超过120个字符。 五.COBOL的数据关系 过程部初步 一.输入输出语句 1.ACCEPT(接收语句):直接从中断键盘或系统指定的输入设备上输入少量的数据。 语法:ACCEPT 标识符 [FROM 助忆名]

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 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). 基本語法 、 COBOL 基本語法 SELECT-FILE

COBOL经典面试题目

JCL ------Job Control Language(作业控制语言) @ JCL代表作业控制语言、JCL是一组控制语句,为需要处理的JOB提供必要的规范。 @ JCL每行80个字符,至今未变 @ JCL必须包括3个JCL基本语句 作业语句(JOB):表示一个作业的开始,提供必要的运行参数 执行语句(EXEC):标识一个作业步的开始,定义本作业步所要执行的程序或过程 数据定义语句(DD):用于描述应用程序所需要的数据文件。 @ /* 语句:表示流内数据结束或调用JES控制语句 @ JOB, 分隔符(/*), 或空语句 2. JOBLIB 或JOBCAT DD语句 3. DD * 或DATA语句 4. 任何 JES2 或 JES3 控制语句 @一个数据集的初次分配是什么 数据集建立时的空间 @一个数据集的主分配和从分配有什么区别 从分配是当要求更多空间时所分配的 @你如何创建一个临时数据集吗在哪里可以使用它们 可以创建临时数据集通过不指定任何DSNAME或指定DSN = &&TEMP。 我们把它们输出到在同意作业步上的工作。一旦作业完成,这个临时数据集就会被删除。 @甚么是S0C4错误 存储违反错误由多种原因决定,例,READING是一个美有打开的文件, @SD37, SB37, SE37 abends是甚么 表示磁盘空间不足 SD37没有指定的从分配 SB37终止卷,并且没有根多的卷被指定 SE37已经分配到最大16 extents @甚么是S322 abend 需要更多的CPU时间程序已经超过了默认的为该作业分配的CPU时间,陷入一个无限循环.. @TIME参数的意思是甚么 TIME=1440 表示甚么 TIME当程序需要更多的CPU时间时用于克服S322 abends TIME=1440表示作业的运行没有时间限制,即24小时。 @COND=EVEN 即使先前作业步异常终止,本作业步都要执行 @COND=ONLY 只有先前作业步异常终止,本作业步才执行 @如何在一个JCL中检查是否有语法错误 在JOB过程中,TYPERUN=SCAN或JSCAN.

COBOL语言知识点

1.DATA ITEM NAMING RULES: 长度为30个字节;字符包括A-Z,a-z,0-9和‘-’;横线不能出现在第一个或最后一个;COBOL 关键字用;至少包含一个字符。 2.DATA STRUCTER LEVEL NUMBER 77定义一个独立的变量 66重命名 88定义条件名 3.DATA TYPE Alphabetic, Alphanumeric, Alphanumeric-edited, Numeric, Numeric-edited https://www.doczj.com/doc/6b14890290.html,P-1,COMP-2,COMP-3,COMP,COMP-5 COMP-1:指定内部浮点项目(双精度),8个字节长 COMP-2:指定内部浮点项目(单精度),4个字节长 COMP-3:压缩十进制(1个字节有两位) COMP-4(COMP):二进制存储 COMP-3是IBM Mainframe特有,特意将一下: COMP-3 数据类型同样以二进制的形式保存在文件中,其占位数计算方法如下:占位数 =[ 定义长度 /2+1] [] 表示整 COMP-3 数据在文件中存储形式如下例: 例如:定义形式 -- 9(4) COMP-3, 占位数 =[ 定义长度 /2+1]=3 赋值: 1521 存储结果: 01 52 1F(F表示正数) 赋值: 0 存储结果: 00 00 0F COMP-3 带有符号位时,赋值为正时,最后半个字节为 16 进制 C ;赋值为负时,最后半个字节为 16 进制D 例如:定义形式 -- S9(4) COMP-3, 占位数 =[ 定义长度 /2+1]=3 赋值: -1521 存储结果: 01 52 1D (D 表示负数 ) 赋值: 1521 存储结果: 01 52 1C 注意:当 COMP-3 的数据定义无 S ,赋予负值时,最后半个字节仍为 F ,即无法显示负数 5.COBOL中常量 ZERO(ZEROS,ZEROES):数字令或者字符“0” SPACE(SPACES):空格 HIG-VALUE(HIGH-VALUES):将对应的二进制码全部置为1

相关主题
文本预览
相关文档 最新文档