AS400中文培訓(xùn)教程之DB_第1頁
AS400中文培訓(xùn)教程之DB_第2頁
AS400中文培訓(xùn)教程之DB_第3頁
AS400中文培訓(xùn)教程之DB_第4頁
AS400中文培訓(xùn)教程之DB_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第三部分 數(shù)據(jù)庫文件管理這一部分的各章節(jié)主要講述了管理數(shù)據(jù)庫文件的有關(guān)內(nèi)容:·增加新成員·改變已存在成員的屬性·對(duì)成員重新命名·從一個(gè)數(shù)據(jù)庫文件中移出成員只針對(duì)物理文件的成員操作:·初始化數(shù)據(jù)·清除數(shù)據(jù)·重新組織數(shù)據(jù)·顯示數(shù)據(jù)此外,還介紹以下內(nèi)容:·修改數(shù)據(jù)庫文件的描述和屬性(包括修改文件描述中字段的影響)·修改物理文件的描述及屬性·修改邏輯文件的描述及屬性·使用數(shù)據(jù)庫屬性和交叉引用信息這一部分還包括有關(guān)數(shù)據(jù)庫文件的信息,如:·屬性 約束 觸發(fā)器·字段的描

2、述·字段間的聯(lián)系·程序使用的文件·系統(tǒng)交叉引用文件·如何寫一個(gè)可直接輸出到數(shù)據(jù)庫文件的命令 這一部分還會(huì)幫助你如何在系統(tǒng)故障時(shí)恢復(fù)數(shù)據(jù)庫文件:·保存和重存·日志·使用輔助存貯器·使用落實(shí)控制此外,還將介紹訪問路徑的恢復(fù),包括:·重建訪問路徑·做訪問路徑的日志在關(guān)于源文件的部分將討論源文件的概念及使用源文件的原因,并介紹如何建立源文件、如何向源文件中輸入數(shù)據(jù)以及使用源文件所在系統(tǒng)中生成目標(biāo)的方法。3.1第十章 數(shù)據(jù)庫成員管理在你對(duì)一個(gè)文件執(zhí)行任何輸入或輸出操作之前,必須保證該文件中至少有一個(gè)成員。

3、一般說來,數(shù)據(jù)庫文件中只有一個(gè)成員,該成員是在此文件生成時(shí)(同時(shí))生成的。該成員與這個(gè)文件同名,除非你對(duì)它重新命名。由于絕大多數(shù)數(shù)據(jù)庫的操作都假設(shè)要使用的成員是文件中的第一個(gè)成員,又由于絕大多數(shù)的文件只有一個(gè)成員,因此一般不考慮說明成員名。如果一個(gè)文件中有多個(gè)成員,則每個(gè)成員作為文件中數(shù)據(jù)的一個(gè)子集。這樣更容易對(duì)數(shù)據(jù)分類。例如,定義一個(gè)接收支票文件,你決定在文件中將數(shù)據(jù)保存一年,但卻要每個(gè)月處理一次數(shù)據(jù)。例如,生成一個(gè)有12個(gè)成員的物理文件,每個(gè)月份一個(gè)名字,那么,可以分別處理每個(gè)月的數(shù)據(jù),也可以處理幾個(gè)或所有的成員。3.1.1 對(duì)所有數(shù)據(jù)庫文件成員的一般操作系統(tǒng)提供了如下方法:·對(duì)

4、已存在文件增加新成員·修改現(xiàn)存成員的屬性(例如,成員的說明)而不重生成該成員·對(duì)一個(gè)成員重新命名·從一個(gè)文件中移出成員下面討論這些操作。3.1.1.1往文件中增加新成員可用以下方法中任何一種往文件中增加成員:·自動(dòng)增加。當(dāng)使用CRTPF(生成物理文件)命令或CRTLF(生成邏輯文件)命令生 成一個(gè)文件時(shí),其缺省值是自動(dòng)地在此文件中加一個(gè)成員(成員名與文件名相 同)。CRTSRCPF生成源物理文件時(shí),其缺省值是不生成成員,可以在生成數(shù)據(jù) 庫文件命令時(shí)通過設(shè)置MBR參數(shù)來指定一個(gè)不同的成員名。如果你不想在文件 生成時(shí)加入一個(gè)成員,那么就在MBR參數(shù)中給出*N

5、ONE。·明確的增加。在文件生成后,可以使用ADDPFM命令(增加物理文件成員)或 ADDLFM命令(增加邏輯文件成員)來增加成員。·使用文件拷貝命令CPYF。如果往文件中拷貝一個(gè)成員,而這個(gè)文件中原來沒有 該成員,那么用CPYF把成員加到這個(gè)文件中。3.1.1.2修改成員屬性可以使用CHGPFM(修改物理文件成員)命令或CHGLFM(修改邏輯文件成員)命令來修改物理文件或邏輯文件成員的某些屬性。對(duì)物理文件成員,可以修改以下參數(shù):SRCTYPE(成員的源類型)、EXPDATE(有效期)、SHARE(是否能在作業(yè)中共享此成員)以及TEXT(成員說明)。對(duì)于邏輯文件的成員,可以

