0

我正在尝试通过动态分配文件

OPEN FILE (OUT) TITLE('DSN(XXXXX.XXXXX.MILTEST),LRECL(80)'); 

文件已创建,但记录大小为默认值。我尝试了 env 变量和备用名称,DD_DDNAME但不断得到

引发了 UNDEFINEDFILE 条件 ABENDU4038

4

1 回答 1

0

试试这个在 Enterprise PL/I 中创建一个新文件:

Dcl theLrecl = 42;
 Dcl userDataset char(44) init('USER.DATASET');
dcl fileTitle char(88);                           
fileTitle ='DSN('||trim(userDataset)||'),NEW,CYL,SPACE(1,1),KEEP,LRECL('||theLrecl||')';       

Put Skip List('fileTitle=',trim(fileTitle));  /* optionally show the title for debugging purposes */    
dcl tempFile file print;                          
OPEN FILE(tempFile) title(trim(fileTitle));       

注意:'title' 字符串不能包含空格;所以修剪它以确保。
更多详细信息位于http://www-01.ibm.com/support/docview.wss?uid=isg1PK74015

哎呀,误读的问题;这是知识中心关于 LRECL 的片段;

LRECL LRECL 选项与 RECSIZE 选项相同。

LRECL (n) 如果 LRECL 未指定且未由 LINESIZE 值暗示(TYPE(FIXED) 文件除外,默认值为 1024。

RECSIZE RECSIZE 选项指定数据集中记录的长度 n。

RECSIZE 512 (n) - 对于区域和固定长度的数据集,RECSIZE 指定数据集中每条记录的长度;对于所有其他数据集类型,RECSIZE 指定记录可能具有的最大长度。

这两个选项的全部细节出现在第 6 章:使用“Enterprise PL/I for z/OS - Programming Guide Version 4 Release 4”的数据集和文件

于 2016-08-04T02:34:20.267 回答