2009年6月2日 星期二

写给刚接触RPG的朋友 --- 如何编写RPG程序(1)

http://it.sinru.com/bbs/read.php?tid=573

先说说RPG一般用来做什么吧,举例说:
1. 整个RPG程序不包含任何外部程序,只是做些简单的数学运算,或者对数据区、DATAQ等非文件目标进行操作,这属于相对最简单的情况;
2. RPG程序对物理文件或者逻辑文件进行读、写、更新、删除操作;
3. RPG程序结合物理文件或逻辑文件、以及显示文件进行操作,这属于比较复杂的情况;
4. RPG程序结合物理文件或逻辑文件、显示文件、以及ICF文件(即通讯文件)进行操作,这种情况也比较复杂。
当然,以上的情况只是平时使用的归纳,你也可以根据自己的实际需要结合各种情况,此处不再深入探讨。

以下结合例子简单说说各种情况,假设以下源码文件存放的路径是 库MYLIB、源物理文件MYSRCPF
1. (1)代码如下:

.....CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments++++
*************** Beginning of data *************************************
C 'HELLO, W'DSPLY
.....CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments++++
C SETON LR
****************** End of data ****************************************


【注】
DSPLY表示显示变量值;
SETON表示给指示器置为*ON的状态,即'1',“SETON LR”表示把LR指示器置为*ON,该句的意思表示最后一条记录,即程序结束。
在按F6创建成员时,source type一栏我们写RPG
然后按回车,进入编辑界面
按5下空格,输入C、然后按F4,在屏幕下方出现一个输入界面。
在这里边我们就很容易找到每个代码所对应的位置。
其中factory1和2里边是我们所操作的变量,他俩中间是用来操作变量的命令。
在往后的result里边是操作后的结果,然后的len是长度,然后的d是小数位数。
需要注意的是,一般来收,数字在输入的时候是要求右对齐的,字符左对齐。
输入完按回车,把光标移到0001.00处输入I按回车即可进入下一行。
还有一点,最后那一行的LR是对应EQ的,编辑完后按F3,在出现的界面中输入Y保存。

按F3保存,假设该文件名是MYRPG,所在的库是MYLIB,源物理文件是MYSRCPF。

编译调用前,要编辑库列表
输入EDTLIBL,按回车,在LIBRARY对应的位置上输入你的库名
在使用某个对象的时候要保证其存在,同时其所在的库也要在系统的库列表上能够找到。系统搜索所要用的对象时是按照系统的库列表的顺序从上向下进行查找的,例如:库列表为下所示
10 QLIB1
20 QLIB2
30 QLIB3
……
如果在QLIB1和QLIB2两个库中都有叫做OBJECT1的对象,那么当程序用到OBJECT1的时候,实际使用的将是位于列表前面的QLIB1中的 OBJECT1,而不是QLIB2中的,因此我们在编译和运行程序的时候一定要注意库列表的值,免得使用不合适的对象而造成程序运行不正确。

程序写好之后,应该进行编译了。用WRKMBRPDM FILE(MYLIB/MYSRCPF),找到刚才的文件MYRPG,输入14,按F4,进入“Create RPG/400 Program (CRTRPGPGM)” 画面,参数:
(i) Program: 生成的目标名(假如为MYOBJ);
(ii) Library: 生成的目标存放的库(假如为MYLIB)。
参数填好之后,按确认键即进行编译,如果程序没错,则生成目标文件,假设为MYOBJ。
在命令行输入CALL MYLIB/MYOBJ,这时命令上应该显示'HELLO, W'。
(【注】目标即可执行文件)

沒有留言:

張貼留言