2016-09-09 3 views
0

Je suis assez nouveau pour progresser 4gl. J'essaie de copier le contenu d'un fichier df dans un autre fichier où je veux copier tout sauf les zones du fichier df. c'est ce que j'ai jusqu'ici.Comment copier un fichier texte dans un autre fichier texte avec des modifications (édition de fichiers df)

define stream mystream. 
input from "C:\OpenEdge\WRK\df file\sample.df". 
do while true on endkey undo, leave: 
output to "C:\OpenEdge\WRK\df file\test1.df". 
end. 
output close. 
display "finished". 

Je voudrais tout d'abord copier tout le contenu du premier fichier df dans un autre fichier df, mais maintenant je reçois un fichier vide. S'il vous plaît laissez-moi savoir où je vais mal.

+0

La première chose que vous faites mal est que vous êtes (re) openi ng sortie à chaque itération de la boucle. Même si cela fonctionne (ce ne sera pas le cas, car vous obtiendrez une erreur sur la cible de sortie ayant déjà une utilisation conflictuelle ...) qui entraînera le redémarrage du fichier à chaque itération. Vous ne faites rien non plus pour lire les données ou les réécrire. Pour lire les données, vous avez besoin de l'instruction IMPORT (voir ci-dessous). Pour écrire les données, vous avez besoin de quelque chose comme PUT (ou MESSAGE). –

Répondre

0

C'est ce que je fais:

grep -v AREA <dbname.df> dbname.df2 

Si vous êtes coincé avec le système d'exploitation qui manque "grep" ou si vous avez juste envie de le faire avec le code 4gl je ferais quelque chose comme:

define variable lineIn as character no-undo. 

input from "dbname.df". 
output to "dbname.df2". 

repeat: 

    import unformatted lineIn.     /* read the data a whole line at a time */ 

    if lineIn begins " AREA" then next.   /* skip lines that start with " AREA" */ 

    put unformatted lineIn skip.     /* spit the input line back out */ 
    if lineIn = "" then put unformatted skip(1). /* yes, this is a weird thing */ 

end. 
+0

merci, j'ai fait les changements en conséquence afin que l'instruction de sortie est avant l'itération. Et votre logique fonctionne parfaitement. Merci une fois de plus – nikita

0

Pour copier tout le contenu du premier fichier df à un autre fichier df, utilisez ce code:

DEFINE VARIABLE TEXT-STRING AS CHARACTER FORMAT "X(76)". 

INPUT FROM "C:\OPENEDGE\WRK\CMD-LOG.DF". 

OUTPUT TO "C:\OPENEDGE\WRK\MY.DF". 
DO WHILE TRUE ON ENDKEY UNDO, LEAVE: 
    IMPORT UNFORMATTED TEXT-STRING. 
    MESSAGE TEXT-STRING . 
END. 

INPUT CLOSE. 
OUTPUT CLOSE.