Morgen!
ich hab (glaub ich) mal vor einiger Zeit ein Makro gepostet, mit dem man die Teilestruktur durchlaufen kann und in jedem Teil dann irgendeine Aktion ausführen kann - praktisch vor allem für Befehle, die nicht GLOBAL funktionieren (zB CHANGE_DIM_COLOR). Dieses Makro kann man auch für Dein Problem hernehmen - mit ein paar kleinen Änderungen.
Mit PARTS_LIST TREE krieg ich eine Liste aller Teile, jede Teileebene ist um 2 Stellen weiter eingerückt als die vorige. Wenn das 7.Zeichen jeder Zeile kein Leerzeichen ist, dann ist das ein Teil in der 2.Ebene (das funktioniert nur dann nicht, wenn es Teilenamen gibt die mit einem Leerzeichen beginnen - was ja vermutlich eher unwahrscheinlich ist).
Ich habs KURZ durchgetestet - müßte so funktionieren.
Code:
DEFINE Storesubs EDIT_PART TOP
INQ_PART "/"
LET Topname (INQ 301)
CREATE_LTAB 'TMPLTAB'
PARTS_LIST TREE LTAB 'TMPLTAB'
LET I 2
WHILE (I <= (LTAB_ROWS 'TMPLTAB'))
LET Z (READ_LTAB 'TMPLTAB' I 1)
LET Kl1 (POS Z ' [~')
LET Tmpstr (SUBSTR Z (Kl1+2) (LEN Z - Kl1 - 1))
LET Kl2 (POS Tmpstr ']')
LET Name (TRIM (SUBSTR Z 1 (Kl1 - 1))) { <--- Teilename }
LET Nr (SUBSTR Tmpstr 1 (Kl2-1)) { <--- Teilenummer }
Teil_aktion
LET I (I+1)
END_WHILE
END_DEFINE
DEFINE Teil_aktion
LET Char (SUBSTR Z 7 1)
IF (Char <> " ")
STORE Nr DEL_OLD (Topname + "-" + Name)
END_IF
END_DEFINE
Gruß aus Österreich,
Hannes
------------------
und i hob im kaulenda gschaut: heit geht da wind.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP