PL/1中PUT SKIP(n)未正常换行及SYSPRINT行首符号问题咨询
PL/1中PUT SKIP(n)未按预期工作及SYSPRINT行首符号解析
一、PUT SKIP(n)未按预期工作的原因
你误解了PUT SKIP(n)的语义:它根本不是“跳转到第n行”,PL/1里的SKIP(n)是相对换行操作——意思是从当前输出位置开始,跳过n-1个空行,然后在第n个新行上输出后续内容。
举个例子:你代码第7行的PUT SKIP(3) LIST('HELLO 1 !'),实际执行逻辑是:
- 先从当前行(第6行输出后的行尾)换行到下一行
- 再额外换行2次(产生2个空行)
- 最后在第3个新行输出
HELLO 1 !
你看到的输出里没有空行,大概率是因为你的PL/1运行环境中,SYSPRINT的行标识(行首的1、-符号)和输出内容的换行逻辑有交互,或者LIST/DATA输出的默认格式会压缩空行;另外,代码第8行的PUT LIST(X,Y,Z) SKIP是先输出内容再换行,第9行的PUT DATA(X,Y,Z) SKIP(3)是先输出数据再跳过2个空行,输出里没看到空行可能是输出设备(比如老式终端或打印系统)对连续空行做了合并处理,或是编译器的输出优化导致空行未被实际打印。
二、SYSPRINT行首1、-符号的含义
这些是PL/1程序输出到SYSPRINT时的行状态标识,不同符号对应不同行的属性:
1:表示这一行是新输出页的第一行(页首行),一般是程序启动后第一次输出的行,或是换页后的第一行。-:表示这一行是续行——上一行的输出内容太长,超过了SYSPRINT的一行宽度,被拆分成多行,这一行是上一行内容的延续部分。
内容的提问来源于stack exchange,提问作者Nupur
相关产品推荐
相关产品推荐

