參閱:
(7)改變屬性值後更新運行時數據庫
用戶現在應該已經不能滿足於簡單的”helloworld“程序,而迫不及待地要嘗試更多邏輯複雜的應用程序了。那麼PD的PathName屬性或者TD的ProgName屬性或者兩個都可能需要修改,然後重啟region來使修改生效。但是重啟region會耗費太多的時間。下面兩種方法可以在修改屬性後避免重啟region。
a. 首先使用”cicsdelete -R“,然後運行”cicsupdate -B“
“cicsdelete -R“會將資源定義從運行時數據庫中刪除並從運行中的系統中卸載。”cicsupdate -B“可以更新持久化和運行時數據庫,並向運行中的系統中安裝資源定義。
b. 首先使用”cicsdelete -B“,然後運行”cicsadd -B“
嚴格來說,這不是更新而是重新添加資源定義。但是它行得通。
4. 練習
(1)在RGN1的bin目錄下通過”-e“和”-d“選項翻譯、編譯、連接”helloworld“程序。
(2)向RGN1中添加名為HELLOPRG的PD記錄。
(3)向RGN1中添加名為HELO的TD記錄。
(4)使用CEDF調試HELO交易並閱讀EDF顯示的信息。
(5)改變helloworld.ccs中”Hello“變量的內容以顯示其他字符串。重新編譯程序,運行HELO交易並觀察信息是否改變。
(6)完成下列的操作並觀察會發生什麼(確保region處於激活狀態並且上邊的練習已經完成)。
a. 首先刪除PD,接下來向持久化數據庫添加PD,然後運行HELO交易。
b. 首先刪除PD,接下來向持久化和運行時數據庫添加PD,然後運行HELO交易。
c. 首先刪除TD,接下來向持久化數據庫添加TD,然後運行HELO交易。
(7)更新PathName屬性來指向其他程序。
5. 答案
(1)在RGN1的bin目錄下通過”-e“和”-d“選項翻譯、編譯、連接”helloworld“程序。
#vi /var/cics_regions/RGN1/bin/helloworld.ccs
編輯程序的源代碼。
#cicstcl -e -d -lC helloworld.ccs
(2)向RGN1中添加名為HELLOPRG的PD記錄。
#cicsadd -c pd -r RGN1 HELLOPRG PathName=helloworld
(3)向RGN1中添加名為HELO的TD記錄。
#cicsadd -c td -r RGN1 HELO ProgName=HELLOPRG
(4)使用CEDF調試HELO交易並閱讀EDF顯示的信息。
使用cicslterm連接到region,運行CEDF交易並記錄下顯示的終端標識號(例如C9F2)。
在新的命令窗口使用cicslterm連接到region,運行CECI START TRANSID(HELO) TERMID(C9F2),然後回到第一個終端進行調試。
(5)改變helloworld.ccs中”Hello“變量的內容以顯示其他字符串。重新編譯程序,運行HELO交易並觀察信息是否改變。
“Hello“變量中的信息已經改變為新的字符串。
(6)完成下列的操作並觀察會發生什麼(確保region處於激活狀態並且上邊的練習已經完成)。
a. 首先刪除PD,接下來向持久化數據庫添加PD,然後運行HELO交易。
#cicsdelete -c pd -r RGN1 -B HELLOPRG
#cicsadd -c pd -r RGN1 HELLOPRG PathName=helloworld
會收到信息“ERZ014016E: Transaction ‘HELO’, Abend ‘A144’, at ‘D9F2’.”
b. 首先刪除PD,接下來向持久化和運行時數據庫添加PD,然後運行HELO交易。
#cicsdelete -c pd -r RGN1 HELLOPRG
#cicsadd -c pd -r RGN1 -B HELLOPRG PathName=helloworld
交易成功運行。
c. 首先刪除TD,接下來向持久化數據庫添加TD,然後運行HELO交易。
#cicsdelete -c td -r RGN1 -B HELO
#cicsadd -c td -r RGN1 HELO ProgName=HELLOPRG
會收到信息“ERZ033001E: Transaction ‘HELO’ rejected – ‘transaction not found'”.
(7)更新PathName屬性來指向其他程序。
#cicsdelete -c pd -r RGN1 -R HELLOPRG
#cicsupdate -c pd -r RGN1 -B HELLOPRG PathName=/var/bin/helloworld
TXSeries入門系列文章–單元三
數據管理
一部分
文件
三單元 數據管理
關於本單元
毫無疑問,商業交易離不開大量的數據,所以數據管理是一個相當大的主題。在本單元用戶將學到大量的關於TXSeries如何與來自文件、隊列和數據庫的數據一起工作的詳細命令。為了便於理解,本單元被分為五部分來展示如何去管理文件、TDQ/TSQ、MQ、DB2和Oracle。在學習本單元之前請確保已經完成了”Hello World“示例程序。
第一部分 文件
關於本部分
TXSeries可以在本地或遠程文件中讀取、寫入、更新、刪除和瀏覽數據。這裡的文件不同於可以使用像VI這樣的編輯器打開並被操作系統管理的文件。實際上,數據以文件形式被存儲在例如SFS,DB2和Oracle這樣的文件系統中,在定義了FD記錄後可以被TXSeries識別。本單元將只討論使用SFS作為文件系統的情況。
TXSeries為用戶提供了一些專用的工具和API,可以通過命令行和應用程序創建和訪問文件,例如”cicssdt“和”EXEC CICS READ“。用戶將會學習到如何使用這些工具,並編寫幾個程序來管理文件中的記錄。
1. 使用”cicssdt” 創建文件並編輯記錄
在通過命令行或API使用文件前,用戶需要創建一個文件並向其中添加一些測試數據。”cicssdt“是用於SFS文件管理的命令行工具(”cicsddt“用於DB2,”cicsodt“用於Oracle,它們的功能是相同的,在此只介紹”cicssdt“),允許用戶創建和編輯位於SFS服務器中的文件。
確保在使用此命令時SFS服務器是處於激活狀態的,這樣”cicssdt“可以連接到SFS服務器(使用”cicscp -v start sfs_server <SFSname>“來啟動一個SFS服務器)。
語法
cicssdt [-s <SFSname>] [-c <SDTcommands> …]
選項
-s: 指定連接到哪個SFS服務器。
<SFSname>: SFS服務器名稱,例如: /.:/cics/sfs/OceanLinux64。
-c: 指定使用的SDT命令列表。這個選項一定要在命令的最後。
<SDT commands>:SDT命令列表,包括創建、列出、寫入、刪除、信息等。
在第一個region被創建時會自動生成一個默認的SFS服務器,以機器的主機名(可以通過”uname -n“獲得)命名。本單元示例的主機名是”OceanLinux64“,SFSname是”/.:/cics/sfs/OceanLinux64“。
參閱:
上述語法是用戶需要知道的最簡單的用法。用戶可以使用諸如”cicssdt -s /.:/cics/sfs/OceanLinux64“的命令來連接指定的SFS服務器,稍後使用SDT命令;或者在最後直接添加SDT命令,就像在cicslterm命令中指定執行一個交易(cicslterm -r <regionName> -t <transactionID>),例如,”cicssdt -s /.:/cics/sfs/OceanLinux64 –c create file1“。”create file1“是SDT命令,下面將介紹最重要的命令:
(1)create <filename>
這條命令允許用戶在當前的SFS服務器中創建一個指定名稱的文件,並決定文件的組織形式、域的屬性(名稱、類型、尺寸,類似一個表)、索引名稱和排序方式等。
下面的示例在名為OceanLinux64的SFS服務器中創建一個”file1“文件,文件組織形式設置為BtreeClustered(KSDS),有三個域(包括id,名稱和年齡),id用作文件的索引並升序排列。KSDS是鍵序數據集,這是常用的默認類型,不同的類型在某些操作上可能會有所不同。若想了解更多的關於其他類型的信息,請參考本節的”參閱”。本部分所有的示例都是基於KSDS的。
“//“之後的藍色字體部分用於注釋。
#cicssdt -s /.:/cics/sfs/OceanLinux64 -c create file1
ERZ037068I/0500: CICSSDT talking to: ‘/.:/cics/sfs/OceanLinux64’
ERZ037069I/0501: Version [2.1 : 12-07-1995]
ERZ037070I/0502: Contacting Server …
ERZ037103I/0704: (Server OK)
cicssdt: -> create
[File Name……………………………: file1ile
[SFS Server Volume Name …….: sfs_SOceanLi //automatically filled
[File Organisation [E/R/B] ………: B[treeClustered] //default type
[Field 01: Name …………………….: id
[Field 01: Type ………………………: byteArray //recommended type for flexibility in programming
[Field 01: Size ……………………….: 3
[Field 02: Name …………………….: name
[Field 02: Type ………………………: byteArray
[Field 02: Size ……………………….: 10
[Field 03: Name …………………….: age
[Field 03: Type ………………………: byteArray
[Field 03: Size ……………………….: 3
以下文章點擊率最高
Loading…