/* Modification fichier QIF => Date MM/JJ/AA en MM/JJ/AAAA A exécuter avec un fichier .BAT tel cet exemple à adapter pour les noms de dossiers bien sûr: Description des 4 éléments de la commande d'exécution Localisation REGINA Localisation du programme Fichier à modifier Qui se trouve dans le dossier La commande Pause permet de laisser la fenêtre de l'invite de commandes (CMD) ouverte en fin d'exécution Le fichier .BAT : "D:\Rexx\regina.exe" "D:\Rexx\_Sources\QIF_Q2006.rexx" Fichier_en_entrée.QIF D:\Mes Documents\Quicken_Migration Pause */ Arg File_Name Directory_Name /* Arguments: nom du fichier à modifier et nom du dossier où se trouve le fichier (cf. .BAT */ New_File = 'new_'||File_name /* Variable nom du fichier modifié : chaine de caractère "new_" ajoutée en tête */ newdir = directory(Directory_Name) 'del' New_File /* Suppression si déjà existant du nouveau fichier. Message d'erreur non bloquant au premier run */ File_IN = Directory_Name||'\'File_Name /* Variables fichiers en entrée et sortie */ File_OUT = Directory_Name||'\'New_File Count_Read = 0 Call Linein File_IN, 1, 0 /* Ouverture des fichiers */ Call Lineout File_OUT,,1 Do While Lines(File_IN) > 0 /* Boucle de lecture/écriture */ Count_Read = Count_Read + 1 Data.Count_Read = Linein(File_IN) Find_Line_Date = Substr(Data.Count_Read,1,1) /* Recherche enregistrement "DATE" du fichier QIF */ If Find_Line_Date = 'D' then do /* Si trouvé, test de la longueur de la chaine de caractères pour extraction de la variable Year puis appel de la routine de modification */ Select When Length(Data.Count_Read) = 7 then do Data_kept = Substr(Data.Count_Read,1,5) Year = Substr(Data.Count_Read,6) Call MOD_YEAR end When Length(Data.Count_Read) = 8 then do Data_kept = Substr(Data.Count_Read,1,6) Year = Substr(Data.Count_Read,7) Call MOD_YEAR end When Length(Data.Count_Read) = 9 then do Data_kept = Substr(Data.Count_Read,1,7) Year = Substr(Data.Count_Read,8) Call MOD_YEAR end Otherwise Call HOUSTON End End Else do Call Lineout File_OUT, Data.Count_Read End End Call Lineout File_IN /* Fermeture des fichiers */ Call Lineout File_OUT Exit MOD_YEAR: /* Modification de l'année du champ DATE - 8x devient 198x - 9x devient 199x - 0x devient 20xx - 1x devient 201x - 2x devient 202x */ Select When Substr(Year,1,1) = '8' then do New_Data = Data_kept||'19'||Year Call Lineout File_OUT, New_Data end When Substr(Year,1,1) = '9' then do New_Data = Data_kept||'19'||Year Call Lineout File_OUT, New_Data end When Substr(Year,1,1) = '0' then do New_Data = Data_kept||'20'||Year Call Lineout File_OUT, New_Data end When Substr(Year,1,1) = '1' then do New_Data = Data_kept||'20'||Year Call Lineout File_OUT, New_Data end When Substr(Year,1,1) = '2' then do New_Data = Data_kept||'20'||Year Call Lineout File_OUT, New_Data end Otherwise Call HOUSTON End Return HOUSTON: /* Routine d'erreur */ Say "-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*" Say " Houston ! We've had a problem with record #"Count_Read ":" Data.Count_Read Say "-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*" Return