ACCESSPLI 到 COBOL 的转换-数据类型 【不施Mainframe的或拘留无知道,冷门的言语】

此文非常小众,只是怀念认识一下汤圆里面的开大型机的恋人。文章内容是及时几年做言语转换积累来下的材料。全部原创的情节,觉得有些心疼,想被开大型机开发的冤家,不过,也绝非特别的地方上,借园子的人气找点朋友。

材料有800K的Excel和一个VBNET写的电动转换软件。

数据类型整理

数据类型

实例

说明

BIT

DCL ENDTR         BIT(1);

1单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 ,EXTERNAL ENTRY,BIT 于COBOL里面就废除或者以外方法实现

*

数据部中出现的INCLUDE有或是数据结构,有或是初始化程序!这个需要经过外部的COPY词情报文件来确定.

数据类型别转换说明

BIT 【COBOL没有针对承诺类型】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实例:

DCL ENDTR         BIT(1);

识别方法:

看清是否具有为 BIT( 开头的单词

参数

INIT

初始值

LENGTH

长度

REPEAT

双重次数,或者是多维数组

COMMENT

注释

NAME

名称

*

COMMENT,NAME,REPEAT 为所有成员的共通参数,下面的文档将略。

转换方法:

COBOL的 字符型(X)

*

若此BIT型只是长度也1之之所以做标记的变量,可以大概的故字符型代替。

*

倘这个BIT型是从文本中读取的话,8独BIT作为一个CHAR。然后通过字符转2进制的子程序来当标志位使用。

PL1:

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

COBOL:

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

CHAR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EXTERNAL ENTRY 【COBOL没有针对许类型】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实例:

DCL MSTWZ00       EXTERNAL ENTRY;

识别方法:

看清是否持有 EXTERNAL 和 ENTRY

参数:

不存在

转换方法:

直接删除

*

急需拿表面程序名为记录下来,在CALL方法时,将做外内部过程,外部程序的判断标准。

正式要重新考虑

FILE 【暂时对应方案不明】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实例:

DCL MSFILE        RECORD INPUT;

识别方法:

若是出现单独的 FILE 关键字 ,可以看清是 FILE类型。由于 FILE
关键字可以简单,所以无克动用 FILE 关键字来作识别的冲。

起文本的读取方式及说,有RECORD单位读取和STREAM流读博鲜种植,从文本之意及说,有INPUT,OUTPUT和UPDATE,EXTERNAL

使起重要字 RECORD 或者 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,RECORD KEY,ORGANIZATION

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.

相关文章