2016-05-05 72 views
3

如何在GnuCOBOL中啓動子進程?在COBOL中啓動子進程

在Node.js的,我們可以使用spawnexec啓動子進程:

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 ???;在大型機CICS/Cobol中,您可以使用CICS START命令 –

+0

@BruceMartin我正在使用'GNUCobol'。你可以添加一個例子嗎? –

+0

我不能回答。我已經將問題複製到GNU Cobol論壇(https://sourceforge.net/p/open-cobol/discussion/help/thread/8ae787f2/),以便他們知道它;我會想象比爾/布萊恩很快就會回答。還添加了GNU-Cobol標籤 –

回答

5

使用它,因爲年GnuCOBOL(原OpenCOBOL)支持常見的COBOL擴展,太:

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爲法線順序文件。

西蒙

BTW:鑑於您的樣品您可能CALL 'C$LISTDIR'

+0

哦,真好!非常感謝! –

+0

布賴恩指出http://rosettacode.org/wiki/Fork#COBOL有關在cobol中分岔的詳細信息 –