© serviceprofessionalgmbh

IF-Konstrukte und SELECT-Gebilde verlieren ihren Reiz, je öfter man sie zu kodieren hat. Ein Auto-Vervollständiger könnte frühzeitig erkennen, was der Wunsch des Kunden ist (SELECT ist der einzige Befehl in REXX der mit SE beginnt - die vom Makro unterstützten Befehle sind IF, SELECT und DO (Schleifen)).

Das Makro prüft die Zeile, in der der Cursor steht, und vervollständigt das begonnene Codeing.

Sie Schreiben if, starten das Macro per F-Taste und das Makro ergänzt Ihren Quellcode (spalten-sensitiv) wie folgt:

IF bedingung THEN DO
   NOP
END
ELSE DO
   NOP
END


/* REXX * EDIT MACRO *************************************************/ /* */ /* Macroname.: $RXSYN */ /* Zweck.....: Erkennt Instruktion in der Cursor-Zeile und */ /* ergaenzt den Befehl */ /* */ address isredit "macro" "(csr,col) = CURSOR" "(CMD) = line .zcsr" upper cmd start=pos(strip(cmd),cmd) cmdstrip=strip(cmd,b) select when pos(cmdstrip,"IF")> 0 then label="IF" when word(cmdstrip,1) = "DO" then label="DO" when pos(cmdstrip,"SELECT") > 0 then label="SELECT" otherwise do zedsmsg="Unbekannter Befehl" zedlmsg="Unterstuetzte Befehle sind IF, SELECT und DO" address ispexec "setmsg msg(isrz000)" exit end end blanks=copies(' ',start-1) interpret "CALL" label "line .zcsr = '"zeile.0"'" do cnt = 1 to zeile.max "line_after .zcsr = '"zeile.cnt"'" end exit if: zeile.max=5 zeile.0=blanks"IF bedingung THEN DO" zeile.5=blanks" NOP" zeile.4=blanks"END" zeile.3=blanks"ELSE DO" zeile.2=blanks" NOP" zeile.1=blanks"END" return select: zeile.max=10 zeile.0 =blanks"SELECT" zeile.10=blanks" WHEN bedingung THEN DO" zeile.9 =blanks" NOP" zeile.8 =blanks" END" zeile.7 =blanks" WHEN bedingung THEN DO" zeile.6 =blanks" NOP" zeile.5 =blanks" END" zeile.4 =blanks" OTHERWISE DO" zeile.3 =blanks" NOP" zeile.2 =blanks" END" zeile.1 =blanks"END" return do: parm = subword(cmdstrip,2) select when parm = "" then loopkopf = "DO" when pos('=',parm) > 0 then loopkopf = "DO var = ? TO ??" when pos("WHILE",parm) > 0 then loopkopf = "DO WHILE bedingung" when pos("UNTIL",parm) > 0 then loopkopf = "DO UNTIL bedingung" otherwise loopkopf = cmdstrip end zeile.max=2 zeile.0=blanks!!loopkopf zeile.2=blanks" NOP" zeile.1=blanks"END" return
zurück zu Edit Makros