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頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1.3.1.1.3 N(既不輸入也不輸出) Neither字段既不能用于輸入也不能用于輸出,它只對邏輯文件有效。Neither字段可用非連接邏輯文件中的連接字段,但你的程序不能讀也不能更新Neither字段。 當(dāng)所用物理文件做連接的字段屬性不匹配時可使用Neither字段。在這種情況下,必須重新定義一個或兩個連接字段,但在記錄格式中不能包括那些重定義的字段。(在應(yīng)用程序中看不到重定義字段)。因此,重定義字段將編碼為N,這樣它們就不會在記錄格式中出現(xiàn)。 第38列為N的字段不會出現(xiàn)在程序的緩沖區(qū)中,但其字段描述能通過顯示文件字段描述命令(DSPFFD)被顯示。 Neither字段不能用作選擇/省略

2、或索引字段。 有關(guān)Neither字段的例子,請看1.3.4.6“不在記錄格式中出現(xiàn)的字段描述(例5)”。1.3.1.2 從已有字段中派生新字段 邏輯文件中的字段可從它所依據(jù)的物理文件中的字段或同一邏輯文件中的字段派生出來。例如,可以使用CONCAT鍵字合并物理文件中的一個或多個字段,使它們作為一個字段在邏輯文件中出現(xiàn),反之,也可以用SST鍵字把物理文件中的一個字段分解成多個字段出現(xiàn)在邏輯文件中。1.3.1.2.1 合并字段 使用CONCAT鍵字,可以將物理文件記錄格式中的兩個或多個字段合并成邏輯文件記錄格式中的一個字段。例如,物理文件記錄格式中包含字段Month(月)、Day(日)、Year(

3、年),對于邏輯文件,可把這些字段合并為一個字段,Date(日期)。 合并后字段的長度是它所包括各個字段的長度和,(除非物理文件中的字段是二進制、壓縮十進制,這種情況下,它們將被轉(zhuǎn)換為區(qū)位十進制),結(jié)果字段的長度將由系統(tǒng)自動計算,合并字段具有:·列標(biāo)題·有效性檢查·文本描述·編輯碼和編輯字(僅限于數(shù)字連接字段) 注:這些編輯和有效性檢查并不是數(shù)據(jù)庫管理系統(tǒng)使用的,而是當(dāng)顯示文件或打印文件中引用數(shù)據(jù)庫文件的字段描述時被檢索。 當(dāng)字段被合并時,數(shù)據(jù)類型將發(fā)生改變,(合并后的數(shù)據(jù)類型由系統(tǒng)自動決定),以下是一些規(guī)則和限定:·OS/400程序可在合并字段

4、的數(shù)據(jù)類型的基礎(chǔ)上指定數(shù)據(jù)類型。·合并字段的最大長度取決于合并字段的數(shù)據(jù)類型和組合的各個字段的長度。如果合 并字段是區(qū)位十進制(S),它的總長就不會超過31個字節(jié);如果是字符型(A),總 長將不超過32766個字節(jié)。·在連接邏輯文件中,用于合并的字段必須來自于同一物理文件。在CONCAT鍵字給 出的第一個字段指出所用的物理文件。因此,構(gòu)成邏輯文件的各個物理文件中這一 個字段必須是唯一的,否則將要使用JREF鍵字來指定是使用的哪個物理文件中的字 段。·如果該合并字段是變長字段,其用法必須為I(只輸入),否則可為B(既輸入又輸 出)。·數(shù)據(jù)類型為O或J的合并

5、字段不能指定REFSHIFT鍵字。·如果一些字段為空值,則它們的合并字段也為空值。注: 有關(guān)合并DBCS字段的詳細資料,請參見附錄B,“雙字節(jié)字符集的考慮”。 當(dāng)合并的只是數(shù)字字段時,該組中最后一個字段的符號即為該合并字段的符號。注: 1.所有小數(shù)位非零的數(shù)字型字段都不能組合成合并字段。 2.日期型、時間型、時間標(biāo)記和浮點型字段也不能組成合并字段。 下面是使用DDS進行合并的字段描述(鍵字CONCAT用于指定合并的字段。) |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A 00101A MONTH 00102A DAY 00103A YEAR 00104A DA