6、修改其SHARE和TEXT參數(shù)。注:可以使用CHGPF和CHGLF命令來修改許多其它的文件屬性。例如,在CHGPF中用SIZE參數(shù)來修改文件中每個(gè)成員所允許的最大尺寸。3.1.1.3成員重新命名RNMM(重新命名成員)命令修改一個(gè)物理或邏輯文件中已存在的成員的名字,而文件名不變。3.1.1.4從文件中移出成員RMVM(移出成員)命令用來移出成員及其內(nèi)容。成員中的數(shù)據(jù)和成員本身都被移出。成員被移出后將不再被系統(tǒng)使用。這不同于僅僅從成員中清除或刪除數(shù)據(jù),成員仍然存在,程序可以繼續(xù)使用它(如向其中增加數(shù)據(jù))。3.1.2物理文件成員操作以下各部分討論只針對(duì)物理文件成員的操作。這些操作包括初始化數(shù)據(jù)、清

7、除數(shù)據(jù)、重組數(shù)據(jù)和顯示物理文件成員中的數(shù)據(jù)。如果正在操作的成員與引用的某些限制有關(guān),那么該操作將受其影響。細(xì)節(jié)描述請(qǐng)參看第16章”引用的完整性”。3.1.2.1初始化物理文件中成員的數(shù)據(jù)在程序中使用相關(guān)記錄號(hào)進(jìn)行處理,該數(shù)據(jù)庫文件必須包含與程序中所用的最高相關(guān)記錄號(hào)相等的記錄位置。程序使用相關(guān)記錄號(hào)進(jìn)行處理時(shí)需要初始化這些記錄。可用INZPFM(初始化物理文件)命令初始化下面兩類記錄:·缺省記錄·刪除記錄在INZPFM命令中用RECORDS參數(shù)指定要處理的記錄類型。如果用缺省記錄來初始化,那么每一個(gè)新記錄中的那些字段都用文件生成時(shí)定義的缺省字段值來初始化。如果未定義缺省字段

8、值,那么數(shù)字字段被填充為0,而字符字段被填充為空格。變長(zhǎng)的字符字段有一個(gè)長(zhǎng)度為0的缺省值??罩底侄蔚娜笔≈禐榭铡H掌凇r(shí)間和時(shí)間標(biāo)記的缺省值分別為當(dāng)前的日期、時(shí)間或時(shí)間標(biāo)記。程序描述文件有一個(gè)全部為空格的缺省值。注:如果物理文件的成員或與其相關(guān)的邏輯文件成員的DDS中指定了UNIQUE鍵字,那么可以初始化一個(gè)缺省記錄;否則,會(huì)生成一些有重復(fù)鍵值的記錄。如果記錄被初始化為缺省記錄,可以由相關(guān)記錄號(hào)來讀一個(gè)記錄,并修改數(shù)據(jù)。如果記錄被初始化為刪除記錄,則可以通過使用一個(gè)被刪除記錄的相關(guān)記錄號(hào)來加一個(gè)記錄,然后修改數(shù)據(jù)(不能使用未被刪除的相關(guān)記錄號(hào)去增加一個(gè)記錄)。不能讀被刪除的記錄,它們僅在成員中

9、占有一個(gè)位置。一個(gè)刪除的記錄可以通過在其上寫一個(gè)新的記錄來做修改。有關(guān)處理被刪除記錄的詳細(xì)信息,請(qǐng)參閱2.3.5”刪除數(shù)據(jù)庫記錄”。3.1.2.2從物理文件成員中清除數(shù)據(jù)CLRPFM命令用來從一個(gè)物理文件成員中清除數(shù)據(jù)。在清除操作完成后,成員的描述仍存在,但數(shù)據(jù)已經(jīng)不在了。3.1.2.3重新組織物理文件成員中的數(shù)據(jù)可以使用RGZPFM命令來做下面工作:移出被刪掉的記錄以便重用被它們占用的空間。按通常訪問記錄的次序重新組織文件中記錄順序,以使檢索記錄的時(shí)間最少。這可通過使用KEYFILE參數(shù)來完成。對(duì)于那些按主鍵字訪問的文件而不是按到達(dá)順序訪問的文件來說,這樣做更具優(yōu)越性。可用下列方法重新組織一

10、個(gè)成員:物理文件的鍵字字段依賴于物理文件的邏輯文件的鍵字字段可用RGZPFM中的SRCOPT和SRCSEQ參數(shù)來重新組織一個(gè)源文件成員,插入一個(gè)新的源成員,并重新設(shè)置源日期數(shù)據(jù)字段。可以釋放某些文件占用過的空間,這些空間是物理文件格式中的可變長(zhǎng)字段,且現(xiàn)在已成為碎片的那部分。例如,下面的RGZPFM命令使用邏輯文件中的訪問路徑重新組織物理文件的第一個(gè)成員:RGZPFMFILE(DSTPRODLB/ORDHDRP)KEYFILE(DSTPRODLB/ORDFILL ORDFILL)物理文件ORDHDRP用到達(dá)順序的訪問路徑,它用邏輯文件ORDFILL中訪問路徑被重新組織。假設(shè)鍵字字段是Order

