2016-05-05 2 views
3

Как запустить дочерний процесс в GnuCOBOL?Запуск дочернего процесса в COBOL

В Node.js, мы можем использовать либо spawn или exec начать дочерние процессы:

var proc = require("child_process").spawn("ls", ["-l"]); 
proc.stdout.on("data", function (chunk) { 
    console.log(chunk); 
}); 

// or 

var proc = require("child_process").exec("ls -l"], function (err, stdout, stderr) { 
    ... 
}); 

Оба вышеуказанных перспективе ls -l примеров (список файлов и каталогов). Как можно достичь того же результата в COBOL?

+0

Что такое Cobol ???; в Mainframe CICS/Cobol вы должны использовать команду CICS START –

+0

@BruceMartin Я использую 'GNUCobol'. Не могли бы вы добавить пример? –

+0

Не могу ответить. Я скопировал вопрос на форум GNU Cobol (https://sourceforge.net/p/open-cobol/discussion/help/thread/8ae787f2/), чтобы они знали об этом; Я бы предположил, что Билл/Брайан ответит на него в ближайшее время. Также добавлен тег GNU-Cobol –

ответ

5

Используйте общее расширение COBOL, который поддерживается с лет в GnuCOBOL (ранее OpenCOBOL), тоже:

CALL 'SYSTEM' USING whatever END-CALL 

Это работает с «cobcrun», тоже, и может быть полезно, если вам нужен процесс COBOL с микросхемой отдельная среда (EXTERNAL, ACCEPT x FROM y/SET ENVIRONMENT y TO x) или конфигурация времени выполнения (например, через cobcrun -c different.cfg OTHERMAIN).

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

CALL 'SYSTEM' USING 'ls -l >dirlist' 
    ON EXCEPTION 
    CALL 'SYSTEM' USING 'dir >dirlist' 
    END-CALL 
END-CALL 

После этого вы можете прочитать DirList как нормальная линия последовательного файла.

Simon

КСТАТИ: Учитывая ваш сэмпл может искать CALL 'C$LISTDIR'.

+0

О, хорошо! Большое спасибо! –

+0

Брайан указал на http://rosettacode.org/wiki/Fork#COBOL для получения подробной информации о форкинге в коболе –