Oxyd

Hist. Pension Fund RF renumberer of data

Apr 12th, 2014
640
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Classic Rexx  */
  2.  
  3. /* Перенумератор пачек с ИС, версия следующая (наверное вторая) ;)         */
  4. /* По совету друзей, уменьшен размер и упрощён алгоритм. По просьбе        */
  5. /* пользователей добавлена фича записи реального количества ИС в заголовок */
  6.  
  7. call RxFuncAdd 'SysLoadFuncs', 'REXXUTIL', 'SysLoadFuncs'
  8. call SysLoadFuncs
  9.  
  10. InDir= '.\IN\*.*'
  11. OutDir='.\OUT\*.*'
  12.  
  13. call SysFileTree InDir, 'File' , 'BO'
  14.  DO j=1 TO File.0
  15.   Say 'Обрабатывается файл: 'File.j
  16.   Fi=Right(file.j,12)
  17.    DO
  18.     ISI='.\in\'||Fi
  19.     ISO=Fi||'.tmp'
  20.     ISO2='.\out\'||Fi
  21.  
  22.     fc=Stream(ISI,'C',Open Read)
  23.     fc=Stream(ISO,'C',Open Write)
  24.  
  25.    /* ----- Заголовок оставляем как есть ----- */
  26.  
  27.      DO 4
  28.       Str=LineIn(ISI)
  29.       fc=LineOut(ISO,Str)
  30.      END
  31.  
  32.    /* ----- Основной цикл - перенумерация ----- */
  33.  
  34.     i=1
  35.      DO while Lines(ISI)
  36.       Str=LineIn(ISI)
  37.       len=Length(i)
  38.       tar=Substr(Str,8,len)
  39.        IF compare(tar,i) > 0 THEN
  40.         DO
  41.          Str=DelStr(Str,8,len)
  42.          fc=Insert(i,Str,7)
  43.          fc=LineOut(ISO,fc)
  44.         END
  45.        ELSE fc=LineOut(ISO,Str)
  46.        i=i+1
  47.      END
  48.  
  49.     fc=Stream(ISI,'C',Close)
  50.     fc=Stream(ISO,'C',Close)
  51.  
  52.    /* ----- Вывов в правильный файл ----- */
  53.  
  54.     fc=Stream(ISO,'C',Open Read)
  55.     fc=Stream(ISO2,'C' Open Write)
  56.  
  57.    /* ----- Заголовок оставляем как есть (почти) ----- */
  58.  
  59.      DO 3
  60.       Str=LineIn(ISO)
  61.       fc=LineOut(ISO2,Str)
  62.      END
  63.  
  64.    /* ----- Корректное количество ИС в пачке (та самая фича)  ----- */
  65.  
  66.       i=i-1
  67.       Str=LineIn(ISO)
  68.       Str=DelStr(Str,15)
  69.       Str=Str||i
  70.       fc=LineOut(ISO2,Str)
  71.  
  72.    /* ----- Обрезание хвостов ----- */
  73.  
  74.     i=1
  75.      DO while Lines(ISO)
  76.       Str=LineIn(ISO)
  77.       pos=Length(i)+8
  78.       tar=Substr(Str,pos,1)
  79.        IF compare(tar,',') > 0 THEN
  80.         DO
  81.          Str=DelStr(Str,pos,1)
  82.          fc=LineOut(ISO2,Str)
  83.         END
  84.        ELSE fc=LineOut(ISO2,Str)
  85.        i=i+1
  86.      END
  87.  
  88.     fc=Stream(ISO2,'C',Close)
  89.     fc=Stream(ISO,'C',Close)
  90.  
  91.     '@Del ' ISO '> Nul'
  92.    END
  93.  END j
RAW Paste Data