上文中,只举例说明了如何对文件进行读写操作,下面再举一例子讲解如何对文件进行更新和删除:
(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家園
留言列表