/* REXX ONEPERLN Finds PL/I source lines which contain more than one semicolon so that they may be split. */ address ISREDIT "MACRO (opts)" upper opts parse var opts "TRACE" tv . parse value tv "N" with tv . rc = Trace("O"); rc = Trace(tv) "RESET" "X ALL" PRorLST = "LAST" do forever "SEEK ';'" PRorLST /* locate last semicolon */ if rc > 0 then leave /* didn't find one */ PRorLST = "PREV" "(txt) = LINE .zcsr" /* acquire line */ parse var txt front ";" back if back = '' then iterate if Pos( ';',back ) = 0 then iterate if Length( Strip( back ) ) < 4 then iterate rc = Trace("O"); rc = Trace(tv) front = front';' "LINE .zcsr = (front) " "XSTATUS .zcsr = NX" "LINE_AFTER .zcsr = (back) " end /* forever */ "F ' ' FIRST NX" /* position to top */ exit 1 /*@ ONEPERLN */