RPG程序中一些小结

一.数组的使用。

  1.定义(用E表定义)

         E                   TEXT       1     2      10

         说明:按下F4时,TEXT对应的是Name,1对应的是Record,2对应的是Table,表示数组的元素个数,10对应的是of Entry,表示每个元素的长度。

  2.赋值

      在RPG程序的最后

         0701.00  **

         0702.00     添加成功!

         0703.00     更新成功!

        说明:**的下一行表示数组元素第一个元素的值,再下一个行是数组的第二个元素的值......

  3.数组的使用

         0601.00  MOVELTEXT,1     变量1

         0602.00  MOVELTEXT,2     变量2

      说明:第0601.00行表示把数组的第一个元素的值赋给变量1,第0602.00行表示把数组的第一个元素赋给变量2......

二.画面

   1.布局一个日期到另一个日期的画面,既  "日期1  -日期2"的格式

   A         D1FROM            8Y  OB            3  28EDTWRD('_ _ _ _ /_ _ /_ _')

   A                                                              EDTMSK('_ _ _ _ &_ _ &_ _')

   A                                                       3   40'-'

   A         D1TO                8Y  OB            3   43EDTWRD('_ _ _ _ /_ _ /_ _')

   A                                                               EDTMSK('_ _ _ _ &_ _ &_ _')

    说明:EDTWRD为数据的显示格式,比如2010/11/06,EDTMSK为输入日期时的格式,输入日期的时候,输入年后,&全都会变成空格,所以年、月、日之间都会空格,这样很清楚。

三.subfile文件的显示

   1.定义

      A*****************************************

      A             R  PNLS01                SFL

      A                 S1LLNO     8A O   6   2

      A                 S1YDDT     8Y 0O 6  11

                            ...

      A*****************************************

      A             R  PNLC01                 SFLCTL(PNLS01)

      A                                             OVERLAY

      A                                             PROTECT

      A                                             SILSIZ(16)  SFLPAG(15)

      A    25  26                                SFLDSP   SFLEND

      A    25                                      SFLDSPCLT

      A    N25                                    SFLCLR

      A                                             SFLCSRRN(&CLRECN)

      A                 C1RRN    4S OH     SFLRCDNBR(CURSOR)

      A                 C1RECN  5S OH 

      A                 C1PAGN  5S OH     SFLSCROLL

      A                 MODE     1A   H 

      A                                         5  2'单号'

      A                                               COLOR(WHT)

                          ......  

      A*********************************************

     说明:

   1)SUBFILE的主要关键字

       (1)    SFL

       (2)    SFLCTL(PANEL名)

       (3)    SFLSIZ

       (4)    SFLPAG

       (5)    SFLDSP

       (6)    SFLDSPCTL

       (7)    SFLEND(当尚有数据时,会在SUBFILE右下端显示*more)

       (8)    SFLCLR(subfile的清空)

       (9)    SFLINZ(subfile的初始化, 此时,数值域均为0)

       (10)SLFDLT

       (11)SFLLIN(RECORD间隔的SPACE数)

       (12)SFLDROP(CA**)(CF**)
    适用于每个record占多行的subfile,按了CF**或CA**,则多行显示状态和每个record仅显示第一行的状态互相切换. 注意, 初始状态为每个record仅显示第一行的状态.

        (13)SLFFOLD(CA**)(CF**)
        同SFLDROP. 不同的是初始状态为多行显示状态

        (14)ROLLUP(**)---à page down

        (15)ROLLDOWN(**)--à page uP

     2)SUBFILE的主要命令

        (1)    WRITE(SUBFILE记录的写入)

        (2)    UPDAT(SUBFILE记录的更新)

        (3)    CHAIN(SUBFILE记录的CHAIN,用相对记录号RRN CHAIN)

        (4)    READC(SUBFILE中有变更的记录顺次读取)

    3)RPG中操作subfile文件

      (1)subfile文件的引入

    /***F 文件的引入

         FxxxxxD     CF        E            WORKSTN

         F                                         RRN   KSFILE PNLS01

         F                                               KINFDS CURPOS

    /*****在subfile显示前,要注意清空subfile 

         C*************************************************

         C            Z-ADD0             RRN       5O

         C            Z-ADD0             W@MRRN    50

         C            Z-ADD              C1RRN  

         C            MOVEL *OFF         *IN25

         C            WRITEPNLC01

         C***************************************************

    /*****赋值

         C***************************************************

         C             MOVEL*ON           *IN25

         C             MOVELD1FROM        S1YDDT

         C              ......

         C             ADD  1              RRN

         C             WRITEPNLS01

         C             Z-ADDRRN            W@MRRN

         C***************************************************

   /****** 处理

         C***************************************************

         C              RRN   IFEQ 0

         C                    MOVEL*OFF     *IN26

         C                    ENDIF

         C****************************************************

   /****** 显示

         C****************************************************

         C                     WRITEPNLD99

         C                     WRITEPNLD01

         C                     EXFMTPNLC01

         C****************************************************

  说明:在subfile的使用中,要特别注意以上的25、26标志位控制,SFLSIZ表示最大可显示的行数,SFLPAG表示要显示的行数,如果添加一条数据后,行号RRN要加1.

  四.I表的使用

     1.定义

    /****** I

        I*************************************************

        I           SDS

        I                                      1  10PGMD

        I                                    254  263USID

        I***************************************************

        ILDA        DS

        I                                      1  10OUTQ

        I                                     11  14FDCD

        I                                     11  12FDCD1

        I                                     13  14FDCD2

        I***************************************************

        I           DS

        I                                      1  14ODSTMDT

        I                                      1   6ODSTIME

        I                                      7  14ODSUDAT

        I***************************************************

   说明:第一部分为系统自动的I表,第二和第三部分为自己定义的,表名为LDA。

   2.赋值

        C****************************************************

        C         *NAMVAR      DEFN         *LDA        LDA

        C                      IN            LDA

        C                      TIME                    DSTMDT

        C*****************************************************

    说明:TIME是系统自带的时间,把它赋给DSTMDT后,也就自动把1到6位赋给了DSTIME,7到14位赋值给了DSUDAT.

五.PRG程序的调试

 1.输入命令strisdb,填好RPG程序名和所属的库名后,有一个参数Udate production files   *NO    表示要调试的程序是否有文件的更新操作,如果有,无比要把此参数设为YES,然后会弹出参数的提示,程序有入口参数则要输入参数。

六.帐票文件

  1.在其文件名前,输入14表示编译,19表示显示。WRKSPLF 报表指定的打印机.

七.一些命令

   1.CALL 一本有参数的RPG程序

       CALL PGM(LIB/OBJ)   PAM('1''2')

   2.查看某本程序编译到那个库了。

       WRKOBJ  *ALL/STUDR   /*STUDR是要查看的程序的名称*/

八.快捷键

 1. Ctrl+Insert   复制选中的

 2. Shift+PageDown   粘贴

 3.Shift+F6  1)如果参看SP文件时(WRKJOB->4或WRKSPLF),其功能是翻到最后一页.2)如果是在某本程序前输入了14,既将要编译前,按下这个组合键,则可以填写要编译到那个默认的库.

 4.Shift+Esc   填系统参数

 5.Shift+F4   在编程时,在命令行输入某个值后,进行对该值的查找。

九.错误提示

The length of KFLD is not equal to the length of the corresponding key in the file.

原因:定义的KLIST的顺序和对应的数据库文件的KEY的顺序不同,解决办法,可以是新建一个逻辑(L)文件,使得KLIST的顺序和对应的数据库文件的顺序一致。

  

 

原文地址:https://www.cnblogs.com/zrp201008/p/1870366.html