REXX -- -- PDS中输出文件的长度。

问题描述 投票:1回答:1

能否,请你帮我出个主意:我在TSO中写一个REX程序,读取PDS1中的所有文件,并让我们说逐行将所有文件写入PDS2.我的问题是。

  1. 我读一个1500行的文件1; 我在PDS2中写一个1500行的文件1。
  2. 我读了一个200行的文件2;我写了一个200行的文件2。1500 PDS2中的行数。额外的行是来自文件1!
  3. 我读取了一个2500行的文件3;我在PDS2中写入了一个2500行的文件3。

看不出我的问题出在哪里。代码如下。

ADDRESS TSO "ALLOC DA("newDS") FI(infile4) SHR"
ADDRESS TSO "ALLOC DA("newDSO") FI(outfile)"   
................
 S= RES.0                
 DO q = 7 TO S           
    RES.q = STRIP(RES.q) 
  ...........
    ADDRESS TSO "EXECIO * DISKR infile4 (STEM LINE. FINIS" 
    do until i > line.0   
      ADDRESS TSO "EXECIO * DISKR infile4 (STEM LINE. FINIS" 
    ......
      ADDRESS TSO "EXECIO * dISKW outfile (STEM lineo. FINIS"
    ...... 
      i = i + 1 
    end
    ADDRESS TSO "FREE FI(infile4)" 
    ADDRESS TSO "FREE FI(outfile)" 
END

先谢谢你

file-io rexx
1个回答
1
投票

另一种方法是做类似这样的伪代码,完全不用干变量。 这样做还有一个好处,就是在处理巨大的文件时不会占用内存...

do forever
    "execio 1 diskr indd"  /* Read 1 record */
    if (rc <> 0) or some other conditions -- look it up in the book )
    then do while queued()>0 /* Make sure the queue is empty b4 we leave */
            pull .
         end
         leave
    end
    parse pull data_record  /* Mixed-case data */

    new_data_record = somemod(old_data_record)

    queue new_data_record
    "execio 1 diskw outdd" /* write 1 record */
    if (rc<>0) then I have an I/O error writing (full disk?)    
end
"execio 0 diskw outdd (finis"   /* Close the output dataset */

IBMzOS V2R4手册sikja300_v2r4.pdf

© www.soinside.com 2019 - 2024. All rights reserved.