• 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的顺序和对应的数据库文件的顺序一致。

      

     

  • 相关阅读:
    洛谷 P2294 【[HNOI2005]狡猾的商人】
    洛谷 P5960 【【模板】差分约束算法】/差分约束算法入门
    洛谷 P3916 【图的遍历】
    洛谷 P1347 【排序】
    洛谷 P3243 【[HNOI2015]菜肴制作】
    ES6,ES7,ES8,ES9,ES10新特性一览
    Sass、LESS 和 Stylus区别总结
    MyBatis更新用户信息操作
    MyBatis使用mapper映射文件删除用户信息
    MyBatis使用mapper映射文件添加用户信息
  • 原文地址:https://www.cnblogs.com/zrp201008/p/1870366.html
Copyright © 2020-2023  润新知