6、TE CONCAT(MONTH DAY YEAR) A 例中,邏輯文件的記錄格式包括月、日、年三個字段和一個合并字段日期,這樣可用以下格式:·月、日、年格式·僅用日期格式·月、日、年格式和日期格式當(dāng)記錄格式中既有分開字段又有合并字段時,任何對字段的更新都將按DDS中指定的順序處理,在上述例中,如果日期字段為103188,而月字段改為12,當(dāng)記錄被更新時,日期字段中的月不變,更新后的記錄仍為103188。如果該日期字段是第一個指定的,則更新后的記錄為123188。 合并字段也能用作索引字段和選擇/省略字段。1.3.1.2.2 子串字段 可以用SST鍵字指定從哪個字段

7、中(字符、十六進制或區(qū)位十進制)取子串,也可通過指定S(區(qū)位+進制),將物理文件中壓縮字段的子串作為邏輯文件數(shù)據(jù)類型,例如,物理文件PF1中日期字段定義為6個字符長,可以在邏輯文件中描述3個字段,每個字段2個字符長。用SST鍵字規(guī)定字段DATE,MM字段是從DATE第1位開始,長度為2,DD從DATE有第3位開始,長度為2,YY從第5位開始,長度為2。 下面是用DDS描述子串字段,鍵字SST用于指定取子串的字段。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A R REC1 PFILE(PF1) A A MM I SST(DATE 1 2) A DD I SST(DAT

8、E 3 2) A YY I SST(DATE 5 2) A 注:子串的起始位是根據(jù)它在字段中的位置,而不是根據(jù)在文件中的位置,用法為I表示只輸入。 子串字段可用作索引字段和選擇/省略字段。1.3.1.2.3 重命名字段 用RENAME鍵字,可以在邏輯文件中取和物理文件字段不同的名字。由于程序使用不同的字段名,或者原始字段名和你所使用的高級語言命名限定不一致,在邏輯文件中需要對字段重命名。1.3.1.2.4 轉(zhuǎn)換字段 用TRNTBL鍵字可以指定一個字段的轉(zhuǎn)換表。當(dāng)讀邏輯文件記錄,其中一個或多個字段規(guī)定了轉(zhuǎn)換表,系統(tǒng)將把物理文件中字段值轉(zhuǎn)換成轉(zhuǎn)換表所確定的字段值。1.3.1.3 描述邏輯文件的浮點

9、字段 在邏輯文件中可以用浮點字段人為變換字段,一個單精度或雙精度的浮點字段可以變換為區(qū)位、壓縮、零精度二進制或另一浮點字段,但不能把浮點字段和非零精度二進制字段、字符十六進制和DBCS字段之間變換。 不同精度的浮點字段(單精度和雙精度)之間,浮點字段和其它數(shù)字字段間的變換可能導(dǎo)致舍入或精度的丟失。雙精度浮點數(shù)到單精度浮點數(shù)的變換可導(dǎo)致的舍入情況,取決于它的內(nèi)部表達和所涉及的特殊數(shù)值,舍入的是最近的那位(偶數(shù)位),結(jié)果總是盡可能精確。如果降低了精度位數(shù),就可能在兩個十進制數(shù)之間發(fā)生精度的丟失。 若程序沒有明顯的修改動作,可以忽略該字段值的變化。對于浮點字段,物理文件中雙精度字段變換成邏輯文件中單

10、精度字段,通過邏輯文件進行記錄更新,就是這種情況,當(dāng)它變換到邏輯文件時,若浮點數(shù)的內(nèi)部表達使其被舍入,那么邏輯文件記錄的更新將使其涉及的物理文件造成永久性精度丟失。若舍入的是物理文件記錄的索引字段,則物理文件中記錄的順序也將發(fā)生變化。 若邏輯文件中字段精度降低,則忽略對應(yīng)的定點數(shù)字字段的更新。1.3.2 描述邏輯文件的訪問路徑 指定邏輯文件記錄格式的訪問路徑有以下三種方法: 1.索引順序訪問路徑 在最后一個記錄或字段級說明后指定索引字段,索引字段名必須是在記錄格式中的,對于連接邏輯文件,索引段必須來自于另一個或主物理文件。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A

11、 R CUSRCD PFILE(CUSMSTP) A K ARBAL A K CRDLMT A 2.到達順序訪問路徑 它不需指定索引字段,可在PFILE鍵字指定唯一的物理文件(當(dāng)增加邏輯文成員時,也只指物理文件成員中的一個)。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A R CUSRCD PFILE(CUSMSTP) 3.預(yù)先定義的索引順序訪問路徑(只限于簡單和多格式邏輯文件) 在文件級指定REFACCPTH鍵字,相當(dāng)于將一個預(yù)先生成的數(shù)據(jù)庫文件的訪問路徑和選擇/省略規(guī)范復(fù)制到邏輯文件中,不能用REFACCPTH鍵字指定分開的索引或選擇/省略字段。 注:盡管使用了指

12、定的文件訪問路徑,最終還是由系統(tǒng)決定使用哪個文件的訪問路徑,不論是否使用REFACCPTH鍵字,系統(tǒng)總是試圖共享訪問路徑。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 REFACCPTH(DSTPRODLIB/ORDHDRL) A R CUSRCD PFILE(CUSMSTP) 當(dāng)定義一邏輯文件中的記錄格式時,共享另一文件訪問路徑的索引字段說明,(使用鍵字REFACCPTH),可以使用相關(guān)物理文件記錄格式的任何一些字段,這些字段不必須出現(xiàn)在描述訪問路徑的文件中,但文件中所用的任何索引字段和選擇/省略字段必須在新的記錄格式中使用。1.3.2.1 使用邏輯文件中的選擇和省略

13、記錄 使用邏輯文件時系統(tǒng)可以選擇和省略記錄,這有助于我們處理方便或出于安全考慮而排除一些記錄。選擇和省略記錄的處理是在邏輯文件的DDS格式的第17列指定,它和高級語言中一系列的編碼比較相類似。例如,在邏輯文件中包含了訂貨的詳細記錄,可以指定訂貨量大于銷售量的記錄,所有其它的記錄都從訪問路徑中省略。省略的記錄保留在物理文件中而不被邏輯文件檢索。如果要在物理文件上添加記錄,是所有的記錄被增加,但如果用選擇/省略路徑,則只有適合選擇/省略標(biāo)準的那些記錄才能被添加。 在DDS中,第17列指定點S(選擇)或O(省略),然后給出將在選擇和省略處理中使用的字段名(第19列到28列),第45列到80列指定比較

14、條件。 注:選擇/省略說明在索引說明之后(如果指定索引),記錄可以通過幾種類型的比較完成選擇和省略操作;·VALUES 將字段的內(nèi)容和表中不超過100個值相比較,若發(fā)現(xiàn)與它相匹配的,則選擇或省略記錄。下面例子中,如果VALUES指定的值中有一個和Itmnbr字段相同,則記錄被選擇。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A S ITMNBR VALUES(301542 306902 382101 422109 + A 431652 486592 502356 556608 590307) A·RANGE 將字段的內(nèi)容和RANGE中上限和下限作比

15、較,如果字段值大于或等于下限并且小于或等于上限,則記錄被選擇或省略,下例中,Itmnbr字段值在301000到599999范圍內(nèi)的所有記錄將被選擇。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A S ITMNBR RANGE(301000 599999) A·CMP 將字段內(nèi)容和一個值或另一字段內(nèi)容相比較,有效的比較碼是EQ、NE、LT、NL、GT、NG、LE和GE。如果滿足比較條件,記錄將被選擇或忽略,下例中,如果字段Itmnbr值小于或等于599999,記錄就被選擇。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A S ITMNB

16、R CMP(LE 599999) A 在CMP、VALUES和RANGE中指定的,數(shù)字字段值要以小數(shù)位為基準,必要時可以添零,如果字段沒有指定小數(shù)位,則小數(shù)點被放在該值最右邊一位的右側(cè) ,例如,一數(shù)字字段長度為5,小數(shù)值為2,值1.2被解釋為001.20,值100被解釋成為100.00。 記錄的狀態(tài)是由指定的選擇和省略語句的求值順序決定的。如果一條記錄滿足了選擇或省略條件,則隨后的語句就被省略。 通常選擇和省略比較之間是相互獨立的,該比較是用“或”連接的,也就是,如果滿足選擇或者省略的條件,記錄就可被選擇或省略。如果不滿足條件,系統(tǒng)將處理下一個比較。為了將各個比較連接起來,可以在DDS格式的第

17、17列留出一個空格,用這種方式連接起來的比較,在記錄被選擇或省略前,必須全部滿足條件,也就是各比較是用“與”連接的。 比較越少,工作效率越高,因此,當(dāng)有幾個選擇/省略比較要處理時,應(yīng)首先指定選擇或忽略記錄最多的比較。在下面例子中,Rep字段為JSMITH的記錄很少。這些例子給出用DDS去選擇在1988年以前在紐約的、名為JSMITH的銷售商,使用不同的方法,有不同的效率(例中3是最好的)。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A S ST CMP(EQ 'NY') 1 A REP CMP(EQ 'JSMITH') A YEAR C

18、MP(LT 88) A |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A O YEAR CMP(GE 88) 2 A S ST CMP(EQ 'NY') A REP CMP(EQ 'JSMITH') A |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A O REP CMP(NE 'JSMITH') 3 A O ST CMP(NE 'NY') A S YEAR CMP(LT 88) A圖3-3 選擇/省略功能的三種編碼方法 1.記錄在被選擇和省略前必須與選擇字段St、Rep和Year相比較

19、。 2.所有的記錄必須先和字段Year相比較,然后再把1988年以前的記錄和St、Rep相比較。 3.所有的記錄先和字段Rep相比較,幾乎很少符合JSMITH記錄和St比較,最后將剩下的和Year比較。 再舉個例子,假設(shè)要做如下選擇:·除了部門12外所有部門。·部門12中的項目號為112505、428707、480100的記錄,部門12中其它記錄不被選 擇。 如果用一個分類順序表做上述例子,在比較前要根據(jù)分類表轉(zhuǎn)換選擇/省略字段。例如,對于大寫和小寫用共享分類表,NY和ny同等的,詳細的請看DDS參考手冊。 下面的流程圖顯示了例中的邏輯關(guān)系: 開 始 部門號不 是 選 擇

20、等于12 否 項目號等于 是 112505 否 項目號等于 是 428707 否 項目號等于 是 480100 否 省 略 下面顯示了例子中有關(guān)選擇和省略功能的DDS編碼: |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A S DPTNBR CMP(NE 12) A S ITMNBR VALUES(112505 428707 480100) A 可能有選擇/省略值的訪問路徑并以到達順序處理文件,例如,使用高級語言程序可以指定省略鍵字訪問路徑。在這種情況下,以到達順序從文件中讀取記錄。但只有滿足文件指定的選擇/省略值的記錄被返回到高級語言程序中。 帶有索引字段和指定的選擇/

21、省略值的邏輯文件可以用到達順序或隨機的相關(guān)記錄號來處理,由選擇/省略值,忽略的記錄不被處理,也就是,如果用相關(guān)記錄號請求省略的記錄,該記錄不能返回到高級語言程序中。 系統(tǒng)不能保證,通過邏輯文件添加或改變的記錄再次在同一邏輯文件中存取,例如,如果邏輯文件選擇字段FLD1為A的記錄,而程序?qū)⒆侄蜦LD1更新為B,則程序?qū)⒉荒苡眠壿嬑募z索到這條記錄。 注:不能根據(jù)浮點字段值為做選擇或省略條件。 有兩種選擇/省略操作:訪問路徑的選擇/省略和動態(tài)的選擇/省略,缺省值為訪問路徑的選擇/省略,兩種操作的選擇/省略說明本身是一樣的,不同的是系統(tǒng)將在不同的時間內(nèi)進行選擇和省略操作。1.3.2.1.1 訪問路徑