11、字段,下面說明了如何安排記錄:下面是ORDHDRP文件原來的數(shù)據(jù),注意在用RGZPFM命令前記錄3被刪除了。相關(guān)記錄號(hào)CustOrderOrdate. . .14139441882072480. . .22867432133060280. . .3deletedrecord45632538694062780. . .下面的例子顯示用Order作鍵字并以升序排列來重新組織的ORDHDRP文件。相關(guān)記錄號(hào)CustOrderOrdate. . .12867432133060280. . .25632538694062780. . .34134941882072480. . .注:1.如果一個(gè)有到達(dá)順

12、序訪問路徑的文件使用鍵字順序訪問路徑來重新組織,那么這個(gè)到達(dá)順序訪問路徑要被修改。就是說,文件中的記錄按照所使用的鍵字順序訪問路徑的順序被物理地存放。把數(shù)據(jù)按與所用鍵字訪問路徑最接近的物理順序存放,可以改善順序處理數(shù)據(jù)的性能。2.重組一個(gè)壓縮過刪除記錄的文件,可以改變隨后的相關(guān)記錄號(hào)。3.DDS鍵字中指定為FIFO還是LIFO的訪問路徑依賴于物理文件中記錄的物理順序。因此,在使用鍵字順序訪問路徑重新組織一個(gè)物理文件之后,有重復(fù)鍵值字段的記錄其順序可能被改變。另外,由FCFO規(guī)定的訪問路徑是由FIFO排序的,因此,當(dāng)文件被重新組織后,有重復(fù)鍵字值字段的記錄順序也可能改變。4.如果取消了RGZPF

13、M命令,那么所有物理文件成員訪問順序都要重建。如果在運(yùn)行RGZPFM命令時(shí)發(fā)生下列情況,那么記錄可能不被重新組織:·系統(tǒng)異常結(jié)束·包含RGZPFM命令的作業(yè)*IMMED結(jié)束·運(yùn)行RGZPFM命令的子系統(tǒng)*IMMED結(jié)束·系統(tǒng)*IMMED結(jié)束重組的成員狀態(tài)依賴于在重組結(jié)束前系統(tǒng)做的多少以及SRCOPT參數(shù)的值。如果沒規(guī)定SRCOPT參數(shù),那么這個(gè)成員既可能被完全重組,也可能根本未被重組??娠@示一下文件的內(nèi)容,以確定該成員是否被重組。如果用DSPPFM(顯示物理文件成員)命令,該成員未被重組,就再用一次RGZPFM命令。如果使用了SRCOPT參數(shù),成員可能發(fā)

14、生以下幾種情況:·成員被完全重組。一個(gè)完成信息會(huì)送到你的作業(yè)日志中,說明重組操作完全成功了。·成員根本未被重組。一個(gè)信息會(huì)送到你的作業(yè)日志,說明重新組織操作沒有成功。 如果這種情況發(fā)生,請(qǐng)?jiān)侔l(fā)一次RGZPFM命令。·成員被重組,但只有一部分序號(hào)被改變了。一個(gè)完成信息會(huì)送至你的作業(yè)日志中, 說明成員被重組了,但并非所有的序號(hào)都被改變了。如果這種情況發(fā)生,那么就要 再發(fā)一次RGZPFM命令,并且要把KEYFILE參數(shù)指定為*NONE。為了減少一個(gè)物理文件成員中被刪除的記錄的數(shù)量,文件可以被生成或修改,以便重新利用被刪除記錄的空間。有關(guān)這方面的更多信息,請(qǐng)參看2.1.2

15、.3“重用已刪除的記錄”。3.1.2.4顯示物理文件成員的記錄DSPPFM(顯示物理文件成員)命令按到達(dá)順序顯示物理數(shù)據(jù)文件成員中的數(shù)據(jù)。這個(gè)命令可被用于:·問題分析·調(diào)試·記錄查詢可以顯示源文件或數(shù)據(jù)文件而不管它們是鍵字順序還是到達(dá)順序。即使文件是鍵字順序記錄也是按到達(dá)順序顯示。通過文件編頁碼,記錄號(hào)定位一個(gè)特殊的記錄,或用換檔鍵顯示屏幕右邊或左邊,以看到記錄的其它部分??梢园匆粋€(gè)功能鍵來看顯示的是字符型數(shù)據(jù)還是十六進(jìn)制數(shù)據(jù)。如果系統(tǒng)中有Query(查詢),那么可以用STRQRY(啟動(dòng)查詢)命令來選擇記錄并顯示它。如果系統(tǒng)中有SQL,那么也可以用SRTSQL命令

16、來交互地選擇并顯示記錄。3.2第十一章 修改數(shù)據(jù)庫文件的描述及屬性這一章討論考慮修改數(shù)據(jù)庫文件的描述或?qū)傩詴r(shí)要考慮的問題。3.2.1 在文件描述中修改字段當(dāng)編譯一個(gè)使用了外部描述數(shù)據(jù)的程序時(shí),編譯器將文件的描述拷貝到被編譯的程序中。當(dāng)運(yùn)行這個(gè)程序時(shí),系統(tǒng)會(huì)核實(shí)被編譯程序的記錄格式與這個(gè)文件當(dāng)前定義的記錄格式是否一致。缺省情況將做級(jí)別檢測(cè)。當(dāng)一文件生成時(shí),系統(tǒng)會(huì)為每一個(gè)記錄格式分配一個(gè)唯一的級(jí)別標(biāo)識(shí)。系統(tǒng)使用記錄格式描述中的信息來確定其級(jí)別標(biāo)識(shí)。這個(gè)信息包括該記錄格式的總長(zhǎng)度,記錄格式名,其中定義的字段數(shù)及字段順序、數(shù)據(jù)類型、字段大小、字段名以及字段中小數(shù)點(diǎn)的位置。修改一個(gè)記錄格式中的這些信息會(huì)

