RPGLE程序返回值问题
来源:互联网 发布:淘宝货款 编辑:程序博客网 时间:2024/05/05 03:55
当调用一个具有入口参数RPGLE程序的时候,在主调程序中CALL之后,我们给其传递的参数变量就有了值。
这些参数具有的值,是在被调程序传递回来的,也叫程序返回值;
如同DB2中存储过程里面的OUT参数(CREATE PROCEDURE PRO_CL(IN PARM1 CHAR(5),OUT PARM2 VARCHAR(100))...)
返回给过程调用程序的作用相同。
下面是一个例子,MAINCALL程序调用BECALL程序,将其返回值写入一个叫做CALLTST的物理文件里面:
MAINCALL :
FCALLTST UF A E DISK DRSLT DS DFLD1 10A DFLD2 D DFLD3 T DFLD4 Z C*程序控制 C EXSR @MAIN C EXSR @EXIT C*主控程序 C @MAIN BEGSR C CLEAR RSLT C*调用BECALL C CALL 'BECALL' C PARM RSLT C*给物理文件字段赋值 C EVAL SEQCOL = FLD1 C EVAL DTCOL = FLD2 C EVAL TMCOL = FLD3 C EVAL TMSTMP = FLD4 C*向物理文件写数据 C WRITE RCALL C ENDSR C*程序退出 C @EXIT BEGSR C EVAL *INLR = '1' C RETURN C ENDSRBECALL :
DDSPARM DS DSTR 10A DDTE D DTIM T DTSTMP Z DSEQCLB S 5A DTMP S 5S 0 DSTR1 S 5A INZ('21012') DSTR2 S 26A C*程序控制 C EXSR @MAIN C EXSR @EXIT C*@MAIN C @MAIN BEGSR C CLEAR DSPARM C*入口参数 C *ENTRY PLIST C PARM DSPARM C*取出数据域里面的值,并让其+1,然后写回数据域 C *DTAARA DEFINE SEQCLB C *LOCK IN SEQCLB C EVAL TMP = %INT(SEQCLB) C EVAL SEQCLB = %CHAR(TMP+1) C OUT SEQCLB C*给参数赋值 C MOVE TMP SEQCLB C STR1 CAT SEQCLB STR C C EVAL DTE = %DATE('2000-01-01') C EVAL TIM = %TIME('10.10.10') C*%TIME()函数, C EVAL STR2 = '1999-09-29-12.34.56.000000' C EVAL TSTMP = %TIMESTAMP(STR2) C C ENDSR C*程序结束 C @EXIT BEGSR C EVAL *INLR='1' C RETURN C ENDSR在进行编译,失败,调试,再编译之后,程序结果如下:
Line ....+....1....+....2....+....3....+....4....+....5....+....6 序列 日期 时间 时间戳 000001 2101200015 0001-01-01 00.00.00 0001-01-01-00.00.00.000000 000002 2101200016 0001-01-01 00.00.00 1999-09-29-12.34.56.000000 000003 2101200018 0001-01-01 10.10.10 1999-09-29-12.34.56.000000 000004 2101200019 2000-01-01 10.10.10 1999-09-29-12.34.56.000000 000005 2101200020 2000-01-01 10.10.10 1999-09-29-12.34.56.000000 000006 2101200021 2000-01-01 10.10.10 1999-09-29-12.34.56.000000 ****** ******** End of report ********第一行数据,添加序列值成功;
这里报日期,时间,或者时间戳格式不对,所以只添加序列值。
第二行数据,添加序列和时间戳成功;
确定时间戳格式无误。为了保证BECALL修改编译后没问题,这里CALL了一次,所以序列里面少了2101200017这个数字。
第三行数据,添加添加序列,时间,和时间戳成功;
查了ILE RPG Reference,发现默认的时间*ISO格式的分隔符为点(.),而程序给的分隔符却是冒号(:)。
在默认情况下,时间,日期,时间戳的格式都为*ISO格式,这也是程序内部格式。
若程序中有不同的时间,日期格式的话,推荐使用默认格式*ISO。
第四行数据,调试完全通过,添加所有字段的数据;
第五、六行,call了两次。
- RPGLE程序返回值问题
- RPGLE调用C程序的问题
- RPGLE程序例子---SO038
- 第一个RPGLE程序
- 第一个RPGLE程序
- 一个比较简单的RPGLE程序---HR017R
- RPGLE中获取日期时间值
- c程序中返回值问题
- linux环境c++程序调用shell返回值问题
- Delphi程序返回值
- python程序返回值
- 程序返回值
- 微信小程序后台返回中文乱码问题
- ExecuteNonQuery()返回值问题
- find_by_sql 返回值问题
- 返回值优化问题
- ExecuteNonQuery() 返回值 问题
- 函数返回值问题
- 结构体初始化
- [java]final关键字
- hdu1573 X问题 中国剩余定理
- WdatePicker 用法
- 游戏引擎发展漫谈(11-19) 好长啊。。。。 .
- RPGLE程序返回值问题
- Ajax 原理图解
- POJ 1463 Strategic game (树形DP,放置点覆盖边)
- SQL Server初探——T-SQL程序设计基础
- android滑动翻页主界面
- Fedora15 上配置Samba
- 释放tty控制台以作为通信串口
- 取消窗口置顶属性
- MSCRM4.0在批量编辑表单中不能触发js脚本