STRING动词的行为

hsi*_*sim 2 cobol mainframe

我正在阅读COBOL程序文件,我正在努力理解STRING命令在以下示例中的工作方式

STRING  WK-NO-EMP-SGE                              
   ','                                         
   WK-DT-DEB-PER-FEU-TEM                       
   ','                                       
   WK-DT-FIN-PER-FEU-TEM                     
DELIMITED  BY  SIZE                           
INTO  UUUUUU-CO-CLE-ERR-DB2                   
Run Code Online (Sandbox Code Playgroud)

我对它的作用有三种可能的理解:

  1. 要么代码将每个变量连接到UUUUUU-CO-CLE-ERR-DB2每个值并将每个值分开',',最后一个变量由size分隔;
  2. 要么代码将每个变量连接到UUUUUU-CO-CLE-ERR-DB2每个值并将每个值分开',',但是所有值都是按大小分隔的(这意味着DELIMITED BY SIZE在这种情况下,它适用于在string命令中传递的所有值;
  3. 或者每个变量由特定字符分隔,例如,WK-NO-EMP-SGE将由',',WK-DT-DEB-PER-FEU-TEM','WK-DT-FIN-PER-FEU-TEM将分隔DELIMITED BY SIZE.

我的哪个读书实际上是好的?

Bil*_*ger 5

这是STRING的语法图(来自Enterprise COBOL语言参考):

语法图

现在您需要知道如何阅读它.

幸运的是,同一文件告诉你如何:

如何阅读语法图

使用以下描述来阅读本文档中的语法图:

.按照行的路径从上到下,从上到下阅读语法图.

>> ---符号表示语法图的开头.

--->符号表示语法图在下一行继续.

> ---符号表示语法图从前一行继续.

---> <符号表示语法图的结束.除完整语句之外的句法单元的图表以> ---符号开头,以--->符号结尾.

.所需项目显示在水平线(主路径)上.

.可选项目显示在主路径下方.

.当您可以从两个或更多项目中进行选择时,它们会垂直显示在堆栈中.

如果必须选择其中一个项目,则主路径上将显示堆栈中的一个项目.

如果选择其中一个项目是可选项,则整个堆栈将显示在主路径下方.

.返回到主线上方左侧的箭头表示可以重复的项目.

堆栈上方的重复箭头表示您可以从堆叠项目中进行多项选择,或重复单个选项.

.变量以斜体小写字母显示(例如,parmx).它们代表用户提供的名称或值.

.如果显示标点符号,括号,算术运算符或其他此类符号,则必须将它们作为语法的一部分输入.

所有这些意味着,如果你遵循它,你的2号是正确的.

您可以使用分隔符(当您没有固定长度的数据时)或只使用大小.任何未明确分隔的项目都由下一个DELIMITED BY语句分隔.

STRING需要注意的一点是,在您的情况下无关紧要的是,如果数据短于目标,则目标字段不会填充空格.对于可变长度数据,您需要在执行STRING之前将字段清空到空格.