17、引起級(jí)別標(biāo)識(shí)符的改變。下面的DDS信息對(duì)級(jí)別標(biāo)識(shí)沒有影響,也正因如此,修改它們而無需重新編譯程序:·TEXT鍵字·COLHDG鍵字·CHECK鍵字·EDTCDE鍵字·EDTWRD鍵字·REF鍵字·REFFLD鍵字·CMP、RANGE和VALUES鍵字·TRNTBL鍵字·REFSHIFT鍵字·DFT鍵字·CCSID鍵字·ALWNULL鍵字·連接說明和連接鍵字·鍵字字段·訪問路徑鍵字·選擇/省略鍵字請(qǐng)記住即使修改鍵字字段或選擇/省

18、略字段都不會(huì)引起一個(gè)級(jí)別檢查,但使用新的訪問路徑會(huì)產(chǎn)生不可預(yù)測(cè)的變化。例如,將鍵字字段從用戶號(hào)改為用戶名會(huì)改變記錄被檢索的順序,而且在處理文件的程序中引起不可預(yù)測(cè)的問題。如果要做(或缺省)層次檢查,當(dāng)文件打開時(shí),文件的級(jí)別標(biāo)識(shí)要與程序中文件的順次標(biāo)識(shí)做比較。如果標(biāo)識(shí)不同,有一個(gè)信息被送到該程序,以標(biāo)識(shí)修改條件以及這一修改會(huì)影響程序。你需再次編譯程序,這樣修改就可以包括進(jìn)去了。另一種方法是顯示一下該文件的描述以決定這些修改是否會(huì)影響程序??梢允褂肈SPFFD(顯示文件字段描述)命令來顯示描述,如果用SEU,也可以顯示文件的DDS描述。文件中定義的格式級(jí)別描述可以用DSPFD(顯示文件描述)命令來

19、顯示。在顯示級(jí)別標(biāo)識(shí)時(shí),記住要比較的是記錄格式標(biāo)識(shí),而不是文件標(biāo)識(shí)。并非文件的每個(gè)修改都必然影響到程序。例如,如果在文件末增加一個(gè)字段,而程序并不使用這個(gè)新字段,那么就無需重編譯程序。如果修改確實(shí)不影響程序,可以使用CHGPF命令或CHGLF命令,并將參數(shù)LVLCHK規(guī)定為*NO,以關(guān)閉對(duì)文件的層次檢查,或者可以輸入一個(gè)OVRDBF(Override with Database File)命令并指定LVLCHK參數(shù)為*NO,這樣不進(jìn)行級(jí)別檢查來運(yùn)行程序。請(qǐng)記住級(jí)別檢查是操作的優(yōu)先方法。使用LVLCHK(*YES)是處理數(shù)據(jù)庫整體性能的好辦法,而LVLCHK(*NO)就不能預(yù)測(cè)其結(jié)果。3.2.2

20、修改物理文件描述和屬性有時(shí),當(dāng)修改了一個(gè)物理文件的描述然后重新生成該文件時(shí),級(jí)別標(biāo)識(shí)符會(huì)改變。例如,如果在文件描述中增加一個(gè)字段或改變一個(gè)已存在字段的長(zhǎng)度,那么級(jí)別標(biāo)識(shí)可能會(huì)改變。如果級(jí)別標(biāo)識(shí)改變了,對(duì)使用該物理文件的程序要重新編譯。在程序被重新編譯之后,這些程序?qū)⑹褂眯碌募?jí)別檢測(cè)標(biāo)識(shí)??梢越⒁粋€(gè)與物理文件的原始記錄格式一樣的邏輯文件來為程序提供數(shù)據(jù),這樣可以不用重新編譯。程序使用這種方法,可使該邏輯文件與修改前的物理文件有同樣的級(jí)別檢測(cè)標(biāo)識(shí)。例如,要在一個(gè)物理文件記錄格式中增加一個(gè)字段,可以做下列步驟而避免重新編譯程序:1.修改DDS并生成一個(gè)包含了該字段的新的物理文件(FILEB在LIB

21、A中)CRTPFFILE(LIBA/FILEB) MBR(*NONE).FILEB沒有成員。(舊文件FILEA在LIBA庫中并有一個(gè)成員MBRA)2.拷貝舊的物理文件的成員到新的物理文件中:CPYFFOMFILE(LIBA/FILEA) TOFILE(LIBA/FILEB)FORMMBR(*ALL) TOMBR(*FROMMBR)MBROPT(*ADD)FMTOPT(*MAP) 由于說明了FROMMBR(*ALL)和TOMBR(*FROMMBR),新的物理文件中的成員被自動(dòng)命名為舊的物理文件的成員的名字。FMTOPT參數(shù)指定要按照字段名拷貝(*MAP)數(shù)據(jù)。3.描述一個(gè)象舊物理文件一樣的新的邏

