已经接触as400有10多天了,觉得很有必要总结一下,日后用得着的时候还可以看看,新手的无奈就在于遇到问题时无从下手,一些自己觉得难以解决的问题,在老手眼中,根本就是些很幼稚的问题,好啦,闲话少说,先总结。

      建议一个RPG工程步骤。

     1.建议一个library,比如zrplib。 然后在库中建立object  ,通常有以下几种object , 数据库定义文件:QDDSSRC , 画面文件:QDSPSRC,RPG程序文件:QRPGSRC,帐票还没学,以后再补上。

       这几个文件分别有自己各自的作用,QDDSSRC主要用于建立数据库,在此文件下,建立物理文件和逻辑文件,定义数据库的字段和长度等,用A表描述。

        QDSPSRC文件下,建立画面文件,用A表描述。

        QRPGSRC文件下,用于写RPG程序,引入以上的数据库文件和画面文件,然后就可以对文件里的变量进行操作啦,不用再定义,可以直接应用,主要有,H表:定义时间,F表:引用文件,E表:定义数组,I表:定义时间的格式,C表:操作,所以重点是C表。

       简单的描述了一下文件结构,该说说细节了,免得日后自己用到的时候又难以记起。

       1)首先用STRPDM命令,进入编程环境,进入后,用EDTLIBL命令,先加入自己的库名称(zrplib)吧,免得等下编译不通过,报个40级错误,吓人。自己在这点上由于没有注意到,所以几次都载了跟头,疑惑,上次还能编译通过的,怎么这次又不能啦,加上就好啦。

       2)进入DEBUG模式,也有一点需要注意,不然一开始就疑惑,为什么我的不能单步调试呀,而其他人又可以,一问才恍然大悟。原来RPG程序中,涉及到有数据WRITE的,输入STRISDB后,进入的画面,有个是否有修改数据项(默认为*NO),把此项设为*YES,就可以了进行单步调试啦。

     3)用IF(只读)引入文件时不会被锁住的,而用O(只写)、UF(后面没A,只更新)、UF(后面有A,写/更新)都会锁住文件。

     4)在给文件定位时读取时,有点也要注意,引入文件时用UF的,如果CHAIN时,会把文件锁住,按下F4,在H/N/P项下,输入N,表示不锁。(还没试过,有空要试试)

    5)如果在编辑一本程序时,要参考其他的程序,既要显示两个窗口。在打开一个画面时,按下SHIFT+F3,然后写上要参考的程序的MEMBER,OBJECT,LIBRARY名即可。

    6)RPG程序中,没有局部变量的说法,全部都是全局变量。此外,在画面文件定义功能键(用CF定义,画面上的值可以返回到程序中,用CA定义,不返回,通常用于退出功能键),然后在RPG程序,判断功能键是否被执行(比如F3),用*IN03 IFEQ ’0'  0既表示被执行了,与*OFF对应,‘1’表示没有被执行,与*ON对应。

     7)编程时,有错误时在所难免的,那如何查看编译的错误呢。在命令行,输入WRKJOB,然后选择4,进入SP文件,然后选择最后一个就刚刚编译出现错误的文件,选择5查看错误信息,在第一个命令行输入B,跳到最后一页,查看总的错误数。然后再第二行输入错误的序列号,按下SHIFT+F4就可以跳到错误的位置。(都是英文的,现在我终于知道英语一直都是多么重要。)

    8)在写入数据库文件,只能用RECORD名,而读数据,既可以用表名,也可以RECORD名。

    9)写入的模式

 001.00       C      CLEAR*****R

 002.00       C     **  一些赋值语句比如MOVE A B

 003.00        C    WRITE*****R

清空的命令,是把字符清为空,而数字变为0

   10)MEMBER SIZE的改变

       找到对应的OBJECT,按下F10,

       Initial number of records 10000     把默认的值设置一下就可以啦

接下来,介绍一些常用的命令:

STRPDM      进入编程环境

EDTLIBL      加入库文件

RUNQRY       *N       库名/object名   查看数据库的数据

CTRLIB      对LIBRARY的操作

CRTSRCPF(DBCS *YES)   对OBJECT的操作。注意,如果要写入中文的,把DBCS项设为YES

         行命令的使用

  1. 行的插入( I, In, n=数字 )
  2. 行的删除( D, Dn, DD )
  3. 行的复制( 复制内容的指定: C, Cn, CC 复制位置的指定: A, An, B, Bn )
  4. 行的移动( 移动内容的指定: M, Mn, MM 移动位置的指定: A, An, B, Bn )
  5. 行的重复复制( 复制内容的指定: CR, CRn, CCR 复制位置的指定: A, An, B, Bn )
  6. 行的复制( 向空白部分复制, ( 复制内容的指定: C, Cn, CC 复制位置的指定: O, On )
  7. 一行内容的移动(L, Ln, LL, LLn, R, Rn, RR, RRn )
  8. 文件内字符串的查找( F14, F ‘字符串’  <F>)
  9. 文件内字符串的替换( F14, C ‘字符串1’,’ 字符串2’  ALL)
  10. 其他MEMBER的参照( F15 )
  11. 编辑内容的保存( F3)

 

 

小结完毕。