dcl исполняющая программа с использованием чужой команды

Как бы вы поступили так?

У меня есть файл, который содержит около 40 строк, каждая строка является переменной для файла.exe.
Я настроил иностранную команду

$ CC := "$something$something:file.exe"

Затем я пытаюсь перебрать файл строка за строкой

{} Method1

$ OPEN a file.txt
$ loop:
$ READ/END_OF_FILE:end a b
$ CC b
$ goto loop
$ end:

Моя проблема в том, что значение b содержит кавычки (" ") вокруг него, file.exe не выполняется

Я также попытался поместить CC в начало каждой строки файла file.txt (как показано ниже) и запускать каждую строку 1 одновременно, как показано выше, но выдает ошибку, что он не может запустить CC.exe из расположения по умолчанию. Как вы можете видеть ниже, переменные 2-4 должны быть в двойных кавычках, если это имеет значение для идей метода 1.

{Способ 2}

$ CC variable1 "variable2" "variable3" "variable4"

В конце концов мне нужно выполнить около 10 из них за один раз, поэтому я думаю, что если бы я мог заставить метод 2 работать, это было бы лучшим.

2 ответа

Решение

Я не уверен, полностью ли я понимаю, чего вы пытаетесь достичь. Из того, что я прочитал, я бы для текстового файла (file.txt), как

This
That
"Quoted"
"Quoted blank"
" "
This and that
"This and" "that"

написать командную процедуру (echo.com) как

$ cc:=$sys$disk:[]echo
$ OPEN a file.txt
$ loop:
$ READ/END_OF_FILE:end a b
$ show symb b
$ CC 'b'
$ goto loop
$ end:
$ CLOSE a

который при запуске дает:

$ @echo
  B = "This"
arg1: 'this'
  B = "That"
arg1: 'that'
  B = ""Quoted""
arg1: 'Quoted'
  B = ""Quoted blank""
arg1: 'Quoted blank'
  B = "" ""
arg1: ' '
  B = "This and that"
arg1: 'this'
arg2: 'and'
arg3: 'that'
  B = ""This and" "that""
arg1: 'This and'
arg2: 'that'
$

где echo.exe - простая программа на C для вывода argv, начинающаяся с аргумента 1 и заключенная в одинарные кавычки; и $ show symb b просто чтобы показать, что на самом деле было прочитано из файла; содержание символов заключено в двойные кавычки.

Это более или менее то, что вы имели, кроме $ CC 'b' где одинарные кавычки говорят dcl расширить символ b. И закрытие входного файла после прочтения - неплохая идея.

Нет, нет необходимости DEFINE что-нибудь. Для иностранного командования вам не нужно иметь .exeэто по умолчанию.

Я смог заставить его работать, определив CC, а затем с помощью метода 2 для вызова каждой строки

DEFINE CC $something$something:file.exe;
Другие вопросы по тегам