22、輯文件FILEC(該邏輯文件記錄格式不包括新的物理文件字段)。指定PFILE鍵字為FILEB(在做級(jí)別檢測(cè)時(shí),由于FILEA和FILEC有相同的格式,所以邏輯文件中的級(jí)別標(biāo)識(shí)與程序中的級(jí)別標(biāo)識(shí)符相匹配)。4.生成新的邏輯文件:CRTLFFILE(LIBA/FILEC).5.現(xiàn)在可以做如下的工作之一: a.在相應(yīng)的作業(yè)中使用OVRDBF(覆蓋數(shù)據(jù)庫文件)命令,用邏輯文件覆蓋程序中引用的舊的物理文件(有關(guān)OVRDBF命令詳細(xì)的描述在第五章”運(yùn)行時(shí)的考慮”中)。OVRDBFFILE(FILEA)TOFILE(LIBA/FILEC) b.刪除舊的物理文件并把邏輯文件的名改為舊的物理文件名,程序中的文件

23、名就不用被覆蓋。DLTFFILE(LIBA/FILEA)RNMOBJOBJ(LIBA/FILEC)OBJTYPE(*FILE)NEWOBJ(FILEA)下面說明了在三個(gè)文件中所用的記錄格式的聯(lián)系:FILEA(舊物理文件)FLDAFLDBFLDCFLDDFILEB(新物理文件)FLDB1FLDB1被加到記錄格式中FILEC(邏輯文件)FLDAFLDBFLDCFLDDFILEC用FILEA的記錄格式,在邏輯文件的記錄格式里沒有FLDB1。當(dāng)修改一個(gè)物理文件并因此而要重新生成文件時(shí),所有引用該物理文件的邏輯文件都要首先刪除,才能刪除且重生成新的物理文件。在重新生成物理文件之后,可以重新生成或恢復(fù)引用

24、它的邏輯文件。下面給出兩種方法:例1.在不同的庫中生成一個(gè)同名的新的物理文件1.在與舊的物理文件所在庫不同的庫中生成一個(gè)具有不同記錄格式的新的物理文件。新文件名應(yīng)與老文件名相同(舊物理文件FILEPFC在LIBB庫中,并且有兩個(gè)成員,MBRC1和MBRC2)。CRTPFFILE(NEWLIB/FILEPFC)MAXMBRS(2).2.將舊物理文件中的成員拷貝到新的物理文件中。這個(gè)新物理文件中的成員被自動(dòng)按照舊物理文件中的成員名命名,這是由于說明了TOMBR(*FROMMBR)和FROMMBR(*ALL)。CPYFFROMFILE(LIBB/FILEPFC) TOFILE(NEWLIB/FILE

25、PFC)FROMMBR(*ALL) TOMBR(*FROMMBR)FMTOPT(*MAP *DROP) MBROPT(*ADD)3.在一個(gè)與舊的邏輯文件所在庫不同的庫中描述并生成一個(gè)新的邏輯文件。新邏輯文件名應(yīng)與舊邏輯文件名相同。如果記錄格式無需改變,那么可以使用FORMAT鍵字來使用與當(dāng)前邏輯文件相同的記錄格式。也可以使用CRTDUPOBJ(生成重復(fù)目標(biāo))命令從LIBB庫中的舊邏輯文件FILELFC生成另一個(gè)邏輯文件:CRTLFFILE(NEWLIB/FILELFC)4.刪除舊的邏輯和物理文件DLTFFILE(LIBB/FILELFC)DLTFFILE(LIBB/FILEPFC)5.使用以下

26、命令將新生成的文件移入原來的庫中:MOVOBJ OBJ(NEWLIB/FILELFC)OBJTYPE(*FILE) TOLIB(LIBB)MOVOBJ OBJ(NEWLIB/FILEPFC)OBJTYPE(*FILE) TOLIB(LIBB)例2.在同一個(gè)庫中生成新版本的文件1.在舊的物理文件所在的庫中生成一個(gè)新的不同記錄格式的物理文件。文件名字應(yīng)該不同(舊物理文件FILEPF在LIBA庫中,并且有兩個(gè)成員MBRA1和MBRA2)。CRTPFFILE(LIBA/FILEPFB)MAXMBRS(2).2.將舊物理文件中的成員拷貝到新的物理文件中CPYFFROMFILE(LIBA/FILEPFA)

27、 TOFILE(LIBA/FILEPFB)FROMMBR(*ALL) TOMBR(*FROMMBR)FROMMBR(*MAP *DROP)MBROPT(*REPLACE)3.在舊邏輯文件所在的庫中生成一個(gè)新的邏輯文件。舊文件名和新文件的名應(yīng)該不同。(如果記錄格式無需改變,可以使用FORMAT鍵字以使用與當(dāng)前邏輯文件相同的記錄格式。)PFILE鍵字必須引用第一步中生成的新的物理文件。舊的邏輯文件FILELFA在LIBA庫中。CRTLFFILE(LIBA/FILELFB)4.刪除舊的邏輯文件和物理文件DLTFFILE(LIBA/FILELFA)DLTFFILE(LIBA/FILEPFA)5.把新邏

