Существует ли какой-либо оператор Progress 4GL, используемый для редактирования файлов ASCII? - PullRequest
0 голосов
/ 21 августа 2009

Существует ли какой-либо оператор 4GL, используемый для редактирования файлов ASCII с диска, если да, то как?

Ответы [ 5 ]

8 голосов
/ 29 августа 2009

Редактирование включает чтение файла, возможно, с использованием IMPORT, затем манипулирование текстом с использованием строковых функций, таких как REPLACE (), и, наконец, запись результата, возможно, с использованием PUT. Примерно так:

define stream inFile.
define stream outFile.

define variable txtLine as character no-undo.

input stream inFile from "input.txt".
output stream outFile to "output.txt".

repeat:

  import stream inFile unformatted txtLine.

  txtLine = replace( txtLine, "abc", "123" ).   /* edit something */

  put stream outFile unformatted txtLine skip.

end.

input stream inFile close.
output stream outFile close.
1 голос
/ 24 августа 2009

Да, есть. Вы можете использовать STREAM для этого.

/* Define a new named stream */
DEF STREAM myStream.

/* Define the output location of the stream */
OUTPUT STREAM myStream TO VALUE("c:\text.txt").

/* Write some text into the file */
PUT STREAM myStream UNFORMATTED "Does this work?".

/* Close the stream now that we're done with it */
OUTPUT STREAM myStream CLOSE.
0 голосов
/ 30 августа 2013

Я думаю, что для «редактирования» вы имеете в виду, чтобы иметь возможность прочитать, а затем показать файл на экране и манипулировать файлом?

Если это так, то здесь у вас есть простой, конечно, размер файла не может быть больше, чем макс. емкость переменной vchar:

def var fileline as char format "x(250)".  /* or shorter or longer, up to you*/
def var filedit as char.

/*you have to quote it to obtain & line into teh charvar*/

unix silent quoter kk.txt > kk.quoted.

input from kk.quoted no-echo.


repeat:

   set fileline.

   filedit = filedit + (fileline + chr(13) + chr(10)) .

end.

input close.

update filedit view-as editor size 65 by 10.

Конечно, вы можете сохранить файл после редактирования; -)

0 голосов
/ 21 августа 2013

Вы можете использовать copy-lob для чтения и записи файла

DEF VAR lContents AS LONGCHAR NO-UNDO.

/* read file */
COPY-LOB FROM FILE "ascii.txt" TO lContents.
/* change Contents, e.g. all capital letters */
lContents = CAPS(lContents).
/* save file */
COPY-LOB lContents TO FILE "ascii.txt".
0 голосов
/ 04 сентября 2009

Progress может вызвать редактор операционной системы:

OS-COMMAND ("vi /tmp/yoyo.txt").

...