记录行/输出行中的第一个计算记录在COBOL输出中变为空白

记录行/输出行中的第一个计算记录在COBOL输出中变为空白,cobol,cobol85,cobol.net,netcobol,procobol,Cobol,Cobol85,Cobol.net,Netcobol,Procobol,我的计算是正确的。但是输出文件的仅第一个计算的记录变为空白,并影响所有记录 在输出文件[A5-SalaryReport-5A.out]中,您可能会看到第一条记录的位置为空 这是我的输入文件[A5.dat] 这是我的COBOL项目文件.cbl[A5-SalaryReport-5A.cbl] 我知道这不是一件需要弄清楚的事情,我很感激你提供的任何答案 干杯 我看到的问题是ws-position的正确值显示在下一条记录上;这是因为打印行后确定了ws-calc位置。这导致第一条记录上出现空白,并且以下打

我的计算是正确的。但是输出文件的仅第一个计算的记录变为空白,并影响所有记录

在输出文件[A5-SalaryReport-5A.out]中,您可能会看到第一条记录的位置为空

这是我的输入文件[A5.dat]

这是我的COBOL项目文件.cbl[A5-SalaryReport-5A.cbl]

我知道这不是一件需要弄清楚的事情,我很感激你提供的任何答案


干杯

我看到的问题是
ws-position
的正确值显示在下一条记录上;这是因为打印行后确定了
ws-calc位置。这导致第一条记录上出现空白,并且以下打印行的值不正确

我建议将用于确定
ws-calc位置的代码移动到需要之前<代码>120个流程行
220个流程rpt行
包含这些建议

IF
代码不应包括最初表示的
。它会导致遗漏一些值,其中yrs serv中的
15
07
02
。这些特定值导致(或将导致)先前确定的位置出现在输出中。这一变化已在下文作出

还有这条线

         05 ws-emp-name        pic 9(15).
应该是

         05 ws-emp-name        pic x(15).


我看到的问题是
ws-position
的正确值显示在下一条记录上;这是因为打印行后确定了
ws-calc位置。这导致第一条记录上出现空白,并且以下打印行的值不正确

我建议将用于确定
ws-calc位置的代码移动到需要之前<代码>120个流程行
220个流程rpt行
包含这些建议

IF
代码不应包括最初表示的
。它会导致遗漏一些值,其中yrs serv中的
15
07
02
。这些特定值导致(或将导致)先前确定的位置出现在输出中。这一变化已在下文作出

还有这条线

         05 ws-emp-name        pic 9(15).
应该是

         05 ws-emp-name        pic x(15).


请不要对我们大喊大叫!用大写字母书写通常被认为是大喊大叫。请不要对我们大喊大叫!用大写字母书写通常被认为是大声喊叫。这很有效!我总是后悔我愚蠢的错误。谢谢成功了!我总是后悔我愚蠢的错误。谢谢
         05 ws-emp-name        pic x(15).
       120-process-lines.
      * Decide whether to output to report or data file
      *
           if il-88-type-K
               perform 210-process-data-lines
           else
               add 1                       to ws-line-count
*              if ws-line-count = 1
*                  perform 120-print-headings
*              end-if
               perform 220-process-rpt-lines
               if   ws-line-count > ws-lines-per-page
                 or ws-eof-flag   = "y"
                   perform 230-print-page-totals 
               end-if
           end-if. 

*  NOTE: Moved code to determine position to 225-determine-position

*
*         Read next input record for the next iteration of perform loop
*     
           read input-file
               at end
                   move "y"                to ws-eof-flag.

       220-process-rpt-lines.
*
*
      *  Count staff and accumulate salary for page subtotals
      *
           add 1                           to ws-s-staff-count.
           add in-prsnt-sly                to ws-s-salary.
*
*
*        Output Salesperson Detail Line
*
*         Clear the detail line
           move spaces                     to ws-record-line.
*
*
*         Move input lines(sales-file) to output lines(report-line)
*
           move in-emp-no                  to ws-emp-num.
           move in-name                    to ws-emp-name.
           move in-yrs-serv                to ws-years.
           move in-prsnt-sly               to ws-salary.
           move ws-page-count              to page-num.
           move ws-o-staff-count           to ws-oth-staff-count.
           perform 225-determine-position.
           move ws-calc-position           to ws-position.
*
           write output-line               from ws-record-line.


       225-determine-position. 
*
*          Logic to calculate the POSITION based on years of xp..
*      
           if in-yrs-serv > 15
               then
               move "ANALYST"              to ws-calc-position
           else
**
               if in-yrs-serv > 7
                 then
                   move "SEN PROG"         to ws-calc-position
               else
***
                   if in-yrs-serv > 2
                     then
                       move "PROG"         to ws-calc-position
                   else
****
                       move "UNCLASSIFIED" to ws-calc-position
****
                   end-if
***
               end-if
**
           end-if.