关于RESETBR:
关于ENDBR:
https://www.ibm.com/support/knowledgecenter/SSAL2T_8.1.0/com.ibm.cics.tx.doc/reference/r_endbr.html
(3)更新记录
阅读了上面提供的READ命令的内容后,用户可能会注意到UPDATE选项。READ命令可以帮助我们更新记录,这跟SDT命令(参考有关”cicssdt“的内容)相似,但是它们的用法非常不同。
为了更新一条记录,用户可以通过使用READ命令加UPDATE选项来指定哪条记录会被更新,原始的记录也可以同时被检索。
语法
READ FILE(“<FD entry>”) INTO(<targetAddress>) RIDFLD(<recordIndex>) UPDATE
然后用户可以通过”memcpy“(推荐在memcpy之前使用memset将所有字节设置为‘\0’,这样可以避免旧记录中的意外数据的影响)修改targetAddress中的数据。
现在是时候通过REWRITE命令来更新记录了。
语法
REWRITE FILE(“<FD entry>”) FROM(<recordToWrite>)
选项
<recordToWrite> : 用于更新的记录的地址。
可以看到,REWRITE命令不能识别哪个记录会被更新,因为RIDFLD选项不被支持。所以REWRITE必须紧跟READ命令加UPDATE选项,否则将返回”INVREQ“。
下面是一个更新记录的例子。
源代码:
char index[3]=”3″ //id=3的记录将会被更新
EXEC CICS READ FILE(“myFile”) INTO(&record) RIDFLD(index) UPDATE;
//读取id=3的记录,并指定此条记录将被更新
memset(record.name,’\0′,10);
memcpy(record.name,”Jack”,4); //修改记录中的数据
//rewirte/update the record to file
EXEC CICS REWIRTE FILE(“myFile”) FROM(&record); //将修改后的记录写入文件
参阅:
关于更新记录:
关于REWRITE:
(4)写入记录
WRITE命令可以在被RIDFLD指定的位置添加记录。对于一个KSDS文件,新记录的索引值和RIDFLD值必须相同。
语法
WRITE FILE(“<FD entry>”) FROM(<recordToWrite>) RIDFLD(<recordIndex>)
选项
<recordToWrite> : 将要被添加的记录的地址
<recordIndex> : 这个值必须和记录中的索引值一样。
现在尝试向文件中添加记录。
源代码
char index[3]=”2″; //记录将被添加到第二个位置
memcpy(record.id,”2″,1);
//索引值(record.id)和recordIndex(char index[3])必须相同
memcpy(record.name,”Lisa”,4);
memcpy(record.age,”17″,2);
EXEC CICS WRITE FILE(“myFile”) FROM(&record) RIDFLD(index);
如果在WRITE命令后检查文件内容,用户将发现一条记录被插入到文件的第二个位置。
参阅:
(5)删除记录
有两种方法可以删除记录。一种是直接通过指定RIDFLD来删除,另一种类似于更新数据,使用READ命令加UPDATE选项,然后运行DELETE命令而不加RIDFLD。
a.直接删除
语法
DELETE FILE(“<FD entry>”) RIDFLD(<recordIndex>)
需要指定一个已存在的索引,否则会收到”NOTFND“。
b.使用READ命令
首先,指定一个要被READ命令删除的记录。
语法
READ FILE(“<FD entry>”) INTO(<targetAddress>) RIDFLD(<recordIndex>) UPDATE
接下来,使用DELETE命令删除这条记录。
语法
DELETE FILE(“<FD entry>”)
DELETE命令相当简单,用户可以阅读参考资料并亲自尝试一下。
参阅:
3. 练习
(1)在默认SFS服务器中使用下列数据创建一个名为”ksdsFile“的KSDS文件,设置id为唯一的主索引和索引域,记录升序存储。使用”info“检查文件信息。
(2)使用”cicssdt“顺序读取记录,并在逐条读取时将Anna的生日改为1995.03.05。
(3)使用”cicssdt“添加一条新记录:
id=5,name=Kristoff,birthday=1991.10.22,tel:010-64791234。
(4)向region RGN1中 添加一个FD,名为file1. 编写一个程序直接读取id=2的记录,然后以5-4-2-2-4 1-2的次序读取记录(需要将索引重设为1)。
(5)编写一个程序来添加一条记录:id=3,name=Olaf,birthday=2014.02.05,Tel=86-18643214321。
(6)编写一个程序为Elsa更新tel=86-8912344321。
(7)编写一个程序删除Hans的记录。
4. 答案
(1)在默认SFS服务器中使用下列数据创建一个名为”ksdsFile“的KSDS文件,设置id为唯一的主索引和索引域,记录升序存储。使用”info“检查文件信息。
查看Unit3/Part1 File/exercics1.txt中的操作记录。
(2)使用”cicssdt“顺序读取记录,并在逐条读取时将Anna的生日改为1995.03.05。
查看Unit3/Part1 File/exercics2.txt中的操作记录。
(3)使用”cicssdt“添加一条新记录:
id=5,name=Kristoff,birthday=1991.10.22,tel:010-64791234。
查看Unit3/Part1 File/exercics3.txt中的操作记录。
(4)向region RGN1中 添加一个FD,名为file1. 编写一个程序直接读取id=2的记录,然后以5-4-2-2-4 1-2的次序读取记录(需要将索引重设为1)。
#cicsadd -c fd -r RGN1 file1 RSLKey=public BaseName=ksdsFile IndexName=id
FileServer=”/.:/cics/sfs/OceanLinux64″
查看Unit3/Part1 File/ReadAndBrowse.ccs中的源代码。
(5)编写一个程序来添加一条记录:id=3,name=Olaf,birthday=2014.02.05,Tel=86-18643214321。
查看Unit3/Part1 File/Add.ccs中的源代码。
(6)编写一个程序为Elsa更新tel=86-8912344321。
查看Unit3/Part1 File/Update.ccs中的源代码。
(7)编写一个程序删除Hans的记录。
查看Unit3/Part1 File/Delete.ccs中的源代码。
TXSeries入门系列文章–单元三
数据管理
二部分 DB2
三单元 数据管理
以下文章点击率最高
Loading…