续《写给刚接触RPG的朋友 --- 如何编写RPG程序(2)》



上文中,只举例说明了如何对文件进行读写操作,下面再举一例子讲解如何对文件进行更新和删除:

(1)物理文件MYPF结构如下:




.....A..........T.Name++++++RLen++TDpB......Functions++++++++++++++++++

*************** Beginning of data *************************************

    A           R FMYPF                               

    A              PFFLD1                     4A            TEXT('FIELD1')       

    A                                                               COLHDG('FIELD1')       

    A              PFFLD2                     5P 0         TEXT('FIELD2')       

    A                                                               COLHDG('FIELD2')       

****************** End of data ****************************************



(2)逻辑文件MYLF结构如下:



.....A..........T.Name++++++.Len++TDpB......Functions++++++++++++++++++

*************** Beginning of data *************************************

     A          R FMYPF                                      PFILE(MYPF)         

     A          K PFFLD1                             

****************** End of data ****************************************



(3)假如文件有两笔记录如下:

PFFLD1         PFFLD2

================

RCD1               1

RCD2               2

================



(4)现需要把第一笔记录删除,把第二笔记录更新为"RCD2               3",代码如下:




.....FFilenameIPEAF........L..I........Device+......KExit++Entry+A....U

*************** Beginning of data *************************************

     FMYLF       UF   E           K       DISK                           

     F                      FMYPF                              KRENAMEFMYLF      

     C*                                                               

.....CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments++++

     C                      'RCD1'         SETLLFMYLF                                 

     C                      'RCD1'         READEFMYLF                                   90           

     C                      *IN90         IFEQ '0'                                   

     C                                         DELETFMYLF                                 

     C                                         ENDIF                                      

     C*                                                               

     C                      'RCD2'         SETLLFMYLF                                 

     C                      'RCD2'         READEFMYLF                                   90           

     C                      *IN90         IFEQ '0'                                   

     C                                        Z-ADD3                 PFFLD2                      

     C                                        UPDATFMYLF                                 

     C                                        ENDIF                                      

     C*                                                               

     C                                        SETON                                              LR               

****************** End of data ****************************************



【注】

(a)第一行中的MYLF是逻辑文件名,

  U位于I处,表示该文件只作更新操作,

  F处于P处,表示该文件是全过程文件,一般都写F,

  E位于F处,表示该文件是个外部文件,

  K位于I处,表示该文件有键值,

  DISK位于Device处,表示该文件是磁盘文件。

(注:该句声明文件MYLF只允许做更新操作,如果同时还要对其进行添加记录,那么只要在同行A处写个A就可以了,即

.....FFilenameIPEAF........L..I........Device+......KExit++Entry+A....U

*************** Beginning of data *************************************

  FMYLF     UF   E       K     DISK                       A                          

);



(b)第二行意思是把逻辑文件记录名FMYPF改为FMYLF,这里可改可不改。如果程序里有文件出现同名的记录名,那么必须通过这种方法把其他文件记录名进行重命名;



(c)第三行把指针定位到文件开头处;

(d)第四行中的READE表示读等于键值的记录。该句的意思是用值”RCD1“去读逻辑文件,注意,逻辑文件的键值是字段PFFLD1,所以执行到该句时,程序会拿这个值去找逻辑文件中字段PFFLD1值为'RCD1'所在的记录,找到的话指示器置为'0',反之,置为'1';



(e)第六行的DELET是删除记录,该句意思是删除当前读到的记录;

(f)第十三行的UPDAT是更新记录,该句的意思是更新当前的记录。



============================================================



到此为止,你对物理文件、逻辑文件的操作应该是基本掌握了!




轉自:新儒as/400家園

狼翔月影 發表在 痞客邦 PIXNET 留言(0) 人氣()