0 BEGIN PGM 90401_DE MM 1 ;NC-Programm um den Dateinamen aus dem 2 ;kompletten Pfad zu extrahieren. 3 ;Den Pfad speichert die Steuerung im rufenden 4 ;Programm im QS1 und uebergibt diesen an 5 ;dieses Programm. 6 ;Aus diesem String separiert das Programm 7 ;den Dateinamen. 8 ;Dazu wird der String nach dem "\" durchsucht, 9 ;und der davor stehende Teil im String wird 10 ;entfernt. Dieser Schritt wird wiederholt, 11 ;bis kein "\" mehr gefunden wird. Im Anschluss 12 ;entfernt die Steuerung noch die Dateiendung 13 ;".h", so dass nur der Dateiname uebrig 14 ;bleibt. 15 ;Diesen uebergibt die steuerung dann im QS1 16 ;zurueck an das rufende Programm. 17 ; 18 ;Dateinamen aus Pfad selektieren 19 ;zu suchendes Zeichen 20 QS2 = "\" 21 ; 22 LBL 1 ;Beginn Schleife 23 ; 24 ;String QS1 durchsuchen nach Zeichen "\" 25 Q50 = INSTR( SRC_QS1 SEA_QS2 BEG0 ) 26 ;Ergebnis in Q50 ist die Stelle an der "\" 27 ;das erste gefunden wurde 28 ; 29 ;Ergebnis des Q50 um 1 erhoehen 30 Q52 = Q50 + 1 31 ; 32 ;Auslesen Gesamtlaenge String, Speichern 33 ;in Q53 34 Q53 = STRLEN( SRC_QS1 ) 35 ; 36 ;Gesamtlaenge String -1 37 Q55 = Q53 - 1 38 ;Wenn der Befehl INSTR das Zeichen "\" nicht 39 ;findet, gibt er die Laenge zurueck, 40 ;begonnen bei Stelle 1. 41 ;Wenn das Zeichen "\" nicht mehr im QS1 42 ;vorhanden ist, springt die Steuerung zum 43 ;LBL "END". 44 FN 9: IF +Q50 EQU +Q53 GOTO LBL "END" 45 ; 46 ;Laenge String - alle Zeichen bis zum "\" 47 Q54 = Q53 - Q52 48 QS1 = SUBSTR( SRC_QS1 BEGQ52 LENQ54 ) 49 ; 50 ;Sprung zu LBL 1 51 FN 9: IF +0 EQU +0 GOTO LBL 1 52 ; 53 ;Dateiendung entfernen 54 ;Dateiname mit Endung extrahiert 55 LBL "END" 56 ; 57 ;Dateiendung, z. B. .H entfernen 58 ;Q56 = Gesamtlaenge String 59 ;(Dateiname + Endung) -2 60 Q56 = Q53 - 2 61 ;Dateiname auslesen 62 QS1 = SUBSTR( SRC_QS1 BEG0 LENQ56 ) 63 ; 64 ;Dateiname wird im QS1 an das rufende Programm 65 ;uebergeben. 66 END PGM 90401_DE MM