0 BEGIN PGM 90351_fr MM 1 ;Programme CN permettant d'extraire 2 ;le nom du fichier du chemin complet. 3 ;Pour cela, le fichier texte est 4 ;d'abord copié dans un programme CN. 5 ;Dans ce programme, le chemin du 6 ;fichier est affecté au paramètre 7 ;string QS1. 8 ;Le programme isole le nom de fichier 9 ;de ce string. Pour cela, la partie 10 ;qui suit dans le string est 11 ;supprimée. Cette étape se répète 12 ;jusqu'à ce qu'il n'y ait plus de 13 ;barre oblique inversée "\". La CN 14 ;ôte ensuite la terminaison du 15 ;fichier ".h" pour que seul le nom 16 ;du fichier subsiste. 17 ;Elle transmet ensuite le nom du 18 ;fichier au programme d'origine, via 19 ;le paramètre string QS1. 20 ;A la fin du programme, la CN 21 ;supprime le fichier texte 22 ;"FILE.a" et le programme CN "FILE.H". 23 ; 24 ;Copie du fichier texte dans un 25 ;programme CN 26 FUNCTION FILECOPY "FILE.a" TO "FILE.H" 27 ; 28 ;Sélection du nom du fichier dans le 29 ;chemin. 30 ;Caractère à rechercher QS2 = "\" 31 ; 32 ;Appel du programme "FILE.H" pour lire 33 ;le paramètre QS1 avec le chemin qui 34 ;y est défini 35 CALL PGM FILE.H 36 ; 37 LBL 1 ;Début de la boucle 38 ; 39 ;Recherche de la barre oblique 40 ;inversée "\" dans le string QS1 Q50 = INSTR( SRC_QS1 SEA_QS2 BEG0 ) 41 ;Le résultat de Q50 correspond à la 42 ;première barre oblique 43 ;inversée "\" trouvée. 44 ; 45 ;Incrémentation de 1 du résultat de Q50 Q52 = Q50 + 1 46 ; 47 ;Lecture de la longueur totale, 48 ;sauvegarde dans Q53 Q53 = STRLEN( SRC_QS1 ) 49 ; 50 ;Longueur totale du string -1 Q55 = Q53 - 1 51 ;Si l'instruction INSTR ne trouve pas 52 ;le caractère "\", elle retourne la 53 ;longueur à partir de la position 1. 54 ;Si le caractère "\" ne figure plus 55 ;au paramètre QS1, la CN saute au LBL 56 ;"END". 57 FN 9: IF +Q50 EQU +Q53 GOTO LBL "END" 58 ; 59 ;Longueur du string - tous les 60 ;caractères jusqu'à "\" Q54 = Q53 - Q52 QS1 = SUBSTR( SRC_QS1 BEGQ52 LENQ54 ) 61 ; 62 ;Saut à LBL 1 63 FN 9: IF +0 EQU +0 GOTO LBL 1 64 ; 65 ;Suppression de la terminaison du fichier 66 ;Le nom du fichier est extrait, avec sa 67 ;terminaison 68 LBL "END" 69 ; 70 ;Suppression de la terminaison du fichier, 71 ;par ex. .H 72 ;Q56 = Longueur globale du string 73 ;(nom du fichier+terminaison)-2 Q56 = Q53 - 2 74 ;Lecture du nom du fichier QS1 = SUBSTR( SRC_QS1 BEG0 LENQ56 ) 75 ; 76 ;Suppression des fichiers d'aide 77 FUNCTION FILEDELETE "FILE.a" 78 FUNCTION FILEDELETE "FILE.h" 79 ; 80 ;Fin de programme : le nom du fichier est 81 ;transmis au programme appelant via QS1. 82 END PGM 90351_fr MM