PLI 到 COBOL 的更换-数据类型 【不搞Mainframe的或是看不懂,冷门的言语】

此文相当小众,只是想认识一下汤圆里面包车型客车做大型机的朋友。作品内容是这几年做言语转换积累来下的质感。全体原创的始末,觉得多少可惜,想给做大型机开发的心上人,可是,也从不特意的地方发布,借园子的人气找点朋友。

资料有800K的Excel和二个VBNET写的自行转换软件。

数据类型整理

数据类型

实例

说明

BIT

DCL ENDTR         BIT(1);

3个Bit位,平时用做FLAG

CHAR

DCL EDSTR         CHAR(99);

字符

EXTERNAL
ENTRY

DCL MSTWZ00       EXTERNAL ENTRY;

表面程序

FILE

DCL MSFILE        RECORD INPUT;

外表文件

FIXED

DCL MONCNT(3)     FIXED(15);

如果FIXED 没有 BIN 或者 DEC 来修饰

FIXED BIN

DCL KBTBL(4)      BIN FIXED(15) ;  

2进制数

FIXED DEC(DEC)

DCL IPCNT         FIXED DEC(15,0);                       

10进制数

FUNCTION

DCL DATE          BUILTIN;

PL1函数

G

DCL TENNM         G(20)

扶桑语项目

PIC

DCL YY            PIC’Z9′,  

编写制定用字符

PTR

DCL EX1           PTR; 

指针

*

FUNCTION ,EXTE智跑NAL ENTENVISIONY,BIT 在COBOL里面早已打消也许应用其余事办公室法完成

*

数据部中冒出的INCLUDE有恐怕是数据结构,有大概是开头化程序!那么些要求经过外部的COPY句情报文件来分明.

数据类型别转换表明

BIT 【COBOL没有对应类型】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实例:

DCL ENDTR         BIT(1);

识别方法:

认清是不是有所以 BIT( 开端的单词

参数

INIT

初始值

LENGTH

长度

REPEAT

重新次数,也许是多维数组

COMMENT

注释

NAME

名称

*

COMMENT,NAME,REPEAT 为拥有成员的共通参数,下边包车型大巴文书档案将不难。

转换方法:

COBOL的 字符型(X)

*

若果那几个BIT型只是长度为1的用做标示的变量,能够回顾的用字符型代替。

*

假若那么些BIT型是从文件中读取的话,几个BIT作为2个CHATiguan。然后通过字符转2进制的子程序来作为标志位使用。

PL1:

DCL AAA   BIT(8)   INIT(‘00000001’B)

COBOL:

01 AAA   PIC X(01) VALUE X’01’. 

CHAR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EXTE奥迪Q5NAL ENT哈弗Y 【COBOL没有对应类型】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实例:

DCL MSTWZ00       EXTERNAL ENTRY;

识别方法:

认清是或不是富有 EXTETiggoNAL 和 ENT普拉多Y

参数:

不存在

转换方法:

直白删除

*

亟需将表面程序名记录下来,在CALL方法时,将做外内部进度,外部程序的度量尺度。

标准必要再考虑

FILE 【权且对应方案不明】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实例:

DCL MSFILE        RECORD INPUT;

识别方法:

一经出现单独的 FILE 关键字 ,能够看清是 FILE类型。由于 FILE
关键字能够不难,所以无法应用 FILE 关键字来作为识别的依照。

从文件的读取形式上说,有RECOWranglerD单位读取和STREAM流读取二种,从文件的效劳上说,有INPUT,OUTPUT和UPDATE,EXTE中华VNAL

假若现身根本字 RECOMuranoD 或然 STREAM 的还要,还现出主要字 INPUT 可能 OUTPUT
或然 UPDATE,则能够判明那是个文本定义。

参数

ISPRINT

是否为PRINT类型

FILEFORMAT

RECORD或者STREAM

FILEIO

INPUT,OUTPUT,UPDATE,EXTERNAL

转换方法

       FD %filename                   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

       RECORD CONTAINS   %length CHARACTERS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

       BLOCK CONTAINS   0 RECORDS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

       LABEL RECORD    IS STANDARD

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

       RECORDING MODE IS F.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

       01 %filename-REC   PIC X(%length).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

%filename-REC只须求注脚程序的长度就能够了,程序不应用那些变量

每一种文件,文件状态和终结标志需求定义在数据部里

    01 MSFILE-ST   PIC X(02).

 

 

 

 

 

 

 

 

 

 

 

 

 

文件状态标志[可选]

 

 

 

 

 

 

    01 SYSINX-ST   PIC X(02).

 

 

 

 

 

 

 

 

 

 

 

 

 

文件状态标志[可选]

 

 

 

 

 

 

    01 MSFILE-EOF PIC X(01) VALUE’0′.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    01 SYSINX-EOF PIC X(01) VALUE’0′.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

VSAM文件还索要钦命 ACCESS MODE,RECO奥德赛D KEY,O兰德TucsonGANIZATION

FIXED(FIXED BIN,FIXED DEC)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

FIXED 假若没有显著的 BIN 也许 DEC 的验证,暗中认可为DEC。

实例:

DCL MONCNT(3)     FIXED(15);

识别方法:

要是只具有 FIXED 关键字,不管是或不是享有 DEC,都看成 FIXED DEC。

倘使只持有 FIXED 关键字,还享有主要字 BIN, 则作为 FIXED BIN。

参数

INIT

初始值

LENGTH

长度

转换方法

FIXED BIN:

FIXED BIN(15)

PIC S9(4) COMP

FIXED BIN(31)

PIC S9(8) COMP

FIXED DEC:

DEC(n)

PIC S9(n) COMP-3

FIXED DEC(n)

PIC S9(n) COMP-3

FIXED(n) 

PIC S9(n) 

FIXED省略DEC的动静时,COMP-3也大约

*

FIXED BIN 一时半刻不考虑 15,31以外的图景。

链接:PL1技术和注意点

FUNCTION 【COBOL没有对应类型】

 

 

 

链接:函数处理

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实例:

DCL DATE          BUILTIN;

识别方法:

假设持有 BUILTIN 关键字。

参数:

不存在

转换方法:

直白删除

G

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实例:

DCL TENNM         G(20)

识别方法:

不无首要字 G

参数

INIT

初始值

LENGTH

长度

转换方法:

01 TENNM         PIC G(20)    USAGE DISPLAY-1

*

G型伊始化大概赋值时候,私下认可的是拉长 0x0E 和 0x0F 。

出于这些缘故,G型实际能够存放字符大小和定义大小相差1。假设是N型的话,没有那一个难题

亟待表明

假定G型拥有初步值的话,借使开头值里有左右括号(或许还有任何未知的标记),大概有些汉字的内码是反正括号的话,会招致编写翻译错误。

提议把装有汉字伊始值的地方的单引号用双引号代替(那几个题材或许同样出现在任何的VALUE中)

PIC

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实例:

DCL YY            PIC’Z9′

识别方法:

PIC 关键字

参数:

INIT

初始值

PIC

PIC格式

转换方法:

对此一般PIC格式,能够完全使用PL1的格式

01 YY                        PIC Z9

上边三种景况,必须尤其处理

1.带有 “/” 的项目 和 带有 “.”的项目

DCL DATE            PIC’9999/99/99′

供给基于将 / 以及 /前后项目拆除与搬迁

01 YY                        PIC 9999

DATE

 02 YEAR    PIC (4)9

 02 FILLER PIC X INIT(‘/’)

预防先导化

 02 MONTH   PIC (2)9

 02 FILLER PIC X INIT(‘/’)

提防开端化

 02 DAY     PIC (2)9

?须要承认:COBOL里面 / 符号不占地点,PL1之中占地方?

2.带有”Y”的项目

Y的效果是将0转换为空格

Specifies that a zero in the specified digit position is replaced

unconditionally by the blank character

DCL DATE            PIC ‘99Y99’

须要用Z来分别改写

01 DATE.

 02 YEAR    PIC 99.

 02 MONTH   PIC Z99.

 

 

 

 

基于项目经验和客户QA的控制,将Y改为9

 

 

 

 

 

 

 

*

恐怕还有别的不可能向来转换的景况

*

—-9V.999

V 怎么转移,有的意况一律拆分开来?

9999.99.99

PTR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实例:

DCL EX1           PTR;

识别方法:

以 PTR 结尾

参数:

不存在

转换方法:

EX1                        USAGE IS POINTER.

相关文章