AcuCobol外部调用

AcuCobol外部调用,cobol,acucobol-gt,Cobol,Acucobol Gt,我正在尝试将我公司旧系统的一些功能集成到我们的新系统中 我们在AcuCOBOLV6.2上运行了一些COBOL代码。有没有一种简单的方法可以在不购买AcuToWeb或其他软件包的情况下进行外部http调用/甚至非http调用。我可以想出一些方法来处理这个问题: 通过打开文件名以“-P”开头的“文件”,调用外部(非cobol)程序。这使得acucobol创建到程序的管道。您可以读取或写入外部程序,但不能同时读取或写入。我通常在对话的另一端使用命令行参数或常规文件,但不能同时打开这两个参数。例如,打开

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


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

我可以想出一些方法来处理这个问题:

  • 通过打开文件名以“-P”开头的“文件”,调用外部(非cobol)程序。这使得acucobol创建到程序的管道。您可以读取或写入外部程序,但不能同时读取或写入。我通常在对话的另一端使用命令行参数或常规文件,但不能同时打开这两个参数。例如,打开
    -Pcurlhttps://www.google.com/?q=acucobol
    作为输入,或
    -Pps2pdf>/tmp/pdf文件作为输出,并向其发送一些postscript
  • 使用命令行通过调用“系统”调用外部程序
  • 创建一个与外部系统接口的C子程序,并使用AcuCOBOL与C程序链接的方法

  • 我可以想出一些方法来处理这个问题:

  • 通过打开文件名以“-P”开头的“文件”,调用外部(非cobol)程序。这使得acucobol创建到程序的管道。您可以读取或写入外部程序,但不能同时读取或写入。我通常在对话的另一端使用命令行参数或常规文件,但不能同时打开这两个参数。例如,打开
    -Pcurlhttps://www.google.com/?q=acucobol
    作为输入,或
    -Pps2pdf>/tmp/pdf文件作为输出,并向其发送一些postscript
  • 使用命令行通过调用“系统”调用外部程序
  • 创建一个与外部系统接口的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
    

    您可以使用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应用程序编程接口(API),用于模拟从网站提取信息或使用SOAP与web服务交互的浏览器

    RMNet在web客户端(通常是ACUCOBOL\u GT扩展程序)和web服务器之间移动数据。通用资源定位器(URL)描述资源。资源指定数据格式。例如,如果向浏览器使用的web表单提交数据,则数据的格式必须符合W3C application/x-www-form-urlencoded规范。当与soapweb服务交互时,XML文档被交换


    运行时文件夹中的示例位于“示例查看rmnet文件夹”下。

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

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

    RMNet在web客户端(通常是ACUCOBOL\u GT扩展程序)和web服务器之间移动数据。通用资源定位器(URL)描述资源。资源指定数据格式。例如,如果向浏览器使用的web表单提交数据,则数据的格式必须符合W3C application/x-www-form-urlencoded规范。当与soapweb服务交互时,XML文档被交换


    运行时文件夹中的示例位于samples下,请查看rmnet文件夹。

    您可以在同一台机器上从C/C++(如果我没有错,甚至Java)调用代码-这就足够了吗?如果没有:您的确切调用场景是什么?您可以在同一台机器上从C/C++(如果我没有错,甚至Java)调用代码-这就足够了吗?如果没有:您的确切通话场景是什么?