AcuCobol 外部调用
AcuCobol external call
我正在尝试将我公司旧系统的一些功能集成到我们的新系统中。
我们在 ACUCOBOL v6.2 上有一些 COBOL 代码 运行。是否有一种简单的方法可以在不购买 AcuToWeb 或其他软件包的情况下进行外部 http 调用/甚至非 http 调用。
我可以想出几种方法来处理这个问题:
- 通过打开文件名以“-P”开头的 "file" 来调用外部(非 Cobol)程序。这使得 acucobol 为程序创建了一个管道。您可以读取或写入外部程序,但不能同时读取和写入。对于对话的另一方,我通常使用命令行参数或常规文件,但您不能轻松地同时打开两者。例如,打开
-Pcurl https://www.google.com/?q=acucobol
作为输入,或 -Pps2pdf > /tmp/pdf-file
作为输出并发送一些后记。
- 通过
CALL "SYSTEM" USING COMMAND-LINE
调用外部程序
- 创建一个与外部系统接口的 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 调用网络服务器。
RMNet 应用程序编程接口 (API) 模拟从网站提取信息或使用 SOAP 与 Web 服务交互的浏览器。
RMNet 在 Web 客户端(通常是 ACUCOBOL_GT 扩展程序)和 Web 服务器之间移动数据。通用资源定位符 (URL) 描述资源。资源决定了数据格式。例如,如果向浏览器使用的 Web 表单提交数据,则数据的格式必须符合 application/x-www-form-urlencoded 的 W3C 规范。与 SOAP Web 服务交互时,会交换 XML 个文档。
samples下的runtime文件夹里有samples看看rmnet文件夹
我正在尝试将我公司旧系统的一些功能集成到我们的新系统中。
我们在 ACUCOBOL v6.2 上有一些 COBOL 代码 运行。是否有一种简单的方法可以在不购买 AcuToWeb 或其他软件包的情况下进行外部 http 调用/甚至非 http 调用。
我可以想出几种方法来处理这个问题:
- 通过打开文件名以“-P”开头的 "file" 来调用外部(非 Cobol)程序。这使得 acucobol 为程序创建了一个管道。您可以读取或写入外部程序,但不能同时读取和写入。对于对话的另一方,我通常使用命令行参数或常规文件,但您不能轻松地同时打开两者。例如,打开
-Pcurl https://www.google.com/?q=acucobol
作为输入,或-Pps2pdf > /tmp/pdf-file
作为输出并发送一些后记。 - 通过
CALL "SYSTEM" USING COMMAND-LINE
调用外部程序
- 创建一个与外部系统接口的 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 调用网络服务器。
RMNet 应用程序编程接口 (API) 模拟从网站提取信息或使用 SOAP 与 Web 服务交互的浏览器。
RMNet 在 Web 客户端(通常是 ACUCOBOL_GT 扩展程序)和 Web 服务器之间移动数据。通用资源定位符 (URL) 描述资源。资源决定了数据格式。例如,如果向浏览器使用的 Web 表单提交数据,则数据的格式必须符合 application/x-www-form-urlencoded 的 W3C 规范。与 SOAP Web 服务交互时,会交换 XML 个文档。
samples下的runtime文件夹里有samples看看rmnet文件夹