22、的選擇/省略 用訪問路徑的選擇/省略,訪問路徑只能包含符合邏輯文件指定的選擇/省略值的鍵字。當(dāng)文件指定了索引字段,文件也就有了訪問路徑,并且當(dāng)你要增加或更新形成邏輯文件的物理文件的記錄時,該訪問路徑將由系統(tǒng)維護,訪問路徑中唯一的索引入口是符合選擇/省略值的。1.3.2.1.2 動態(tài)的選擇/省略 用動態(tài)的選擇/省略,當(dāng)程序從文件中讀記錄時,系統(tǒng)只能返回符合選擇/省略值的記錄,也就是,實際上的選擇/省略操作是在程序讀記錄的時候,而不是記錄增加或改變的時候,而索引順序訪問路徑則包含所有鍵字 ,不只是選擇記錄的鍵字,使用動態(tài)的選擇/省略訪問路徑允許更多的訪問路徑共享,它可以提高系統(tǒng)的性能,有關(guān)共享訪問

23、路徑的詳細資料,請見1.3.2.2中“使用現(xiàn)存的訪問路徑”。 為了使用動態(tài)的選擇/省略,可以規(guī)定動態(tài)的選擇鍵字(DYNSLT),動態(tài)的選擇/省略時,不需要索引字段。 如果你的文件要經(jīng)常修改而不經(jīng)常讀,那么在程序讀文件以前可以不必更新選擇/省略的訪問路徑,在這種情況下,可用動態(tài)的選擇/省略。下面例子有助于了解這些內(nèi)容。 在選擇/省略記錄中,用一個不經(jīng)常修改的編碼字段(A=活動的,I=不活動的),程序處理活動的記錄,并且記錄大部分是活動的(超過80%),用DYNSLT在處理期間做動態(tài)選擇,比在編碼字段發(fā)生改變時進行訪問路徑的維護更有效。1.3.2.1.3 使用OPNQRYF命令選擇/省略記錄 選擇

24、記錄的另一方法是使用OPNQRYF的QRYSLT參數(shù),用OPNQRYF命令生成的打開數(shù)據(jù)路徑,就象一個臨時邏輯文件,也就是說,當(dāng)它被關(guān)閉時,也就自動被刪除,而一個邏輯文件將一直保存到你刪除它為止。有關(guān)OPNRYF命令的詳細資料,請看第二部2.2.3“使用打開的查詢文件命令(OPNQRYF)”。1.3.2.2 使用現(xiàn)存的訪問路徑 當(dāng)兩個或多文件是依據(jù)于同一物理文件并且有同樣的順序和相同的索引字段時,它們將自動地共享同一鍵字順序訪問路徑。當(dāng)訪問路徑被共享時,用于維護訪問路徑的系統(tǒng)活動量和文件所用的輔存量都減少。 當(dāng)生成一個帶有鍵字順序訪問路徑的邏輯文件,系統(tǒng)總是試圖共享現(xiàn)存的訪問路徑,若要共享訪問

25、路徑,該訪問路徑必須已存在于系統(tǒng)中并滿足下列條件:·要增加的邏輯文件成員必須依據(jù)具有現(xiàn)存訪問路徑的同一物理文件。·在新文件和原有文件中的每個索引字段的長度、數(shù)據(jù)類型和小數(shù)位數(shù)都要一致。·如果沒有指定鍵字FIFO、LIFO和FCFO,新文件可能比現(xiàn)存路徑的索引字段少,也 就是說,如果索引字段的起始部分是一致的,一個新的邏輯文件就可共享已有的訪 問路徑,但是,當(dāng)文件共享已有路徑的部分索引字段時,一些記錄對共享訪問路徑 索引字段某些部分修改將會改變訪問路徑中記錄的位置,請看1.3.2.2.1中“默認的 共享訪問路徑例子”。·訪問路徑的屬性(象UNIQUE、LI

26、FO、FIFO或FCFO)和索引字段的屬性(象 DESCEND、ABSVAL、UNSIGNED和SIGNED)必須是一致的。 特殊情況: 1.如果滿足了共享訪問路徑的其它請求,則FIFO訪問路徑可以共享指定了UNIQUE鍵字的訪問路徑。 2.如果滿足了共享訪問路徑的其它請求,一個UNIQUE訪問路徑可以共享一個需要重建的FIFO訪問路徑(例如,指定了*REBLD維護)。·如果一個新的邏輯文件含有選擇/省略說明,則它們必須和已有的訪問路徑的選擇/ 省略說明相一致。但是,如果這個新邏輯文件指定了DYNSLT,它就可以共享現(xiàn)有 的訪問路徑,該訪問路徑具有: -指定的動態(tài)選擇鍵字(DYNSL

27、T) -沒有選擇/省略鍵字·新邏輯文件成員的替換排列順序(鍵字ALTSEQ)和轉(zhuǎn)換表(鍵字TRNTBL)必須 和已有的訪問路徑的替換排列順序和轉(zhuǎn)換表相一致。 注:包含有合并或子串字段的邏輯文件不能和物理文件共享訪問路徑。 一個訪問路徑的主人是最初建立訪問路徑的邏輯文件成員。對于共享的訪問路徑,如果擁有訪問路徑的邏輯文件成員被刪除,則共享訪問路徑的第一個成員將成為新的主人。對于共享的訪問路徑,CRTLF命令中的參數(shù)FRCACCPTH、MAINT、RECOVER和UNIT不必和共享的訪問路徑中的這些參數(shù)相匹配。當(dāng)幾個邏輯文件成員共享一個訪問路徑時,并且FRCACCPTH、MAINT、RE

28、COVER和UNIT參數(shù)是不一致的,系統(tǒng)將通過共享成員指定的每個參數(shù)的最大限定值維護訪問路徑,如下說明: MBRA所指定的: MBRB所指定的: 系統(tǒng)所做的:FRCACCPTH(*YES)MAINT(*IMMED)RECOVER(*AFTIPL)FRCACCPTH(*YES)MAINT(*DLY)RECOVER(*NO)FRCACCPTH(*NO)MAINT(*IMMED)RECOVER(*AFTIPL) 訪問路徑的UNIT參數(shù)一般來自于主邏輯文件成員。 訪問路徑共享并不依賴于成員間的共享,因此,它不限制成員刪除的順序。 顯示文件描述(DSPFD)和顯示數(shù)據(jù)庫關(guān)系(DSPDBR)的命令顯示了訪

29、問路徑的共享關(guān)系。1.3.2.2.1 默認的共享訪問路徑舉例 這個例子的目的是幫助你全面的理解默認的訪問路徑的共享。兩個邏輯文件LFILE1和LFILE2,是建立在物理文件PFILE基礎(chǔ)上的。LFILE1先生成,有兩個索引字段KFD1和KFD2。LFILE2有三個索引字段KFD1、KFD2和KFD3。這兩個邏輯文件使用了其中兩個相同的索引字段,但并不共享訪問路徑,因為有三個索引字段的邏輯文件在兩個索引字段的文件之后生成。圖3 4 保存和重存前的物理文件和邏輯文件物理文件(PFILE)邏輯文件1(LFILE1)邏輯文件2(LFILE2)訪問路徑KFD1、KFD2KFD1、KFD2、KFD3字 段

30、KFD1、KFD2、KFD3、A、B、C、D、E、F、GKFD1、KFD2、KFD3、F、C、AKFD1、KFD2、KFD3、D、G、F、E 有一個應(yīng)用的例子,用文件LFILE1來訪問記錄,并改變字段KFD3,如果它的值為C則變?yōu)榭崭瘢绻禐榭崭駝t變?yōu)镃。由于訪問路徑?jīng)]有共享,所以能給出用戶預(yù)期的結(jié)果。但是,在物理文件和兩個邏輯文件保存和重存后,程序不做什么事情,但要用很長時間去處理。 除非做一些事情來修改重存操作,AS/400系統(tǒng)將:·首先重存具有最大鍵字數(shù)的邏輯文件。·不建立不必要的訪問路徑。 有關(guān)改變條件的資料請看第三部分3.4.3.2.2“當(dāng)訪問路徑被重建時的控制

31、”。因為LFILE2有三個索引字段,所以它首先被重存,之后重存LFILE1,它默認共享LFILE2的訪問路徑,不理解默認共享訪問路徑的用戶不會認識到,當(dāng)他們在重存后使用LFILE1時,實際上使用的是LFILE2的索引字段。圖3 5 保存和重存后的物理文件和邏輯文件,注意與保存和重存前的唯一不同是邏輯文件共享了同一個訪問路徑物理文件(PFILE)邏輯文件1(LFILE1)邏輯文件2(LFILE2)訪問路徑KFD1、KFD2、KFD3KFD1、KFD2、KFD3字 段KFD1、KFD2、KFD3、A、B、C、D、E、F、GKFD1、KFD2、KFD3、F、C、AKFD1、KFD2、KFD3、D、G

