AS400,AS/400,iSeries,i5,VB,接続サンプルWindowsXPサーバー)        


前提条件

 ODBC接続
   ODBCを使用するためには、「IBM AS/400 クライアント・アクセス」
-----------------------------------------------------------------------------------------
CLPプログラム
  *******************************************************
  ** オブジェクト:QGPL/VBTESTC
    *******************************************************
    PGM PARM(&IN1 &IN2 &OUT1)
           DCL VAR(&IN1) TYPE(*CHAR) LEN(4)
           DCL VAR(&IN2) TYPE(*DEC ) LEN(8 0)
           DCL VAR(&IN2C) TYPE(*CHAR) LEN(8)
           DCL VAR(&OUT1) TYPE(*CHAR) LEN(1)
           CHGVAR &IN2C &IN2
           SNDPGMMSG MSG(&IN2C) TOUSR(DSP01)
           CHGVAR VAR(&OUT1) VALUE('OK')
    ENDPGM
-----------------------------------------------------------------------------------------
プロシジャー作成

     @ SQL 対話式セッションの開始

      AS400コマンド「STRSQL」と入力し実行する。


      A  プロシジャー作成
        CREATE PROCEDURE QGPL/PVBTESTC(IN P1 CHAR ( 2), IN P2 DEC (8 , 0),
        INOUT P3 CHAR ( 2))
        LANGUAGE CL NOT DETERMINISTIC NO SQL EXTERNAL NAME QGPL/VBTESTC
        PARAMETER STYLE GENERAL

         PROCEDURE    :VB上からCALLする名前で登録
         EXTERNAL NAME:AS400上のプログラム

プロシジャー削除

   @ 対話式セッション内で実行

      DROP PROCEDURE QGPL/PVBTESTC

-----------------------------------------------------------------------------------------
VBソース
  Private Sub Command1_Click()
    Dim cn As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim strCON As String
    Dim parm1 As ADODB.Parameter
    Dim parm2 As ADODB.Parameter
    Dim parm3 As ADODB.Parameter

    strCON = "DSN=DSNAME;UID=QPGMR;PWD=QPGMR" 'DSNAME:ODBC定義された名前 UID:ユーザーID PWD:パスワード 

    cn.Open strCON

    Set cmd = New ADODB.Command
    cmd.ActiveConnection = cn
    cmd.CommandType = adCmdText

    cmd.CommandText = "CALL QGPL.PVBTESTC (?, ?, ?)"
    cmd.Parameters.Append cmd.CreateParameter("parm1", adChar , adParamInput , 2, "01")
    cmd.Parameters.Append cmd.CreateParameter("parm2", adDecimal, adParamInput , 8, 20030303)
    cmd.Parameters.Append cmd.CreateParameter("parm3", adChar , adParamInputOutput, 2, "")
    cmd.Parameters(1).Precision = 8
    cmd.Parameters(1).NumericScale = 0

    cmd.Execute

    label1 = cmd.Parameters(2).Value

    cn.Close
  End Sub

 

HOME