IBM i (OS/400)如何通过CL程序调用动态链接库(DLL)

作者:佚名 上传时间:2023-05-28 运行软件:CL程序 软件版本:IBM i 7.3 版权申诉

本示例代码演示了如何在IBM i (OS/400) CL程序中动态调用Windows下的动态链接库(DLL)。通过调用API QP2LOADPRC,CL程序可以加载动态链接库并调用其函数,实现CL与其他语言(如C++)的交互。

/* 定义变量和常量 */
             DCL VAR(&STR1) TYPE(*CHAR) LEN(100)
             DCL VAR(&STR2) TYPE(*CHAR) LEN(100)
             DCL VAR(&BUFFER) TYPE(*CHAR) LEN(200)
             DCL VAR(&ACTLVL) TYPE(*INT) VALUE(0)
             DCL VAR(&HANDLE) TYPE(*PTR)
             DCL VAR(&MODHANDLE) TYPE(*PTR)
             DCL VAR(&PROCADDR) TYPE(*PTR)
             DCL VAR(&RC) TYPE(*INT)

/* 加载动态链接库 */
             CALL PGM(QP2TERM)
             CALL PGM(QP2SHELL) PARM('/QOpenSys/pkgs/bin/ldd /full/path/dllname.dll')
             RTVJOBA JOBQ(&JOBQ) ACTLVL(&ACTLVL)
             CHGJOB INQMSGRPY(*DFT) LOG(4 00 *NOLIST)
             CHGJOB INQMSGRPY(*DFT) LOGCLPGM(*NO)
             CHGVAR VAR(&STR1) VALUE('export Qp2LoadPr' *BCAT 'oc')
             CHGVAR VAR(&STR2) VALUE('dllname.dll')
             CALLPRC PGM(QCMDEXC) PARM(&STR1)
             MONMSG MSGID(CPF0000) EXEC(DO)
/* 获取函数地址 */
             CALLPRC PGM(QP2GETINFO) PARM(&HANDLE &MODHANDLE &STR2 +                                                
 &BUFFER X'000000C8' 4)
             CHGVAR VAR(&BUFFER) VALUE(%SST(&BUFFER 9 4))
             CHGVAR VAR(&PROCADDR) VALUE(%BIN(&BUFFER))
/* 调用动态链接库函数 */
             CALLPRC PGM(QP2CALLPRC) PARM(&PROCADDR 'i*(i)' &RC)
/* 检查调用结果 */
             IF COND(&RC *NE 0) THEN(DO)
             /* 错误处理代码 */
             ENDDO

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
IBM i (OS/400)如何通过CL程序调用动态链接库(DLL)
本示例代码演示了如何在IBM i (OS/400) CL程序中动态调用Windows下的动态链接库(DLL)。通过调用API QP2LOADPRC,CL程序可以加载动态链接库并调用其函数,实现CL与其
IBM i 7.3
CL程序
2023-05-28 17:44
IBM iOS/400)中的CL程序如何调用API?
IBM i OS/400是一个功能强大的操作系统,可以使用CL程序调用API(应用程序接口)以实现更高级的功能。下面是一个简单的示例代码,展示了如何在CL程序中调用API。示例代码/* 以下是调用
IBM i 7.4
IBM Rational Developer for i 9.7
2023-03-13 03:06
如何IBM i (OS/400)中使用CL程序调用RPG程序
本示例演示了如何在IBM i (OS/400)中使用CL程序调用RPG程序的方法。使用CL程序可以快速方便地调用各种RPG程序完成复杂任务。/* CL程序调用RPG程序 */PGMDCL VA
IBM i 7.3
IBM i (OS/400)
2023-03-20 00:23
如何IBM iOS/400)中使用 CL程序调用RPG程序
本文介绍在IBM i (OS/400)操作系统中使用CL程序(Control Language Program)调用RPG程序的方法。RPG是一种面向IBM i (OS/400)操作系统的高级编程语言
IBM i 7.3
IBM i (OS/400)操作系统
2023-05-23 11:52
如何IBM i (OS/400)中使用CL程序调用SQL语句?
在IBM i (OS/400)中,使用CL程序调用SQL语句涉及以下步骤:创建SQL存储过程: 首先,确保已经在系统上创建了包含所需SQL语句的存储过程。可以使用SQL工具或其他方法创建并测试该
IBM i (OS/400)
IBM i (OS/400)
2023-11-29 08:28
使用IBM i (os/400)中的CL程序调用Python脚本
本示例使用IBM i操作系统中的CL程序调用Python脚本,实现在IBM i上运行Python脚本的功能。CL程序为IBM i中的命令行接口程序,使用CL程序调用Python脚本可以使得IBM i系
IBM i 7.4
IBM i CL程序 + Python脚本
2023-03-31 20:10
IBM i (OS/400)中使用CL程序调用Java代码
本示例演示了如何在IBM i (OS/400)中使用CL程序调用Java代码。需要安装Java 8及以上版本。该示例可以帮助开发人员在IBM i上使用Java的特性。/*开发CL程序*/PGM
IBM i 7.4
IBM Rational Developer for i
2023-03-18 20:40
IBM i (OS/400)中如何使用CL语言
IBM i系统中的CL语言(Control Language)是一种能够调用系统命令和编写程序的脚本语言。它基于命令行操作,通过执行一系列指令来完成任务。本文将介绍一些常用的IBM i系统命令和CL语
7.3
IBM i (OS/400)
2023-03-31 18:58
使用IBM i (OS/400)的CL程序自动备份
这个示例展示了如何使用IBM i (OS/400)的CL程序来自动备份系统上关键的文件和目录。这个程序将创建一个备份文件并将它压缩存储到指定的备份目录中。程序还支持自动删除旧的备份文件以节省磁盘空间。
IBM i (OS/400)
IBM
2023-04-01 03:53
IBM i (OS/400)中如何使用CL编写简单的程序
在IBM i系统(OS/400)中,CL是一种常用的编程语言,用于编写各种简单的程序。下面我们将介绍如何使用CL编写简单的程序。示例代码下面是一个使用CL编写的简单程序示例:/* 定义变量 */
OS/400 V7R1
IBM i Access Client Solutions
2023-04-14 17:09