这是 PRINT 属性文件的默认 PUT LIST 行为。来自 IBM Enterprise PL/I for z/OS Language Reference,在 Stream-oriented Data Transmission -> LIST -> PUT list-directed(强调我的)下:
数据列表项的值被转换为字符表示(图形除外)并传输到数据流。空格分隔传输的连续数据值。对于 PRINT 文件,项目根据程序选项卡设置进行分隔(请参阅“PRINT 属性”)。
下一个手册部分讨论 PRINT 属性。在这里我们有
通过列表和数据导向的数据传输传输的数据值在左边距和实现定义的预设选项卡位置上自动对齐。
由于您省略了 FILE,因此您的 PUT 将转到默认的 FILE(SYSPRINT)。SYSPRINT 被隐式定义为 FILE ENVIRONMENT(F RECSIZE(121)) OUTPUT PRINT STREAM(请参阅语言参考中的输入和输出 -> 文件属性 -> 文件常量,以及定义和使用连续数据集 -> 使用带有流 I 的 PRINT 文件/O 在程序员指南中)。IIRC,默认值为每 24 个,每行 5 个标签,与 1960 年代后期 PL/IF 早期常见的旧 120 字节打印机兼容。这可以通过声明一个 PLITABS 结构来修改(在前面提到的手册部分中描述)。
LIST 和 DATA 导向的 I/O 旨在成为快速和肮脏的 I/O 接口,很少考虑输出格式(但对输入非常宽容)。EDIT 更适合格式化输出,但它确实显示了很多用于输入和输出的 FORTRAN 根。就个人而言,对于使用格式化输出的传统报表和记录输入,我会使用记录 I/O,这类似于标准 COBOL I/O。