AcuCobol 外部呼叫



我正在尝试将我公司旧系统中的一些功能集成到我们的新系统中。

我们有一些 COBOL 代码运行在 ACUCOBOL v6.2 上。有没有一种简单的方法可以在不购买AcuToWeb或其他软件包的情况下进行外部http调用/甚至非http调用。

我可以想到几种方法来解决这个问题:

  1. 通过打开文件名以"-P"开头的"文件"来调用外部(非 cobol(程序。 这使得 acucobol 创建了通往程序的管道。 您可以读取或写入外部程序,但不能同时读取或写入两者。 我通常使用命令行参数或常规文件来表示对话的另一端,但您不能轻易同时打开两者。 例如,打开-Pcurl https://www.google.com/?q=acucobol输入,或-Pps2pdf > /tmp/pdf-file作为输出,并向其发送一些后记。
  2. 通过CALL "SYSTEM" USING COMMAND-LINE调用外部程序
  3. 创建一个将与外部系统接口的 C 子例程,并使用 AcuCOBOL 与 C 程序链接的方法。

可以使用 C$SOCKET 与端口 80 上的服务器建立套接字连接。
然后你可以发送一个http请求,一个阅读答案。

78  NL          value X"0A".
...
call "C$SOCKET" using AGS-CREATE-CLIENT,
port, host giving socket-handle
...
move spaces     to zw-get
move 1      to zw-length
string "GET "               delimited by size
"YourPath"          delimited by size
" HTTP/1.1"         delimited by size
NL                  delimited by size
"HOST: "            delimited by size
"YourHost"          delimited by size
NL                  delimited by size
NL                  delimited by size
into zw-get
with pointer zw-length
end-string
subtract 1      from zw-length 
call "C$SOCKET" using AGS-WRITE,
socket-handle, zw-get, zw-length
...
initialize zw-length zw-answer
call "C$SOCKET" using AGS-READ,
socket-handle, zw-answer, zw-length, READ-TIMEOUT

运行时内置了一个名为"rmnet"的实用程序,可以与使用 http 调用 Web 服务器的选项一起使用。

请参阅 RMNet 例程的文档。

RMNet 应用程序编程接口 (API(,用于模拟从网站提取信息或使用 SOAP 与 Web 服务交互的浏览器。

RMNet 在 Web 客户端(通常是ACUCOBOL_GT扩展程序(和 Web 服务器之间移动数据。通用资源定位器 (URL( 用于描述资源。资源指示数据格式。例如,如果将数据提交到浏览器使用的 Web 表单,则必须对数据进行格式化以符合 application/x-www-form-urlencoded 的 W3C 规范。与 SOAP Web 服务交互时,将交换 XML 文档。

运行时文件夹中有示例,在示例下查找 rmnet 文件夹。

最新更新