32、、F、E 檢測到和修改了的記錄是:相關(guān)記錄KFD1KFD2KFD30010101<空格>0020101<空格>0030101<空格>0040101<空格> 由第一個索引值讀到的記錄0101<空格>,變成0101C,則記錄如下:相關(guān)記錄KFD1KFD2KFD30010101C0020101<空格>0030101<空格>0040101<空格> 當(dāng)應(yīng)用要取下一個索引值時,在0101<空格>上的值是0101C,這是剛被改過的那條記錄,這次操作將把字段KFD3從C改為空格。 由于用戶不理解默認訪問

33、路徑的共享,應(yīng)用對每個記錄存取和修改要做兩次,結(jié)果是應(yīng)用程序運行了較長的時間,而看起來記錄并未改變。1.3.3 生成邏輯文件 在邏輯文件生成以前,邏輯文件所依據(jù)的物理文件必須已經(jīng)存在。 生成邏輯文件的步驟如下:1.用SEU或其它方式,將DDS 源碼錄入源文件中,以建立邏輯文件。有關(guān)在源文件中如何進入源語句,請見3.5.3“處理源文件”,下面是邏輯文件OR DHDRL的DDS 描述(一個定貨標(biāo)題文件)。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A* ORDER HEADER LOGICAL FILE (ORDHDRL) A R ORDHDR PFILE(ORDHDRP

34、) A K ORDER 該文件使用字段Order(序號)來定義訪問路徑,記錄格式與物理文件ORDHDRP記錄格式相同,因為沒有給出字段描述,所以邏輯文件記錄格式名必須和物理文件記錄格式名相同。2.生成邏輯文件,可以用CRTLF命令。 下面是如何使用CRTLF命令: CRTLF FILE(DSTPRODLB/ORDHDRL)TEXT(Order header logical rile) 上述命令使用了缺省值。例如:由于沒有指定SRCFILE和SRCMBR參數(shù),系統(tǒng) 將使用IBM支持的源文件QDDSSRC,源成員為ORDHDRL(和CRTLF定的文件名相同),具有一個同名成員的文件ORDHDRL被

35、放入庫DSTPRODLB中。1.3.3.1 生成多格式邏輯文件 一個多格式邏輯文件是用一個邏輯文件使用來自兩 個或多個物理文件的相關(guān)記錄,每個記錄格式和一個或多個物理文件相聯(lián)系。也可以在多個記錄格式中使用同一物理文件。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A* ORDER DETAIL FILE (ORDDTLP) - PHYSICAL FILE RECORD DEFINITION A REF(DSTREF) A R ORDDTL TEXT('Order detail record') A CUST R A ORDER R A LINE R A

