關於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…