28、輯文件改名為舊邏輯文件名(如果決定也重命名物理文件,一定要修改邏輯文件的DDS以使PFILE鍵字引用新的物理文件名):RNMOBJ(LIBA/FILELFB)OBJTYPE(*FILE)NEWOBJ(FILELFA)6.如果重新命名邏輯文件成員,且假設(shè)CRTLF命令中使用了缺省值,則要給出以下的命令:RNMMFILE(LIBA/FILELFA)MBR(FILELFB)NEWMBR(FILELFA)可以使用CHGPF命令修改物理文件及其成員的某些屬性。關(guān)于這些參數(shù)的信息,請(qǐng)參看CL參考手冊(cè)中的CHGPF命令。3.2.3修改邏輯文件描述和屬性一般來說,當(dāng)修改邏輯文件而引起級(jí)別標(biāo)識(shí)符的改變(例如,增

29、加一個(gè)新字段、刪除一個(gè)字段或改變字段的長(zhǎng)度)時(shí),建議最好重編譯使用該邏輯文件的程序。有時(shí)修改文件引起了級(jí)別標(biāo)識(shí)的改變但不需重新編譯程序(例如,在該文件末增加了一個(gè)字段而該字段并未在你的程序中使用)。然而,在那些情況下,將被迫關(guān)閉級(jí)別檢測(cè)來運(yùn)行使用改變后文件的程序。這并非操作的好方法,它增加了將來產(chǎn)生錯(cuò)誤數(shù)據(jù)的機(jī)會(huì)。為避免重新編譯,可以保持當(dāng)前邏輯文件(不改變),并生成一個(gè)具有新增加字段的邏輯文件。程序引用舊文件,因?yàn)樗匀淮嬖???梢允褂肅HGLF命令來修改一個(gè)邏輯文件及其成員的大多數(shù)屬性,這些屬性是在CRTLF命令中規(guī)定的。3.3第十二章 使用數(shù)據(jù)庫屬性和交叉引用信息AS/400集成數(shù)據(jù)庫提供

30、文件屬性及交叉引用信息。交叉引用信息包括:·程序中使用的文件·數(shù)據(jù)或訪問路徑依賴的其它文件·文件屬性·文件定義的字段·與文件有關(guān)的約束條件·文件的鍵字字段在以下各節(jié)說明的每一個(gè)命令都可以在屏幕上、打印輸出上提供信息,或者將交叉引用信息寫到數(shù)據(jù)庫文件中,也能用于程序或?qū)嵱霉ぞ咧凶龇治?。有關(guān)把輸出寫到數(shù)據(jù)庫文件的更詳盡信息,請(qǐng)參閱3.3.2“把由命令產(chǎn)生的輸出直接寫到數(shù)據(jù)庫文件中”。你可以使用RTVMBRD(Retrieve Member Description)命令來取得應(yīng)用程序中使用的某個(gè)數(shù)據(jù)庫文件成員的信息。有關(guān)內(nèi)容請(qǐng)參閱CL程序設(shè)

31、計(jì)中有關(guān)”取得成員描述信息”的章節(jié)。3.3.1顯示有關(guān)數(shù)據(jù)庫文件的信息3.3.1.1 顯示文件屬性可以使用DSPFD命令顯示數(shù)據(jù)庫文件和設(shè)備文件屬性。這些信息可以被顯示、打印或?qū)懙揭粋€(gè)輸出文件(OUTFILE)中。這個(gè)命令提供的信息包括(參數(shù)值在括號(hào)中給出):·基本屬性(*BASATR)·文件屬性(*ATR)·訪問路徑說明(*ACCPTH,只對(duì)邏輯和物理文件)·選擇/省略說明(*SELECT,只對(duì)邏輯文件)·連接邏輯文件說明(*JOIN,只對(duì)連接邏輯文件)·替換順序說明(*SEQ,只對(duì)物理和邏輯文件)·記錄格式說明(*RCD

32、FMT)·成員屬性(*MBR,只對(duì)物理和邏輯文件)·假脫機(jī)屬性(*SPOOL,只對(duì)打印文件和磁盤文件)·成員表(*MBRLIST,只對(duì)物理和邏輯文件)·文件約束(*CST)·觸發(fā)器(*TRG)3.3.1.2顯示字段描述用DSPFFD命令顯示數(shù)據(jù)庫文件中設(shè)備文件的字段信息。這些信息可以顯示、打印或?qū)懙揭粋€(gè)輸出文件(OUTFILE)中。3.3.1.3顯示系統(tǒng)中文件間的相互關(guān)系可以使用DSPDBR命令顯示有關(guān)數(shù)據(jù)庫組織的如下信息:·使用某個(gè)記錄格式的數(shù)據(jù)庫文件(物理文件和邏輯文件)的列表·共享某個(gè)文件數(shù)據(jù)的物理和邏輯文件的列表&#