36、ITEM R A QTYORD R A DESCRP R A PRICE R A EXTENS R A WHSLOC R A ORDATE R A CUTYPE R A STATE R A ACTMTH R A ACTYR R A 圖3-6 建立在字段引用文件上的物理文件(ORDDTLP)的DDS描述 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A* ORDER HEADER FILE (ORDHDRP) - PHYSICAL FILE RECORD DEFINITION A REF(DSTREFP) A R ORDHDR TEXT('Order header

37、record') A CUST R A ORDER R A ORDATE R A CUSORD R A SHPVIA R A ORDSTS R A OPRNME R A ORDMNT R A CUTYPE R A INVNBR R A PRTDAT R A SEQNBR R A OPNSTS R A LINES R A ACTMTH R A ACTYR R A STATE R A 圖3-7 建立在字段引用文件上的物理文件(ORDHDRP)的DDS描述 下面例子,顯示了如何建立有兩個記錄格式的邏輯文件ORDFILL,一個記錄格式定義為來自物理文件ORDHDRP的定貨標(biāo)題記錄,另一個為來自

38、物理文件ORDDTLP的訂貨明細記錄。(圖3-6是物理文件ORDDTLP的DDS,圖3-7為物理文件RDHDRP的DDS,圖3-8為邏輯文件ORDFILL的DDS)。 邏輯文件的記錄格式CRDHDR使用一個索引字段Order并以O(shè)rder來排序。邏輯文件記錄格式SRDDTL使用兩個索引字段Order和Line,并用其排序。 |.+.1.+.2.+.3.+.4.+.5.+.6.+.7.+.8 A* ORDER TRANSACTION LOGICAL FILE (ORDFILL) A R ORDHDR PFILE(ORDHDRP) A K ORDER A A R ORDDTL PFILE(ORDD

39、TLP) A K ORDER A K LINE A 圖3-8 邏輯文件ORDFILL的DDS 要生成具有兩個相連物理文件的邏輯文件ORDFILL,可使用CRTLF命令,如下: CRTLF FILE(DSTPRODLB/ORDFILL) TEXT(Order transaction logical file) DDS源語句在文件QDDSSRC的成員ORDFILL中,具有同名成員的文件ORDFILL被放入庫DSTPRODLB中,邏輯文件成員ORDFILL的訪問路徑,將對來自O(shè)RDHDRP和ORDDTLP兩個文件中的記錄進行排序,兩個物理文件的記錄格式是以公共字段Order為索引的。由于在邏輯文件的

40、描述中指定了Order,則它們將以O(shè)rder來排序。先檢索文件ORDHDRP,再檢索ORDDTLP,將兩個文件中重復(fù)的部分合并起來,因為沒有指定FIFO、LIFO和FCFO,在同一文件中的重復(fù)鍵值的檢索順序就不能得到保證。 注:在一定環(huán)境中,使用多個邏輯文件要好于使用多格式邏輯文件,例如:多格式邏輯文件使用索引字段訪問時,若其中一個文件的記錄非常少,就可能使性能非常不好,盡管有多個記錄格式,但邏輯文件只有一個索引,從這里處理每一個物理文件,用這種處理方式的應(yīng)用程序(例如:用RPG中SETLL和READE來處理小文件),系統(tǒng)必須搜索所有的索引入口,找各個小文件的項。如果該索引有許多項,檢索索引將

41、用很長時間,這個時間取決于每個文件的索引字段數(shù)和它們的順序。(如果一個小文件中沒有記錄,對性能沒有影響。這是因為系統(tǒng)可以采用一個快速路徑,避免檢索索引)。1.3.3.1.1 控制如何在多格式文件中檢索記錄 在多格式的邏輯文件中,需要定義索引字段。每個記錄格式都有自己的鍵字定義,并且定義記錄格式的索引字段只是為了合并不同格式中的記錄,每個記錄格式不非要包含鍵了中的每個索引字段,考慮下面記錄: Header記錄格式: RecordOrderCustOrdate1418824139405068823213328674060288Detail記錄格式:RecordOrderLineItemQtyord

42、ExtensA32133014641225125000B3213303124814001000C41882024641210050000D321330214201110454500E41882010826540008000 在DDS描述中,Header記錄格式定義在Detail之前,如果訪問路徑使用了Order字段作為兩個記錄格式中第一個索引字段,LINE字段只作為第二個記錄格式的第二個索引字段,并且兩個都是升序,則訪問路徑中的記錄是: 記錄2 記錄A 記錄D 記錄B 記錄1 記錄E 記錄C 注:帶有重復(fù)鍵值的記錄應(yīng)按物理文件指定的順序排列。然后,如果一個記錄格式中仍有重復(fù)鍵值記錄,則按FIFO、LIFO或FCFO指定的順序進行排列。例如,如果邏輯文件指定了DDS鍵字FIFO,那么記錄格式中的重復(fù)記錄將按先進先出的順序出現(xiàn)。 對于多格式邏輯文件,可以對索引字段使用*NONE功能,這樣,就能把從同一訪問路徑中取出的一個記錄格式的記錄與另一個記錄格式中的記錄分開。通常,從所有記錄格式中產(chǎn)生的記錄都是按索引值來合并的,但如果對一索引字段指定了*NONE,那么只有在*NONE之前,出現(xiàn)在所有記錄格式中的有索引字段的記錄才被合并。下例中的邏輯文件有三個記錄格式,每個都和不同的物理文件相關(guān)聯(lián)。 記錄格

溫馨提示

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

最新文檔

評論

0/150

提交評論