/* ARexx Script */ IF ARG() ~=1 THEN DO SAY "USAGE: a2g.rexx " EXIT 5 END ARG filename ADDRESS COMMAND CALL OPEN(guide,filename'.ag','W') CALL WRITELN(guide,'@DATABASE ADE mailinglist') CALL WRITELN(guide,'@AUTHOR ZAP') CALL WRITELN(guide,'@NODE main') CALL WRITELN(guide,'') CALL OPEN(fil,filename,'R') SAY 'Scanning 'filename' and Creating Main Node...' DO cx=1 TO 9999 IF EOF(fil) THEN BREAK dateline = 'slut' DO y=1 TO 9999 IF EOF(fil) THEN BREAK line=READLN(fil) chk = LEFT(line,5) IF chk = 'Prece' THEN BREAK SELECT WHEN chk = 'Subje' THEN DO subjline = line END WHEN chk = 'From:' THEN DO dateline = line END OTHERWISE END END IF dateline = 'slut' THEN BREAK subjline=RIGHT(subjline,LENGTH(subjline)-9) subjline=subjline' ' subjline=LEFT(subjline,26) DO z=1 TO 26 v=POS('"',subjline) IF v=0 THEN BREAK subjline = OVERLAY("'",subjline,v) END dateline=RIGHT(dateline,LENGTH(dateline)-6) CALL WRITELN(guide,' @{" 'subjline' " LINK 'cx'} 'dateline) tot = cx DO y=1 TO 9999 IF EOF(fil) THEN BREAK line=READLN(fil) chk = LEFT(line,8) IF chk = ' From ow' THEN BREAK IF chk = 'From own' THEN BREAK IF chk = ' From gg' THEN BREAK IF chk = 'From gg-' THEN BREAK IF chk = ' From ad' THEN BREAK IF chk = 'From ade' THEN BREAK END END CALL CLOSE(fil) CALL WRITELN(guide,'') CALL WRITELN(guide,'@ENDNODE main') SAY 'Total Links 'tot CALL OPEN(fil,filename,'R') SAY 'Creating Nodes....' cx = 1 DO x=1 TO 99999 IF EOF(fil) THEN BREAK line=READLN(fil) chk = LEFT(line,5) SELECT WHEN chk = 'Subje' THEN subjline = line WHEN chk = 'From:' THEN fromline = line WHEN chk = 'Date:' THEN dateline = line WHEN chk = 'Prece' THEN DO CALL WRITELN(guide,'@NODE 'cx'') CALL WRITELN(guide,' 'fromline) CALL WRITELN(guide,' 'dateline) CALL WRITELN(guide,' 'subjline) skip = 0 DO z=1 to 9999 IF EOF(fil) THEN BREAK line=READLN(fil) chk = LEFT(line,8) IF z < 2 THEN DO IF chk = 'Reply-To' THEN skip = 1 IF chk = 'Errors-T' THEN skip = 1 END IF chk = ' From ow' THEN BREAK IF chk = 'From own' THEN BREAK IF chk = ' From gg' THEN BREAK IF chk = 'From gg-' THEN BREAK IF chk = ' From ad' THEN BREAK IF chk = 'From ade' THEN BREAK IF skip = 0 THEN DO CALL WRITELN(guide,line) END IF skip = 1 THEN skip = 0 END CALL WRITELN(guide,'@ENDNODE 'cx'') cx = cx + 1 END OTHERWISE END END cx = cx - 1 IF tot != cx THEN DO SAY 'Nodes Differ: Actual Nodes 'cx END SAY 'Closing files...' CALL CLOSE(fil) CALL CLOSE(guide) SAY 'Ready.' EXIT