2016-02-21 1 views
2

Я построил простую программу, попробую распечатать параметры командной строки.Как запустить программу c с параметрами командной строки чтения в openvms?

Код ниже, и я создал исполняемый файл (TEST.EXE).

int main(int argc, char *argv[]) 
{ 
    int i; 
    printf("%s\n",argv[0]); 
    for (i = 1; i < argc; i++) 
     printf("argument %d: %s\n", i, argv[i]); 
    exit (EXIT_SUCCESS); 
} 

Я пытаюсь запустить TEST.EXE и распечатать параметры, но не выполнить.

Результат команды RUN TEST.EXE test1 test2:

%DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters 

Что я могу сделать, чтобы напечатать "test1" и "test2"?

+4

Этот простой вопрос делает VMS похожим на динозавра. Неудивительно, что другие ОС заняли верх. У VMS была отличная файловая система, но она никогда не предназначалась для интерактивного запуска программ. – chqrlie

ответ

2

Кроме того, если вам нужно сохранить случай аргументов, вы должны привести эти аргументы или ввести

$ SET PROCESS/PARSE_STYLE=EXTENDED 

один раз в жизни вашего процесса и

$ DEFINE/USER DECC$ARGV_PARSE_STYLE TRUE 

перед запуском вашей программы с помощью определенной иностранной команды или с использованием автоматических внешних команд (DCL $ PATH). В противном случае все несортированные аргументы преобразуются в символы нижнего регистра.

PS: VMS имеет командный язык, то есть вы должны ввести команду для запуска программы. По умолчанию имена файлов не являются командами. При определении DCL $ PATH вы изменяете это поведение по умолчанию.

6

Команда RUN не поддерживает аргументы командной строки. Определите иностранную команду и используйте ее вместо этого. От David Mathog's beginner FAQ:

Как начать программу?

  • Способ 2: Используйте RUN команду:

    $ run program_nameNo command line arguments allowed

  • Способ 3: Определить внешнюю команду для него, а затем запустить его. В файле , приведенном ниже , пример, где логическое имя эквивалентно местоположению программы .

    $ new_command :== $where:program_name $ new_command [command line arguments]

3

Определение иностранной команды как на 'A3F' является 'правильный' способ сделать это, хотя и несколько утомительно и 2-ступенчатым.

Вы также можете попробовать MCR 'trick'. MCR является коротким для командной строки монитора из 40-летней PDPD-11 операционной системы RSX.

Теперь MCR по умолчанию для поиска программы в SYS $ SYSTEM, так что вы должны указать текущее местоположение:

$ MCR dev:[dir]TEST this is a test. 

Существует также поэтапный подход 1-1/2 с использованием DCL $ PATH. Это работает в основном как путь Unix и Windows, предоставляя места для поиска DCL-скриптов или программ, если введена неизвестная команда.

Например

$ DEFINE DCL$PATH SYS$DISK:[],SYS$LOGIN:,SYS$SYSTEM: 

Теперь просто введите: TEST this.

Hein

Смежные вопросы