Iseries

如何在 DDS 邏輯文件中正確使用 PFILE 關鍵字?(AS400)

  • May 11, 2015

我在正確表述這個問題時遇到了麻煩(也不確定我是否在正確的堆棧部分)

我的問題是我有一個ORDFILE位於ORDRENTLB庫中的邏輯文件,即假設可以訪問CIFFILE位於CUSTINFOLB庫中的物理文件數據。

編譯時,我得到的程序只是“異常結束”錯誤。

但是,當我刪除PFILE(CUSTINFOLB/CIFFILE)並將類型更改為 PF 時,它可以完美編譯。

CIFFILE 已成功編譯為它唯一的 PF。

我嘗試過的:移動ORDFILE到與 CIFFILE 相同的庫(異常結束錯誤)嘗試通過在中放置一個旁邊來聲明為a (CUSTOMER出現錯誤)嘗試在 , 周圍放置單引號(錯誤)foreign key``F``CUSTOMER``ORDFILE``'CUSTINFOLB/CIFFILE'

我究竟做錯了什麼?

謝謝你的時間。 文件

排序文件

編輯

範圍:在 iSeries 平台上創建一個小型分發系統。創建一系列包含以下程式碼的庫:

  • 客戶資訊文件 (CIF) 功能
  • 訂單輸入功能
  • 採購功能
  • 庫存功能

我的要求:

  • 根據指定的資訊,為 4 個文件組中的每一個創建 4 個 DDS 規範。
  • 為您使用 DDS 規範設置的 4 個文件中的每一個創建 4 個 DFU 程序。
  • 創建 4 個 CL 程序來執行您創建的 DFU 程序。

包括一些評論以及選擇菜單選項後將出現在螢幕上的消息。例如,如果您選擇選項 #1 來輸入 CIF 數據,則最初應顯示一條消息,例如 -“CIF 數據輸入程序現在正在執行”

  • 為 3 個部門(訂單輸入/庫存/採購)中的每一個創建 3 個菜單,每個菜單上都有相應的標題。
  • 創建一個名為 MAINMENU 的主菜單以訪問 3 個部門菜單。
  • 根據 CIF 文件創建 Query/400 報告並將其作為選項添加到主菜單。

確保您已遵循以下 3 個要求:

通過選擇“列印”選項將查詢創建為報告。格式化 CIF # 以消除報告上的數字中的“,”。在報表上放置一個頁面標題。

  • 主菜單應包括以下菜單選項:

轉到 3 個不同的“部門”菜單 執行 CIF 查詢程序 訪問假離線文件 註銷

  • 在您創建的菜單上設置 CLP 程序。

CIF 主文件只能存在於一個地方,但所有部門都必須能夠訪問同一個文件。

數據庫:

客戶資訊文件 =>

客戶編號(5 位數字欄位)- KEY

公司名

聯繫人姓名

城市

電話號碼

客戶訂單總額 ($)

訂單輸入文件 =>

訂單輸入編號(6 位數字欄位)- KEY

顧客號碼

訂購的商品編號(10 個字元)

訂購日期 訂購數量

排序者(人名)

訂單總額 ($)

庫存文件 =>

零件編號(6 位數字欄位)- KEY

部分說明

手頭數量

單位成本

缺貨指示符(1 字節 Alpha)

購買文件 =>

採購訂單號(4 位數字欄位)- KEY

零件號

購買數量

數量延期交貨

購買日期

總採購訂單金額 ($)

這四件事中的每一個都應該有自己的PF(又名表)。在現實世界中,它們中的任何一個甚至可能最好由附加的補充表來服務,這可能是適當的。例如,假設客戶希望為幾個不同的項目安排訂單。這通常使用訂單標頭檔來處理,以儲存與整個訂單相關的數據,以及每個被訂購商品的訂單詳細資訊文件。但我們將保持在您的任務範圍內,該任務已明確措辭與預期的設計。

這些表本身不訪問彼此的資訊。但它們將包含欄位(又名列),這些欄位將引用其他表中的關鍵欄位。通過為每個這樣的鍵序列創建一個簡單的鍵控邏輯文件,為每個表創建索引通常是一個好主意,因為我們可以期望以各種方式訪問它。

在這種情況下,在你定義了你的 之後ORDFILE,你可以定義一個邏輯文件,例如ORDFILE1CUSTOMER作為

$$ first $$關鍵欄位,可能後跟ORDRNUM. 您可能有另一個由 鍵控ITEMNUM。任何可能派上用場的鍵序列都可以擁有自己的 LF。索引在 iSeries 上的成本非常低,因此有幾十個不是問題,即使其他平台可能有較低的推薦指南。因此,在現實世界中,您可能希望在這些文件上創建一個很好的品種,以幫助優化器處理您的使用者可能想要的各種查詢。對於這樣的任務,只創建與需求相關的任務。 將各種物理欄位組合在一起的 LF 類型稱為連接(或連接)邏輯文件。除非你的教授提到它,否則這可能超出了他/她的期望範圍。一個查詢可以讀取多個 PF,就像連接邏輯一樣,因此在這種情況下連接 LF 可能是多餘的。


免責聲明

該平台上的現代最佳實踐通常是對數據庫使用 SQL,而不是 DDS 和 Query/400。知道 QM Query 可以將 Query/400 查詢轉換為 SQL 可能會很方便。但是大多數公司仍然有大量使用 DDS 定義的數據庫文件。當您是該平台上的專業開發人員時,了解這些早期技術非常重要,因為您可能必須支持它們。

引用自:https://dba.stackexchange.com/questions/101071