2014-02-14 1 views
0

Я новый с progress-4gl (OpenEdge), и я столкнулся с каким-то кодом, который для моей жизни я не могу точно понять, что он делает. Ниже приведен пример кода, который я пытаюсь проанализировать, и весь материал, который я нашел в ситуации.Что именно делает ссылка на {} аргумент?

Я понимаю, что мой ответ в материале, однако я не могу понять это так хорошо, как хочу. Надеюсь, что кто-то с немного большим знанием, чем я, может мне помочь. Спасибо за тех, кто потратил на это:

Function functionName RETURNS CHAR (integerName AS INT) {1}: 

Эта функция хранится в заголовочном файле и вызывается другим процедура следующим образом:

charName = GetCommSecType (intName) 

То, что я не полностью понять, почему {1} ​​есть и что именно он делает. Если я не стану {1}, все, похоже, работает одинаково. Я смотрел в файле справки вставить свою информацию ниже:

{} ссылки Аргумент:
Ссылки на значение аргумента, что процедура переходит к вызываемой процедуры внешнего файла или включаемого файла. ABL преобразует каждый аргумент в формат символа. Это преобразование удаляет окружающие двойные кавычки, если параметр был указан как константа символьной строки в инструкции RUN или включает ссылку на файл. Когда одна процедура вызывается из другой и используются аргументы, ABL перекомпилирует вызываемую процедуру, заменяя аргументы, которые обрабатывает вызывающая процедура, и затем запускает вызванную процедуру.

Я считаю, что цель этого заключается в том, чтобы разрешить запуск функции include файлов в командной строке команды RUN. Пожалуйста, поправьте меня, если я ошибаюсь. Спасибо

ответ

0

{} - это что-то, называемое препроцессором, означающее, что оно влияет только на результат вашей программы во время компиляции, а не на время выполнения.

Как правило, вы должны включить файл .i, но не использовать его, но такой синтаксис можно использовать как для запуска, так и для файлов.

В этом перкулярном случае это означает, что компилятор вставляет что-то, где написано {1}. {1} означает, что введен первый аргумент. Вы также можете указать аргументы (см. Ссылку ниже).

Простой включать в файл, например так:

{filename.i} 

В данном случае это не очень легко догадаться, Что вставлен, но в основном, если вы включаемый, как это:

DEFINE VARIABLE c AS CHARACTER NO-UNDO. 
c = "ABC". 
{c:\temp\includetest.i c} 

Компилятор будет вставлять ABC, где {1} записывается в ваш файл include. Разумеется, это не имеет смысла в этом примере. И теперь я не знаю ничего, что действительно может быть написано между параметрами и двоеточием.

Скажем, файл filname.i просто содержит.

DISPLAY {1}. 

Doing включаемые как выше, то сделало бы компилятор заменить {1} с «ABC» и, таким образом, делая заявление выглядит следующим образом:

DISPLAY c. 

Запуск этого будет отображать значение с - "ABC".

Вам необходимо предоставить код запуска или включить этот файл, чтобы лучше понять это!

Страницы 22 и вперед в this document описывает это глубже.

+0

Спасибо за подробное объяснение и указанный документ, это тот же документ, который я прошел до публикации. Мой вопрос к вашему объяснению следующий: функция в функции include содержит параметр и {1}. Поэтому, когда моя процедура вызывает функцию в include-файле, она переходит в Integer. Итак, тогда Интергер проходит дважды? –

+0

Нет, это не имеет никакого отношения к вызову функции. Это влияет на включение или запуск файла. – Jensd

+0

Число внутри {} не имеет ничего общего с параметрами функций и не используется как целое число, оно относится к положению параметра, переданного при использовании include. – pedromarce