33、183;共享某個(gè)成員數(shù)據(jù)或訪問路徑的成員(物理和邏輯成員列表)·依據(jù)引用約束關(guān)系的物理文件的列表這些信息可以被顯示、打印或?qū)懙揭粋€(gè)輸出文件中。例如,要顯示某些與物理文件ORDHDRP(記錄格式為ORDHDR)有關(guān)的所有數(shù)據(jù)庫文件的列表,要鍵入以下的DSPDBR命令:DSPDBR FILE(DSTPRODLB/ORDHDRP)RCDFMT(ORDHDR) 注:有關(guān)信息請(qǐng)參閱CL參考手冊(cè)中DSPDBR命令的描述。如果在RCDFMT中給出了一個(gè)記錄格式名,那么先顯示一個(gè)開頭信息,然后再顯示哪些文件使用了這個(gè)記錄格式。如果在DSPDBR命令的MBR參數(shù)中給出了成員名,則顯示有關(guān)的成員。如果D

34、SPDBR命令中用缺省的MBR(*NONE),則有關(guān)的數(shù)據(jù)文件被顯示。要顯示共享訪問路徑,必須給出成員名。DSPDBR命令的輸出說明了所包括的共享類型。命令的結(jié)果如果輸出到顯示屏上,也包括共享的類型名。如果命令的結(jié)果寫到一個(gè)文件中,則共享類型的編碼(如圖)放在這個(gè)輸出文件的WHTYPE字段中。類型 編碼說明約束C該物理文件依賴于和某個(gè)約束有關(guān)的另外物理文件的數(shù)據(jù)數(shù)據(jù)D該文件或成員依賴于另一個(gè)文件中成員的數(shù)據(jù)訪問路徑共享I該文件成員共享一個(gè)訪問路徑訪問路徑主人O如果一個(gè)訪問路徑被共享,該文件成員之一被認(rèn)為是擁有者。訪問路徑的擁有者要對(duì)存取路徑所用的存貯區(qū)負(fù)責(zé)。如果顯示的成員被指定為擁有者,則對(duì)于

35、共享訪問路徑一個(gè)或多個(gè)文件成員就有I類型。SQL視圖VSQL視圖或成員依賴于另一個(gè)SQL視圖3.3.1.4顯示程序使用的文件可用DSPPGMREF命令來確定一個(gè)程序使用了哪些文件、數(shù)據(jù)區(qū)和其它程序。這些信息僅對(duì)編譯程序有用。這些信息可以顯示、打印或?qū)懭胍粋€(gè)輸出文件中。當(dāng)生成程序時(shí),程序中所使用的目標(biāo)信息被保存,然后DSPPGMREF命令就用這些信息。下表顯示了高級(jí)語言和服務(wù)程序所使用的目標(biāo)的保留信息:語言或?qū)嵱贸绦蛭募绦驍?shù)據(jù)區(qū)看注BASICYesYesNo1C/400 LanguageNoNoN/ACLYesYesYes2COBOL/400 LanguageYesYesNo3CSPYesYe

36、sNo4DFUYesN/AN/AFORTRAN/400* LanguageNoNoN/APascal PascalNoNoN/APL/IYesYesN/A3RPG/400 LanguageYesYesYes5SQL LanguageYesN/AN/A 注:1.存貯外部描述文件的引用、程序和數(shù)據(jù)區(qū)信息。2.在編譯CL程序中的命令時(shí),在命令定義中規(guī)定的引用文件、程序和數(shù)據(jù)的所有系統(tǒng)命令都被保存。如果使用變量,變量名作為目標(biāo)名(如&FILE)。如果使用表達(dá)式,目標(biāo)名用*EXPR保存。用戶定義命令也可以保存在命令中說明的文件、程序或數(shù)據(jù)區(qū)的信息。請(qǐng)參看CL程序設(shè)計(jì)中有關(guān)內(nèi)容。3.當(dāng)程序名為一文

37、字時(shí)才被保存(這是一個(gè)靜態(tài)調(diào)用,如CALL PGM1),而用一個(gè)COBOL/400標(biāo)識(shí)符做程序名時(shí),程序名不被保存(此為動(dòng)態(tài)調(diào)用,如CALL PGM1)。4.CSP程序也保存類型為*MSGF、*CSPMAP和*CSPTBL目標(biāo)的信息。5.不保存使用的本地?cái)?shù)據(jù)區(qū)。存貯的文件信息包括使用類型(一個(gè)數(shù)字)。在DSPPGMREF命令的結(jié)果輸出到一個(gè)文件中時(shí)(用OUTFILE參數(shù)建立),使用如下說明:代碼定義 1輸入 2輸出 3輸入和輸出 4修改 8未被說明這些代碼也可以合并使用。例如,一個(gè)文件編碼為7,表示它可被用于輸入、輸出和修改。3.3.1.5 顯示系統(tǒng)交叉引用文件系統(tǒng)對(duì)所有數(shù)據(jù)庫文件(除在QTE

38、MP中的文件)管理兩個(gè)文件,一個(gè)是基本文件屬性信息(QSYS/QADBXREF),另一個(gè)是交叉引用信息(QSYS/QADBFDEP)??捎眠@些文件來確定基本屬性和文件依賴關(guān)系。要顯示這些文件中包含的字段,使用DSPFFD(Display File Field Description)命令。 注:通常,只有安全管理人員才有權(quán)使用這些文件。3.3.2 把由命令產(chǎn)生的輸出直接寫入數(shù)據(jù)庫文件中給出OUTFILE參數(shù),可以把許多CL命令的輸出寫到一個(gè)物理文件中。在程序或服務(wù)程序(如Query)中使用輸出文件用于數(shù)據(jù)分析。例如,將DSPPGMREF命令的輸出送到一個(gè)物理文件中,然后再查詢這個(gè)文件,確定哪個(gè)

