PL/I 语言 资源管理与 RAII 模式

PL/I阿木 发布于 9 天前 4 次阅读


阿木博主一句话概括:PL/I语言中的资源管理与RAII模式实现

阿木博主为你简单介绍:
本文将探讨PL/I语言中的资源管理与RAII(Resource Acquisition Is Initialization)模式。RAII模式是一种在面向对象编程中常用的资源管理技术,旨在确保资源(如内存、文件句柄等)在对象的生命周期内得到正确管理。本文将介绍PL/I语言中的资源管理机制,并展示如何通过RAII模式在PL/I中实现资源的有效管理。

一、

PL/I(Programming Language One)是一种高级程序设计语言,由IBM于1964年推出。它结合了多种编程语言的特点,如COBOL、FORTRAN和ALGOL,旨在提高程序的可读性和可维护性。在PL/I中,资源管理是一个重要的概念,尤其是在处理外部资源(如文件、数据库连接等)时。RAII模式提供了一种有效的资源管理策略,可以减少资源泄漏和异常处理中的错误。

二、PL/I语言中的资源管理机制

1. 动态内存分配
PL/I提供了动态内存分配的功能,使用`ALLOCATE`语句可以动态地分配内存。在资源使用完毕后,使用`DEALLOCATE`语句释放内存。

pl/i
DCL A(1) B(1) C(1) ;
ALLOCATE A(100) ;
ALLOCATE B(200) ;
ALLOCATE C(300) ;
DEALLOCATE A ;
DEALLOCATE B ;
DEALLOCATE C ;

2. 文件操作
PL/I提供了丰富的文件操作功能,包括打开、读取、写入和关闭文件。在文件操作过程中,需要确保文件在不再使用时被正确关闭。

pl/i
DCL FILE-CONTROL (F1 FILE(OUTPUT) DISK(OUTPUT-FILE));
DCL FILE-STATUS (F1-STATUS);
DCL F1-FILE-RECORD-KEY (F1-KEY);
DCL F1-FILE-RECORD-LENGTH (F1-LENGTH);
DCL F1-FILE-ORGANIZATION (F1-ORGANIZATION) VALUE ('LINE');
DCL F1-ACCESS (F1-ACCESS) VALUE ('SEQUENTIAL');
DCL F1-FILE-NAME (F1-NAME) VALUE ('OUTPUT-FILE');

OPEN FILE(F1) ;
WRITE FILE(F1) FROM ('Hello, World!');
CLOSE FILE(F1);

三、RAII模式在PL/I中的实现

RAII模式的核心思想是将资源的分配与释放绑定到对象的生命周期。在PL/I中,可以通过以下方式实现RAII模式:

1. 使用结构体封装资源
将资源封装在一个结构体中,并在结构体的构造函数中分配资源,在析构函数中释放资源。

```pl/i
DCL DECLARE-STRUCTURE ResourceManager ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-CONTROL ;
DCL DECLARE-STRUCTURE ResourceManager-DESC ;
DCL DECLARE-STRUCTURE ResourceManager-EXTENT ;
DCL DECLARE-STRUCTURE ResourceManager-LENGTH ;
DCL DECLARE-STRUCTURE ResourceManager-VALUE ;
DCL DECLARE-STRUCTURE ResourceManager-VOLATILE ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-CONTROL ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-DESC ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-EXTENT ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-LENGTH ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-VALUE ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-VOLATILE ;
DCL DECLARE-STRUCTURE ResourceManager-CONTROL-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-CONTROL-DESC ;
DCL DECLARE-STRUCTURE ResourceManager-CONTROL-EXTENT ;
DCL DECLARE-STRUCTURE ResourceManager-CONTROL-LENGTH ;
DCL DECLARE-STRUCTURE ResourceManager-CONTROL-VALUE ;
DCL DECLARE-STRUCTURE ResourceManager-CONTROL-VOLATILE ;
DCL DECLARE-STRUCTURE ResourceManager-DESC-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-DESC-DESC ;
DCL DECLARE-STRUCTURE ResourceManager-DESC-EXTENT ;
DCL DECLARE-STRUCTURE ResourceManager-DESC-LENGTH ;
DCL DECLARE-STRUCTURE ResourceManager-DESC-VALUE ;
DCL DECLARE-STRUCTURE ResourceManager-DESC-VOLATILE ;
DCL DECLARE-STRUCTURE ResourceManager-EXTENT-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-EXTENT-DESC ;
DCL DECLARE-STRUCTURE ResourceManager-EXTENT-EXTENT ;
DCL DECLARE-STRUCTURE ResourceManager-EXTENT-LENGTH ;
DCL DECLARE-STRUCTURE ResourceManager-EXTENT-VALUE ;
DCL DECLARE-STRUCTURE ResourceManager-EXTENT-VOLATILE ;
DCL DECLARE-STRUCTURE ResourceManager-LENGTH-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-LENGTH-DESC ;
DCL DECLARE-STRUCTURE ResourceManager-LENGTH-EXTENT ;
DCL DECLARE-STRUCTURE ResourceManager-LENGTH-LENGTH ;
DCL DECLARE-STRUCTURE ResourceManager-LENGTH-VALUE ;
DCL DECLARE-STRUCTURE ResourceManager-LENGTH-VOLATILE ;
DCL DECLARE-STRUCTURE ResourceManager-VALUE-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-VALUE-DESC ;
DCL DECLARE-STRUCTURE ResourceManager-VALUE-EXTENT ;
DCL DECLARE-STRUCTURE ResourceManager-VALUE-LENGTH ;
DCL DECLARE-STRUCTURE ResourceManager-VALUE-VALUE ;
DCL DECLARE-STRUCTURE ResourceManager-VALUE-VOLATILE ;
DCL DECLARE-STRUCTURE ResourceManager-VOLATILE-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-VOLATILE-DESC ;
DCL DECLARE-STRUCTURE ResourceManager-VOLATILE-EXTENT ;
DCL DECLARE-STRUCTURE ResourceManager-VOLATILE-LENGTH ;
DCL DECLARE-STRUCTURE ResourceManager-VOLATILE-VALUE ;
DCL DECLARE-STRUCTURE ResourceManager-VOLATILE-VOLATILE ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS ;
DCL DECLARE-STRUCTURE ResourceManager-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS-ACCESS