/* korenspondencja seryjna Skrypt przygotowaî Daniel Sëk dla programu Asystent Pro */ address 'rexx_asystent' options results asBegin asSay "Korenspondencja seryjna" asAsk "Sprawdû, czy wybraîeô podkartotekë z osobami.|Program zakîada, ûe wiersz nr 1 zawiera nazwisko,|nr 2 imië, nr 7 oznaczenie pîci.|Czy wszystko zgadza sië ?" if RESULT = 0 THEN DO asEnd EXIT END asNumCards liczbakart = RESULT asSay "Mam "||liczbakart||" osób." ok = OPEN( out, "ram:listy", 'W' ) IF ok = 0 THEN DO Say "Niemoûliwe otworzenie pliku wyjôciowego" END ELSE DO DO nr = 1 TO liczbakart asSelectCard nr ok = OPEN( wzor, "AsystentPro:rexx2.0/wzór_listu", 'R' ) IF ok = 0 THEN DO Say "Niedostëpny plik AsystentPro:rexx2.0/wzór_listu" LEAVE END ELSE DO DO UNTIL ( EOF( wzor ) ) linia = READLN( wzor ) outlinia = "" ind = 1 poz = INDEX( linia, '[', 1 ) dlug = LENGTH( linia ) IF dlug > 0 THEN DO DO WHILE ( poz > 0 ) poz2 = INDEX( linia, ']', poz ) IF poz2 > 0 THEN DO outlinia = outlinia||SUBSTR( linia, ind, poz-ind ) rozkaz = SUBSTR( linia, poz+1, poz2-poz-1 ) kod = SUBSTR( rozkaz, 1, 1 ) IF kod == '#' THEN DO wiersz = SUBSTR( rozkaz, 2, LENGTH( rozkaz )-1 ) asGetField wiersz outlinia = outlinia||RESULT END ELSE IF kod == '?' THEN DO wiersz = SUBSTR( rozkaz, 2, LENGTH( rozkaz )-1 ) tmp1 = 4 tmp2 = INDEX( rozkaz, '|', tmp1 ) joker = SUBSTR( rozkaz, tmp1, tmp2-tmp1 ) asSetJoker joker asGetField wiersz asJoker RESULT war = RESULT tmp1 = tmp2 + 1 tmp2 = INDEX( rozkaz, '|', tmp1 ) IF war = 0 THEN DO tmp1 = tmp2 + 1 tmp2 = poz2 - poz END outlinia = outlinia||SUBSTR( rozkaz, tmp1, tmp2-tmp1 ) END ind = poz2 + 1 END poz = INDEX( linia, '[', poz+1 ) END IF dlug >= ind THEN outlinia = outlinia||SUBSTR( linia, ind, dlug-ind+1 ) END ok = WRITELN( out, outlinia ) END ok = CLOSE( wzor ) END END ok = CLOSE( out ) END asEnd EXIT