簡體   English   中英

如何使用 cwbx.dll 和 AS400System 類從 C# 到 IBM i (iSeries) 設置庫列表

[英]How to set library list using cwbx.dll and AS400System class from C# to IBM i (iSeries)

我使用客戶端訪問驅動程序對 IBM i(一個 iSeries)進行 sql 調用。 使用驅動程序時,我可以指定在發出 sql 命令/函數時將使用的庫列表。

我現在需要從 C# 訪問 iSeries 並調用 CL/RPGLE 程序。 我發現在添加對 cwbx.dll 的引用后,我可以創建一個 AS400System 對象。 但是,我不確定如何設置庫列表並且無法找到有關 cwbx.dll 的文檔。 有沒有其他人能夠使用這個對象來設置庫列表?

詢問並回答,我知道。 但這是我對提出的問題的回答。

CHGLIBL LIBL(<space-separated list of libraries>)的命令CHGLIBL LIBL(<space-separated list of libraries>)將強制 AS/400 用戶庫列表成為所需的列表。 它還強制庫列表與指定的順序相同。

此外,在調用 AS/400 程序(尤其是 CL 的)時,IMO、CWBX API 提供比 SQL 接口更多的錯誤詳細信息。

根據此文檔:“CWBX.DLL(編程接口)允許以編程方式進行數據傳輸操作”

那不是你想要做的。

您可能希望使用DB2 for i .NET 提供程序

當您在 IBm iAccess 安裝期間選擇“程序員工具包”時,將安裝提供程序的文檔。

進行了更多挖掘,CWBX.DLL 的文檔可以在以下位置找到:
C:\\Program Files (x86)\\IBM\\Client Access\\MRI2924\\cwbx.hlp

您似乎無法操作命令的庫列表。 僅通過 DatabaseUserLibraryList 對象傳輸數據。

從 .NET 調用 RPGLE/CL 的推薦方法是將它們作為 SQL 存儲過程調用。 從技術上講,考慮到操作系統基於對象的特性,盒子上的每個 *PGM(或 *SRVPGM 中的過程)對象都已經是一個存儲過程,可以使用 SQL 調用命令隱式調用。 但是,建議使用帶有EXTERNAL NAME子句的CREATE PROCEDURE語句顯式定義 RPG / CL 接口到數據庫,如下所示。

這篇文章的例子

假設您有一個名為 CUSTINFO 的 *PGM,具有以下程序界面(又名 *ENTRY PLIST)

D CustInfo         PI
D  CustNo                    5P 0
D  Name                     15A
D  City                     25A
D  State                     2A 
D  Active                    1P 0

在輸入 CustNo 的情況下,其余參數用作輸出。 然后,您可以通過運行以下命令,將該程序顯式定義為 SQL 存儲過程:

CREATE PROCEDURE GetCustInfo    
 (IN CustNo DEC (5,0), OUT Name CHAR (15), OUT City CHAR(25), 
 OUT St CHAR(2), OUT Act DEC(1,0))
 EXTERNAL NAME MYLIB/CUSTINFO   
 LANGUAGE RPGLE 
 PARAMETER STYLE GENERAL
  • 注意我使用了術語“程序接口”。 從技術上講,它是入口點或主線過程接口

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM