如何在RPGLE /free中使用C风格返回值语法返回参数
在RPGLE /FREE环境下实现C风格返回值语法
在RPG开发中,若要避免通过参数列表传递返回值,采用类似C语言的直接返回值语法,需使用RPGLE的**函数(Procedure)**而非传统外部程序(EXTPGM)实现。以下是完整示例:
1. 调用程序(PGM_CALLER)
// 调用程序: PGM_CALLER dcl-pr GetReturnValue char(5); // 声明函数原型,指定返回值类型为char(5) Option char(1) const; // 输入参数,const标记为只读 end-pr; dcl-s Result char(5); // 存储返回值的变量 // 像C语言一样直接调用函数并接收返回值 Result = GetReturnValue('1'); *INLR = *ON; return;
2. 返回值函数程序(PGM_FUNCTION)
// 函数程序: PGM_FUNCTION dcl-pr GetReturnValue char(5) EXPORT; // 声明导出的函数原型,指定返回值类型 Option char(1); // 输入参数 end-pr; dcl-pi GetReturnValue char(5); // 函数定义,与原型返回值类型一致 Option char(1); end-pi; // 业务逻辑处理示例 dcl-s RetVal char(5); RetVal = 'SUCCESS'; // 生成返回值 return RetVal; // 直接返回结果,C风格语法 *INLR = *ON; // 标记程序结束
关键说明
- 必须使用
EXPORT关键字定义可被外部调用的函数,替代传统EXTPGM调用方式 - 函数原型(
dcl-pr)和函数定义(dcl-pi)必须明确指定返回值类型,确保类型一致 - 调用时直接通过
变量 = 函数名(参数)的形式接收返回值,无需额外传入用于返回的参数 - 函数内部使用
return 返回值;语法直接返回结果,无需依赖参数传递
内容的提问来源于stack exchange,提问作者mortimer
相关产品推荐
相关产品推荐

