Zurück zum Inhaltsverzeichnis - Lösungen und Tipps
- schneider-lastin
Das Makro #*KOMA (=KOpiere-MAkro) erstellt ein Programm-Gerüst zum satz- oder portionsweisen Kopieren.
#*KOMA schreibt das Gerüst in die zu DATEI angegebene Datei.
Das Makro und seine Spezifikationen lauten:
#*KOMA, DATEI, MODUS
1. Bei MODUS=satzweise lautet das Ergebnis
$$! quelle, ziel $$- $$ MODE TUSCRIPT SET status = CHECK (quelle, READ, TUSTEP) ERROR/STOP "QUELLE: ", status SET status = CHECK (ziel, WRITE, TUSTEP) ERROR/STOP "ZIEL: ", status SET status = UNIQUE (quelle, ziel) ERROR/STOP "Datei ", status, " ist mehrfach angegeben" COMPILE ACCESS q: READ /RECORDS "{quelle}" sn.zn/un, text ACCESS z: WRITE/ERASE/RECORDS "{ziel}" sn.zn/un, text LOOP/999999 READ/IGNORE/EXIT q - Hier Anweisungen zum Auswählen/Ändern der Daten einfügen WRITE/ADJUST z ENDLOOP ENDACCESS/PRINT q ENDACCESS/PRINT z ENDCOMPILE
2. Bei MODUS=portionsweise lautet das Ergebnis (ab COMPILE)
COMPILE - Tabellen atab,ttab,etab anpassen bzw. entfernen BUILD S_TABLE atab = ":[::%[:" BUILD S_TABLE ttab = ":|:" BUILD S_TABLE etab = ":]::%]:" ACCESS q: READ/STREAM/RECORDS "{quelle}" ... sn.zn/un, aken/atab + text/ttab + eken/etab ACCESS z: WRITE/ERASE/STREAM "{ziel}" ... sn.zn/un, aken + text + eken LOOP/999999 READ/NEXT/EXIT q - Hier Anweisungen zum Auswählen/Ändern der Daten einfügen WRITE z ENDLOOP ENDACCESS/PRINT q ENDACCESS/PRINT z ENDCOMPILE