Поиск…


Вступление

Компилируйте код выполнения как «r-код» и обычно сохраняются в файле с расширением .r. Существует несколько различных способов компиляции: использование оператора COMPILE или Linux или AppBuilder: встроенный компилятор приложений. Developer Studio (среда Eclipse) компилирует встроенный в процесс сборки.

У вас должно быть установлено 4GL Development или OpenEdge Studio для компиляции программ 4GL, которые обновляют базу данных.

Синтаксис

  • COMPILE program.p СОХРАНИТЬ. // Компилируем program.p и сохраняем r-код
  • СОСТАВНОЕ ЗНАЧЕНИЕ (var) СОХРАНИТЬ. // Скомпилируем имя, сохраненное в переменной "var", и сохраните r-код
  • COMPILE prog.p XREF prog.xref LISTING prog.list. // Компилируем prog.p и создаем xref и листинг-файлы. Не сохраняйте r-код.
  • COMPILE program.p СОХРАНИТЬ NO-ERROR. // Скомпилируйте program.p, сохраните ошибки r-code и supress, чтобы остановить выполнение.

Компилятор приложений

Windows AppBuilder

В приложении Windows Appbuilder Компилятор приложений находится в меню «Инструменты». Windows AppBuilder

Редактор процедур (Linux- pro или Windows pro.exe

В Редакторе процедур (как Linux, так и Windows) компилятор, если он найден в меню «Инструменты». Редактор редактора процедур Linux

Компилятор приложений

Компилятор приложений Windows Компилятор приложений Linux

Независимо от ОС функциональность компилятора одинакова. Вы можете добавлять каталоги и / или файлы и компилировать их.

Основные настройки (подробнее см. Ниже):

  • Сохраните новый .r файл. Если не проверено, файлы будут просто скомпилированы, но не сохранены. Полезно, например, для отслеживания ошибок.
  • Посмотрите в подкаталогах. В противном случае необходимо будет добавить подкаталоги.
  • Удалите старые .r-файлы. Перезаписать старый .r файл.
  • Onlu Compile, если нет .r файла. Только компилирует нескомпилированные файлы.

Опции:

  • Propath - показывает вам протату и давайте вам выбирать каталоги для компиляции из него.
  • Добавить - позволяет вводить каталог или файл.
  • Изменить - позволяет изменить существующую запись.
  • Удалить - удаляет запись.
  • Start Compile - запуск компилятора. Ярлык: F2

Выбор главного меню:

  • Файл -> Выход: выход из компилятора
  • Compile -> Start Compile: запускает компилятор. Ярлык: F2
  • Инструменты -> Доступ к другим инструментам
  • Опция -> Компилятор ...: Настройки, ниже.
  • Справка -> Справка OpenEdge (только для Windows). Онлайн помощь. Ярлык: F1

настройки

настройки

  • Спецификация файла по умолчанию: расширения имен файлов для компиляции
  • Файл журнала сообщений: файл для сохранения сообщений, предупреждений и ошибок в
  • Сохранить в: Где хранить .r файл. Если пустая строка того же каталога, что и код.
  • Языки: для переводов. Здесь не рассматривается.
  • V6Frame: Старые и неиспользуемые ...
  • Steam-IO: Если вы хотите распечатать вывод компилятора. Скорее всего, нет.
  • Файл листинга: если вы хотите, чтобы компилятор создавал файл листинга. Полезно для отладки
  • Добавить: добавить в существующий файл листинга. Иначе перезаписать.
  • Ширина страницы + длина: формат файла листинга.
  • Файл Xref: если вы хотите, чтобы компилятор создавал XREF . Полезно для отладки, проверки использования индекса и т. Д.
  • Формат XML: если компилятор xref должен быть xml. Иначе «простой» текст.
  • Добавить: добавить к существующему файлу xref. Иначе перезаписать.
  • Файл отладки: файл с отладчиком.
  • Ключ шифрования: если исходный файл зашифрован с помощью xcode введите здесь ключ.
  • Минимизируйте R-код. Размер: удалите некоторую отладочную информацию, чтобы сохранить r-код маленьким.
  • Генерировать MD-5: главным образом для компиляции WebClient.

Основное использование

  1. Запустить компилятор
  2. Добавить путь (если он еще не сохранен с последнего сеанса)
  3. Нажмите F2 для компиляции.
  4. Соблюдайте любые ошибки.
  5. Выход

Заявление COMPILE

Инструкция compile позволяет вам скомпилировать программы в Progress ABL:

Основное использование:

COMPILE hello-world.p SAVE.

С переменной:

DEFINE VARIABLE prog AS CHARACTER   NO-UNDO.

prog = "hello.p".

COMPILE VALUE(prog) SAVE.

Для элемента COMPILE есть несколько вариантов:

SAVE заявляет, что .r-код должен быть сохранен для будущего использования.

COMPILE hello-world.p SAVE.

SAVE INTO dir OR SAVE INTO VALUE(dir-variable) сохраняет r-код в указанном каталоге:

COMPILE hello-world.p SAVE INTO /usr/sources.

LISTING file . Создает файл списка, содержащий отладочную информацию о блоках, включая и т. Д.

COMPILE program.p SAVE LISTING c:\temp\listing.txt.

В листинге есть несколько вариантов добавления файлов, размера страницы и ширины страницы:

APPEND PAGE-SIZE num PAGE-WIDTH num 

XREF xreffile сохранит файл xref компилятора, содержащий информацию об использовании строки и индекса и т. Д. Вы также можете APPEND этот.

COMPILE checkFile.p SAVE XREF c:\directory\xref-file.txt.

XREF-XML xreffile-or-dir будет делать то же самое, что и XREF но XREF сохранит файл в формате xml. Если вы используете каталог, xref-файл будет называться programname.xref.xml .

COMPILE file.p SAVE XREF c:\temp\.

NO-ERROR будет подавлять любые ошибки при остановке вашей программы.

COMPILE program SAVE NO-ERROR.

DEBUG-LIST file генерирует отладочный файл с номерами строк.

COMPILE checkFile.p SAVE DEBUG-LIST c:\temp\debug.txt.

PREPROCESS file сначала преобразует все препроцессоры, а затем создаст новый .p-файл с кодом перед компиляцией.

 COMPILE checkFile.p SAVE PREPROCESS c:\temp\PREPROC.txt.

XCODE key скомпилирует зашифрованный исходный код с key качестве ключа. Вы не можете использовать XCODE вместе с параметрами XREF, XREF-XML, STRING-XREF или LISTING.

COMPILE program.p SAVE XCODE myKey.

Вы можете комбинировать несколько вариантов:

COMPILE prog.p SAVE INTO /usr/r-code XREF /usr/xrefs/xref.txt APPEND LISTING /usr/listings.txt APPEND NO-ERROR.

Обработка системы COMPILER

COMPILER ручка COMPILER позволяет вам просматривать информацию о компиляции последнего времени.

Предполагая, что ok-program.p - это программа без каких-либо ошибок или предупреждений:

COMPILE ok-program.p SAVE NO-ERROR.

DEFINE VARIABLE iError AS INTEGER     NO-UNDO.

MESSAGE  
    "Errors: "   COMPILER:ERROR SKIP
    "Warnings: " COMPILER:WARNING SKIP
    "Messages: " COMPILER:NUM-MESSAGES
    VIEW-AS ALERT-BOX INFORMATION.

Это позволит:

Нет ошибок

Компиляция программы с предупреждением:

/* program-with-warning.p */
DEFINE VARIABLE c AS CHARACTER   NO-UNDO.
DEFINE VARIABLE i AS INTEGER     NO-UNDO.

c = "hello".
DISPLAY c.
//This RETURN makes the program exit here and the code below unreachable.
RETURN.

IF TRUE THEN DO:
    i = 10. 
END.

Компиляция программы:

COMPILE program-with-warning.p SAVE.

DEFINE VARIABLE iError AS INTEGER     NO-UNDO.

MESSAGE  
    "Errors: "   COMPILER:ERROR SKIP
    "Warnings: " COMPILER:WARNING SKIP
    "Messages: " COMPILER:NUM-MESSAGES
    VIEW-AS ALERT-BOX INFORMATION.

DO iError = 1 TO COMPILER:NUM-MESSAGES:
    DISPLAY 
        COMPILER:GET-FILE-NAME(iError)    LABEL "Filename" FORMAT "x(20)"
        COMPILER:GET-MESSAGE(iError)      LABEL "Message"  FORMAT "x(50)"
        COMPILER:GET-NUMBER(iError)       LABEL "Msg#"  
        COMPILER:GET-ERROR-COLUMN(iError) LABEL "Column"
        COMPILER:GET-ERROR-ROW(iError)    LABEL "Row"
            WITH FRAME fr1 SIDE-LABELS 1 COLUMNS.
END.

Результат:

введите описание изображения здесь

введите описание изображения здесь

Компиляция программы с ошибкой

DEFINE VARIABLE c AS CHARACTER   NO-UNDO.
DEFINE VARIABLE i AS INTEGER     NO-UNDO.

c = "hello".
DISPLAY c.
//Casting should be required below...
IF TRUE THEN DO:
    i = c.
END.

Компиляция программы:

//Use no-errors to supress any error messages from interrupting us.
COMPILE c:\temp\program-with-error.p SAVE NO-ERROR.

DEFINE VARIABLE iError AS INTEGER     NO-UNDO.

MESSAGE  
    "Errors: "   COMPILER:ERROR SKIP
    "Warnings: " COMPILER:WARNING SKIP
    "Messages: " COMPILER:NUM-MESSAGES
    VIEW-AS ALERT-BOX INFORMATION.

DO iError = 1 TO COMPILER:NUM-MESSAGES:
    DISPLAY 
        COMPILER:GET-FILE-NAME(iError)    LABEL "Filename" FORMAT "x(20)"
        COMPILER:GET-MESSAGE(iError)      LABEL "Message"  FORMAT "x(50)"
        COMPILER:GET-NUMBER(iError)       LABEL "Msg#"  
        COMPILER:GET-ERROR-COLUMN(iError) LABEL "Column"
        COMPILER:GET-ERROR-ROW(iError)    LABEL "Row"
            WITH FRAME fr1 SIDE-LABELS 1 COLUMNS 20 DOWN.

    DOWN WITH FRAME fr1.
END.

Результат, почти ошибка на ошибки. «Не удалось понять» следует фактическая ошибка: введите описание изображения здесь

введите описание изображения здесь



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow