Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >执行外部功能后不工作的printf

执行外部功能后不工作的printf
EN

Stack Overflow用户
提问于 2014-01-03 07:07:16
回答 1查看 260关注 0票数 1

我有以下c#代码,它调用cobol程序:

代码语言:javascript
代码运行次数:0
复制
#include <stdio.h>
#include "libcob.h"
//#pragma linkage (verkoop, COBOL)

extern void VERKOOP(char *productid, char *aantal, char*resultaat);

main(int argc, char *argv[])
{
    int return_status;
    COB_RTD = cob_get_rtd();
    char *productid = "20    ";
    char *aantal = "000020";
    char resultaat[30];
    cob_init(rtd, 0, NULL);
    printf("hallo");//prints
    VERKOOP(productid, aantal, resultaat);
    printf("hallo");//doesn't print
    printf("resultaat:%s", resultaat);// doesn't print
    cob_stop_run (rtd, return_status);
}

我正在使用printf来查看结果是否被正确分配。但是,由于某种原因,VERKOOP之后的两行都不会打印。

这是VERKOOP的COBOL代码(他确实在这里正确地填写了LS-RESULTAAT,我用DISPLAY进行了尝试,这部分工作):

代码语言:javascript
代码运行次数:0
复制
*************************************************************
* VERKOOP  
*************************************************************
       IDENTIFICATION DIVISION.
       PROGRAM-ID. VERKOOP.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       SELECT PRODUCTEN ASSIGN TO "BESTANDEN/LIJSTPRODUCTEN"
           ACCESS MODE IS RANDOM
           ORGANIZATION IS INDEXED
           RECORD KEY IS PRODUCTID
           FILE STATUS IS WS-FILE-STATUS.

       DATA DIVISION.
       FILE SECTION.
       FD  PRODUCTEN BLOCK CONTAINS 10 RECORDS.
       01  PRODUCT.
           02 PRODUCTID PIC X(6).
           02 LEVERANCIERID PIC X(6).
           02 AANTAL PIC 9(6).
       WORKING-STORAGE SECTION.
       77  FOUT PIC X.
           88 PRODUCT-NIET-GEVONDEN VALUE 1.
       77 WS-PRODUCTID PIC X(6).
       77 WS-AANTAL PIC 9(6).
       77 WS-FILE-STATUS PIC XX.
       77 WS-RESULTAAT PIC X(30).
       LINKAGE SECTION.
       01 LS-PRODUCTID PIC X(6).
       01 LS-AANTAL PIC 9(6).
       01 LS-RESULTAAT PIC X(30).
       PROCEDURE DIVISION USING LS-PRODUCTID, LS-AANTAL, LS-RESULTAAT.

       MAIN.
           PERFORM INITIALISEER
           PERFORM LEES-PRODUCT-IN
           PERFORM LEES-BESTAND
           PERFORM SLUIT-BESTAND
           STOP RUN.

       INITIALISEER.
           OPEN I-O PRODUCTEN.
*          DISPLAY WS-FILE-STATUS..

       LEES-PRODUCT-IN.
           MOVE LS-PRODUCTID TO WS-PRODUCTID
           MOVE LS-AANTAL TO WS-AANTAL
           MOVE 'OK' TO WS-RESULTAAT
*          DISPLAY WS-RESULTAAT
           MOVE WS-RESULTAAT TO LS-RESULTAAT.       
*          DISPLAY "GEEF PRODUCTID OP: "
*          ACCEPT WS-PRODUCTID
*          DISPLAY "GEEF AANTAL OP: "
*          ACCEPT WS-AANTAL.

       LEES-BESTAND.
*      DISPLAY "LEES-BESTAND"
       MOVE WS-PRODUCTID TO PRODUCTID
*      DISPLAY PRODUCTID
*      DISPLAY WS-FILE-STATUS
       READ PRODUCTEN INVALID KEY SET PRODUCT-NIET-GEVONDEN TO TRUE
       END-READ 
       IF PRODUCT-NIET-GEVONDEN PERFORM FOUTJE    
       ELSE 
*      MOVE WS-PRODUCTID TO PRODUCTID
       SUBTRACT WS-AANTAL FROM AANTAL   
       PERFORM UPDATE-PRODUCT
       END-IF.


      UPDATE-PRODUCT.
        REWRITE PRODUCT INVALID KEY PERFORM FOUTJE.

        SLUIT-BESTAND.
*       DISPLAY "SLUIT-BESTAND"
           CLOSE PRODUCTEN.

        FOUTJE.
           DISPLAY "ER IS EEN FOUT OPGETREDEN"
           DISPLAY WS-FILE-STATUS
           STOP RUN.

更新:我尝试删除两个“停止运行的”,但由于某种原因,他现在减40而不是20,并打印"ER IS EEN FOUT OPGETREDEN“。因此,出于某种原因,他两次运行COBOL项目。

更新:替换了GOBACK运行的停止后,它运行得很好

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-03 07:33:01

您的停止运行在这里返回,cob_stop_run (rtd,return_status),因此在调用COBOL程序之后的前面代码不会运行。

如果退出程序位于“主”程序中(至少在语用用法方面是这样的),那么它将被视为停止运行。

GOBACK正在将控制权返回到您期望的位置。

如果您使用COBOL,正如已经建议的那样,那么退出程序的行为可能会有所不同。也许不是。

您正在使用一种无文档的方式调用COBOL程序。对于没有COBOL和您所拥有的相同操作系统的人来说,它的确切行为是未知的,也是不可能知道的,而且对于以一种不明显的方式做某事的耐心也是未知的。

如果有人建议你忽略这些问题,那么就很难继续回答你的问题。

再说一次,你有个任务。赋值要求您使用API。您应该使用API并使您的程序正常工作。如果稍后有时间,您可以查看一下语用用法,以实现互操作性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20906582

复制
相关文章
Linux下ssh远程主机报错:ssh_exchange_identification: read: Connection 解决
ssh_exchange_identification: read: Connection reset by peer
非著名运维
2022/06/22
14.4K0
Adb connection Error:远程主机强迫关闭了一个现有的连接
遇到这个问题呢,首先尝试拔掉数据线,然后重启adb,即点击DDMS视图中的reset adb,或者cmd中输入adb kill-server和adb start-server,最后连接数据线,发现大多数情况下并没什么卵用,然后试过多次之后发现,想砸电脑!啊哈哈~ 下面教大家一个终极解决办法:
Zachary46
2018/09/12
2.7K0
Adb connection Error:远程主机强迫关闭了一个现有的连接
python学习笔记(7)——远程主机强迫关闭了一个现有的连接
python socket.error: [Errno 10054] 远程主机强迫关闭了一个现有的连接。问题解决方案:
my_sunshine
2020/09/17
39.5K0
Python远程连接主机之paramiko模块
Python的paramiko模块能够连接远程主机,并在该主机上执行命令,和该主机之间进行文件传输。paramiko支持用明文密码登录远程主机和秘钥登录。使用之前要安装一下这个模块哈,pip install paramiko,不会安装可以百度哈。
用户1432189
2018/09/05
2.4K0
Python远程连接主机之paramiko模块
Unexpected EOF 远程主机强迫关闭了一个现有的连接 如何处理
尝试百度了不少方法,如time.sleep(1),response.close(),socket.setdefaulttimeout(20)。
dongfanger
2020/09/23
2.5K0
pycharm调试远程主机_eclipse连接远程服务器
1.首先下载pycharm专业版,路径自寻,这边就不细说了。(社区版不支持远程配置) 2.获取服务器的IP和密码 3.打开pycharm,点击菜单栏 :工具tools—>部署deployment–>configuration
全栈程序员站长
2022/09/28
3.7K0
pycharm调试远程主机_eclipse连接远程服务器
cos上传文件报错:ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
python方法调用cos api向cos上传文件时,报错:ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
用户8216114
2022/08/19
2.9K0
服务器远程连接/ssh方式连接教程(linux云主机远程登录)
Linux主机如何远程登录?建议使用ssh工具。使用Ssh连接登录的时候,需要先下载ssh登录客户端,下载安装完成之后可以进行Linux云主远程登录。
chenzhouliyan
2019/08/06
21.7K0
springboot整合redis一直报远程主机强迫关闭了一个现有的连接
需要修改一下2处,好像timeout 默认就是0,tcp-keepalive默认就是300,那为什么还回报错呢?可能是启动的时候没有指定配置文件
九转成圣
2024/05/08
4540
如何从命令行关闭或重启远程 Linux 主机?
在远程管理 Linux 主机时,有时需要通过命令行关闭或重启主机。本文将详细介绍如何使用命令行在远程 Linux 主机上执行关闭或重启操作,以确保安全和便捷地管理远程系统。
网络技术联盟站
2023/06/14
2.6K0
如何从命令行关闭或重启远程 Linux 主机?
ArcGIS Pro曲线OD图
最近看身边好多朋友都在发OD图的教程,这玩意也没难度啊,主要就是批量曲线化对一些朋友可能有点难度。
陈南GISer
2022/09/27
1.1K0
ArcGIS Pro曲线OD图
原来Python是这样连接远程主机的,你会吗?
在软件测试的过程中,涉及到远程Linux主机环境测试的时候,难免会遇到需要执行shell命令的场景,比如通过shell命令去配置一些环境或者去检查用例执行的结果等等,那么就是用到了比较常用的工具paramiko。
软测小生
2021/09/06
2.1K0
【问题解决】内网 VSCode 无法连接远程主机
这时候你认证看报错信息,它会尝试把你已经放置好的 vscode-server 删除掉,然后又删不掉,但是它默认已经删掉了,然后开始自己下载,但是又下载不了,于是就给你报错。
看、未来
2022/05/06
1.2K0
AMH云主机面板开启数据库远程连接
AMH默认是不支持远程连接数据库的,但是有时我们需要在其他地方使用我们的数据库,就需要开启远程连接,下面简单介绍下如何开启:
好派笔记
2021/09/16
9.1K1
SSH连接远程主机等待时间过长的解决方法
最近在使用SSH连接远程主机的时候发现在输入SSH命令之后要等很长很长时间才会出现输入密码的提示,而在别人机器上基本都是立即就可以显示输入密码的提示。令我非常不爽。谁叫咱是个急性子呢!所以也不想就这么等着,索性找找解决办法。终于,咱的机器也可以秒连远程主机啦!
星哥玩云
2022/07/03
1.4K0
腾讯云主机中MySQL无法远程连接的解决办法
崔庆才
2017/03/30
17K0
腾讯云主机中MySQL无法远程连接的解决办法
用secureCRT连接虚拟机中的Ubuntu系统,出现“远程主机拒绝连接”错误
因为我的Ubuntu中未安装ssh服务,终端下运行命令: sudo apt-get install openssh-server 之后重启一下sshd服务: sudo service sshd restart
周小董
2019/03/25
2.4K0
springboot 中spring-data-redis报错:远程主机强迫关闭了一个现有的连接,如何解决?
修改redis配置文件 redis.conf 中 tcp-keepalive 参数值
跟着飞哥学编程
2022/11/30
1K0
springboot 中spring-data-redis报错:远程主机强迫关闭了一个现有的连接,如何解决?
PyCharm远程连接Spark【本地虚拟机或云主机】
1、本地虚拟机版本是 CentOS6.9 | 连接的云主机是 Ubuntu18.04。【两个都连接成功了,方法步骤一样】
Lokinli
2023/03/09
2.3K0
PyCharm远程连接Spark【本地虚拟机或云主机】
Nagios 监控远程主机
上一篇文章介绍了 Nagios服务器的安装,本文继续介绍如何添加被监控的服务器,内容比较枯燥,都是安装过程,但希望能对准备使用Nagios的小伙伴有点帮助 远程监控原理 Nagios 与远程主机的
dys
2018/04/03
2.3K0
Nagios 监控远程主机

相似问题

ssh_exchange_identification:由远程主机关闭的连接

20

间歇“ssh_exchange_identification:由远程主机关闭的连接”错误

40

ssh_exchange_identification:由远程关闭的连接

10

散发连接错误ssh_exchange_identification:由远程主机关闭的连接

10

ssh_exchange_identification:由远程主机在vnx计算机上关闭的连接

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文