PL/I 语言 公共代码库高效封装与复用的工具类开发案例

PL/I阿木 发布于 7 天前 5 次阅读


阿木博主一句话概括:PL/I 语言公共代码库高效封装与复用的工具类开发案例

阿木博主为你简单介绍:
PL/I(Programming Language One)是一种历史悠久的高级编程语言,广泛应用于大型主机系统。随着软件项目的复杂性增加,代码的复用和封装变得尤为重要。本文将探讨如何使用PL/I语言开发一个高效的公共代码库工具类,以实现代码的复用和封装,提高开发效率。

一、

在软件开发过程中,代码的复用和封装是提高开发效率、降低维护成本的关键。PL/I语言作为一种强大的编程工具,在大型主机系统中有着广泛的应用。由于PL/I语言的特性,代码的复用和封装相对困难。本文将介绍如何开发一个PL/I语言的公共代码库工具类,以实现代码的高效封装和复用。

二、公共代码库工具类的需求分析

1. 封装性:工具类应具备良好的封装性,将常用的功能封装成独立的模块,方便调用。

2. 可复用性:工具类应具有较高的可复用性,减少重复代码,提高开发效率。

3. 易用性:工具类应具有良好的易用性,方便开发者快速上手。

4. 可维护性:工具类应具有良好的可维护性,便于后续修改和扩展。

三、公共代码库工具类的实现

1. 工具类设计

根据需求分析,我们可以设计以下工具类:

(1)字符串处理工具类:提供字符串的拼接、截取、转换等功能。

(2)日期时间工具类:提供日期时间的格式化、计算等功能。

(3)文件操作工具类:提供文件的读取、写入、删除等功能。

(4)加密解密工具类:提供数据的加密解密功能。

2. 工具类实现

以下是一个简单的字符串处理工具类的实现示例:

```pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. STRING-UTILS.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STRING-FILE ASSIGN TO "STRING-FILE".

DATA DIVISION.
FILE SECTION.
FD STRING-FILE.
01 STRING-RECORD.
05 STRING-VALUE PIC X(100).

WORKING-STORAGE SECTION.
01 WS-STRING-VALUE PIC X(100).
01 WS-STRING-LENGTH PIC 9(4).
01 WS-INDEX PIC 9(4).

PROCEDURE DIVISION.
PERFORM INITIALIZE-UTILS
PERFORM STRING-OPERATIONS
PERFORM TERMINATE-UTILS.

INITIALIZE-UTILS.
PERFORM STRING-INITIALIZE.

STRING-INITIALIZE.
MOVE SPACES TO WS-STRING-VALUE
MOVE 0 TO WS-INDEX.

STRING-OPERATIONS.
PERFORM STRING-CONCATENATE
PERFORM STRING-CUT
PERFORM STRING-TO-UPPER
PERFORM STRING-TO-LOWER.

STRING-CONCATENATE.
STRING 'Hello' DELIMITED BY SIZE 'World' INTO WS-STRING-VALUE.

STRING-CUT.
STRING 'Hello World' DELIMITED BY SIZE 5 INTO WS-STRING-VALUE.

STRING-TO-UPPER.
STRING 'hello world' INTO WS-STRING-VALUE
UNSTRING WS-STRING-VALUE DELIMITED BY ' ' INTO WS-STRING-VALUE WS-INDEX
PERFORM STRING-TO-UPPER-CHAR.

STRING-TO-LOWER.
STRING 'HELLO WORLD' INTO WS-STRING-VALUE
UNSTRING WS-STRING-VALUE DELIMITED BY ' ' INTO WS-STRING-VALUE WS-INDEX
PERFORM STRING-TO-LOWER-CHAR.

STRING-TO-UPPER-CHAR.
IF WS-INDEX > 0
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'A' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'B' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'C' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'D' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'E' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'F' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'G' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'H' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'I' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'J' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'K' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'L' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'M' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'N' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'O' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'P' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'Q' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'R' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'S' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'T' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'U' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'V' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'W' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'X' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'Y' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING 'Z' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '0' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '1' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '2' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '3' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '4' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '5' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '6' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '7' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '8' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '9' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '.' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ',' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ';' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '?' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '!' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '@' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '$' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS-INDEX DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING '%' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING ' ' DELIMITED BY SIZE 1 INTO WS-STRING-VALUE
STRING WS