39、程序使用某個(gè)文件。在命令中指定了OUTFILE參數(shù),將生成該物理文件。最初,被生成的文件具有私人特權(quán),只有主人(運(yùn)行命令的人)可以使用它。但主人可以象其它數(shù)據(jù)庫文件一樣授權(quán)給其它用戶去使用這些生成的文件。系統(tǒng)為每一個(gè)能指定OUTFILE參數(shù)的命令提供一個(gè)指定記錄格式的模型文件。如果在OUTFILE參數(shù)中指定并不存在的文件名,那么系統(tǒng)將使用與模型文件相同的記錄格式生成該文件。如果說明了一個(gè)已存在輸出文件的文件名,則系統(tǒng)會(huì)檢查該文件的記錄格式是否與模型文件的記錄格式一致。若不匹配,則系統(tǒng)送給作業(yè)一個(gè)信息,且命令不能完成。注:必須使用自己的文件作為輸出文件,而不能在OUTFILE參數(shù)上說明系統(tǒng)提供的

40、模型文件。請(qǐng)參看Programming Reference Summary一書,看哪些命令可以允許使用輸出文件及這些命令所用的模型文件名。注:所有系統(tǒng)提供的模型文件都在QSYS庫中??梢允褂肈SPFFD命令顯示系統(tǒng)提供模型文件的記錄格式中包含的字段。3.3.2.1使用命令輸出文件的例子下例使用DSPPGMREF命令,收集所有庫中編譯過的程序的信息,并把輸出放在名為DBROUT的文件中:DSPPGMREF PGM(*ALL/*ALL)OUTPUT(*OUTFILE)+ OUTFILE(DSTPRODLB/DBROUT)可以使用Query去處理這個(gè)輸出文件。處理該文件的另一個(gè)方法是生成一個(gè)邏輯文件

41、,從文件中選擇信息。下面是這個(gè)邏輯文件的DDS編碼。記錄是根據(jù)文件名選擇出來的。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A* Logical file DBROUTL for query A A R DBROUTL PFILE(DBROUT) A S WHFNAM VALUES('ORDHDRL' 'ORDFILL') A3.3.2.2DSPFD命令的輸出文件顯示文件描述(DSPFD)命令提供唯一的輸出文件,它依賴于被說明的參數(shù)。請(qǐng)參閱Programming Refererce Summary中DSPFD命令的模型文件清單。注:所有

42、系統(tǒng)提供模型文件都在QSYS庫中。為收集在LIBA庫中所有文件的訪問路徑信息,可用下面命令: DSPFD FILE(LIBA/*ALL) TYPE(*ACCPTH) OUTPUT(*OUTFILE) + OUTFILE(LIBB/ABC)文件ABC在庫LIBB中生成,并且被描述為與系統(tǒng)提供文件QSYS/QAFDACCP相同的字段,然后ABC文件就有了這樣一條記錄,它包含了在LIBA庫中找到的有訪問路徑的各個(gè)文件的每個(gè)鍵字字段。如果DSPFD命令為: DSPFD FILE(LIBX/*ALL) TYPE(*ATR) OUTPUT(*OUTFILE) + FILEATR(*PF) OUTFILE(

43、LIBB/DEF)文件DEF在LIBB庫中生成并且其外部描述與QSYS/QAFDPHY中的字段相同,于是文件DEF包含關(guān)于在LIBX庫中找到的每一個(gè)物理文件的一個(gè)記錄。可以使用DSPFFD命令顯示由IBM提供的每一個(gè)模型文件的字段名。例如,要顯示訪問路徑模型文件的字段描述(在TYPE參數(shù)中說明*ACCPTH),用下面命令:DSPFFD QSYS/QAFDACCP3.3.2.3DSPJRN命令的輸出文件請(qǐng)參看Programming Refererce Summary以得到系統(tǒng)提供的可由DSPJRN(Display Journal)命令顯示的模型輸出文件的清單。3.3.2.4DSPRB命令的輸出文件請(qǐng)參看Programming Refererce Summary以得到系統(tǒng)提供的DSPRB(Display Problem)命令的模型輸出文件的清單。這個(gè)命令根據(jù)記錄類型提供唯一的輸出文件:基本問題數(shù)據(jù)記錄(*BASIC):它包括問題類型、狀態(tài)、機(jī)器類型/型號(hào)/系列號(hào)、產(chǎn)品ID、相關(guān)信息以及跟蹤數(shù)據(jù)。故障點(diǎn)、隔離或應(yīng)答FRU記錄(*CAUSE)。應(yīng)答FRU記錄在可用的時(shí)候才能用。如果應(yīng)答FRU不能用,在隔離FRU可用時(shí),就用它。若二者皆不可用,用故障點(diǎn)FRU。PTF修正記錄(*FIX)用戶輸入文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論