H DATEDIT(*YMD/)
      **************************************************************************
      *使用ファイルの定義
      **************************************************************************
      *<<商品マスター>>
     FSYOHIN    IF   E           K DISK    PREFIX(XX) USROPN
      **************************************************************************
      *データ構造
      **************************************************************************
      *<< PROGRAM DATA STRUCTURE >>
     D                SDS
     Dproc_name          *PROC
      *<< WEB CONTROLL >>
     D cur_dsp         S              3    INZ
      *<< PAGING CONTROLL >>
     D pag_mod         S              6    INZ
      * OPNQRY
     D qry_file        S             10    INZ('SYOHIN    ')
     D qry_slt         S            500    INZ
     D qry_kfld        S            200    INZ
     D qry_opt         S              4    INZ('*ALL')
      * CMDEXEC
     D qcmd_str        S           1000    INZ
     D qcmd_len        S             15  5 INZ(500)
      * WORK
     D w_str           S             30    INZ
      **************************************************************************
      *WEBツールの定義
      **************************************************************************
      *<<初期処理>>

     D #IWIN           PR             1    EXTPROC('#IWIN')
     D                               10    value

     D sts_in          S              1    INZ
     D pgm_id          S             10    INZ
      *<<変数値獲得>>

     D #IWVAL          PR          1000    EXTPROC('#IWVAL')
     D                               32    const

     D get_nam         S             32    INZ
     D get_val         S           1000    INZ
      *<<変数値セット>>

     D #IWSET          PR             1    EXTPROC('#IWSET')
     D                               32    const
     D                             1000    value

     D sts_set         S              1
     D set_nam         S             32    INZ
     D set_val         S           1000    INZ
      *<<出力処理>>

     D #IWOUT          PR             1    EXTPROC('#IWOUT')
     D                               10    const
     D                               10    const
     D                               10    value

     D sts_out         S              1
     D out_lib         S             10    INZ
     D out_fil         S             10    INZ
     D out_mbr         S             10    INZ
      *
     D out_mbr1        S             10    INZ('SP0120H1  ')
     D out_mbr2        S             10    INZ('SP0120H2  ')
     D out_mbr3        S             10    INZ('SP0120H3  ')
     D out_mbr4        S             10    INZ('SP0120H4  ')
      **************************************************************************
      *外部プロシージャの定義
      **************************************************************************
      *<<文字列数値変換>>

     D #CHR2NUM        PR            31    EXTPROC('#CHR2NUM')
     D                               50    value
     D                                2  0 const
     D                                2  0 const

      *
     D cnv_str         S             50    INZ
     D dec_len         S              2  0 INZ
     D dec_plen        S              2  0 INZ
     D                 DS
     D dec_str                 1     31
     D d_minus                 1      1
     D d_numeric               2     31
      **************************************************************************
      *KEYリスト
      **************************************************************************
      *<<商品マスター>>
     C     K@01          KLIST
     C                   KFLD                    W@HINCOD
      **************************************************************************
      *メイン
      **************************************************************************
      *<<初期処理>>
     C                   EXSR      INZPRC
      *<<メイン処理>>
     C                   SELECT
      ************************************************                      ****
      *条件入力画面表示
      ************************************************                      ****
     C                   WHEN      cur_dsp = 'TOP'
      *<<条件入力画面HTML指定>>
     C                   EVAL      out_mbr = out_mbr1
      *<< PAGING CONTROLL >>

     C                   MOVEL(P)  '*BEGIN'      set_val
     C                   EVAL      sts_set = #IWSET('pag_mod':set_val)

      ************************************************
      *一覧画面表示
      ************************************************
     C                   WHEN      cur_dsp = 'LST'
      *<<条件入力情報の獲得>>
     C                   EXSR      GETSEL
      *<<獲得情報のチェック>>
     C                   EXSR      GETCHK
      *<<OPNQRYF>>
     C                   EXSR      OPNQRY
      *<<条件入力情報のセット>>
     C                   EXSR      SETSEL
      *<<明細表示画面HTML指定>>
     C                   EVAL      out_mbr = out_mbr2
      ************************************************
      *詳細画面表示
      ************************************************
     C                   WHEN      cur_dsp = 'DTL'
      *<<キー情報の獲得>>
     C                   EXSR      GETKEY
      *<<データベースの処理>>
     C                   OPEN      SYOHIN
     C     K@01          CHAIN     SYOHINR                            90
     C                   CLOSE     SYOHIN
      *<<データが存在する時、明細画面表示>>
     C                   IF        *IN90 = *OFF
      *<<キー情報のセット>>
     C                   EXSR      SETKEY
      *<<詳細情報のセット>>
     C                   EXSR      SETDTL
      *<<詳細表示画面HTML指定>>
     C                   EVAL      out_mbr = out_mbr3
     C                   ENDIF
      *<<データが存在しない時、エラー画面表示>>
     C                   IF        *IN90 = *ON
     C                   EVAL      out_mbr = out_mbr4
     C                   ENDIF
     C                   ENDSL
      ************************************************                      ****
      *HTML出力処理
      ************************************************                      ****

     C                   EVAL      sts_out = #IWOUT('CGISAMPLE':'CGISAMPLE':
     C                                               out_mbr)

      *CLOF
     C                   EVAL      qcmd_str='CLOF ' + qry_file
     C                   EXSR      CMDEXE
      *<<終了処理>>
     C                   SETON                                        LR
     C                   RETURN
      **************************************************************************
      *初期処理
      **************************************************************************
     C     INZPRC        BEGSR
      *<<変数の定義>>
      * KEY
     C     *LIKE         DEFINE    XXHINCOD      W@HINCOD
      *選択範囲
     C     *LIKE         DEFINE    XXHINCOD      W@HINCODF
     C     *LIKE         DEFINE    XXHINCOD      W@HINCODT
      *<< WEB OPERATION INITIALIZE >>

     C                   EVAL      pgm_id = proc_name
     C                   EVAL      sts_in = #IWIN(pgm_id)

      *<<画面モードの獲得>>

     C                   EVAL      cur_dsp = #IWVAL('cur_dsp')

      *画面モード初期値= 'TOP'
     C                   IF        cur_dsp = *BLANK
     C                   EVAL      cur_dsp = 'TOP'
     C                   ENDIF
      *
     C                   ENDSR
      **************************************************************************
      *選択条件入力情報の獲得
      **************************************************************************
     C     GETSEL        BEGSR
      *選択範囲(FROM-TO)
      *<<商品コード>> FROM

     C                   EVAL      W@HINCODF = #IWVAL('XXHINCOD1')

     C                   IF        (W@HINCODF = *BLANK) OR
     C                             (%TRIM(W@HINCODF) = '*BEGIN')
     C                   MOVEL(P)  '*BEGIN'      W@HINCODF
     C                   ENDIF
      *<<商品コード>> TO

     C                   EVAL      W@HINCODT = #IWVAL('XXHINCOD2')

     C                   IF        (W@HINCODT = *BLANK) OR
     C                             (%TRIM(W@HINCODT) = '*END')
     C                   MOVEL(P)  '*END'        W@HINCODT
     C                   ENDIF
      *
     C                   ENDSR
      **************************************************************************
      *獲得情報のチェック
      **************************************************************************
     C     GETCHK        BEGSR
      *<<獲得情報に関するチェック・ロジックは、>>
      *<<ここに組み込んでください。      >>
      *
     C                   ENDSR
      **************************************************************************
      *選択条件のセット
      **************************************************************************
     C     SETSEL        BEGSR
      *選択範囲(FROM-TO)
      *<<商品コード>> FROM

     C                   EVAL      sts_set = #IWSET('XXHINCOD1':
     C                                       %TRIM(W@HINCODF))

      *<<商品コード>> TO

     C                   EVAL      sts_set = #IWSET('XXHINCOD2':
     C                                       %TRIM(W@HINCODT))

      *
     C                   ENDSR
      **************************************************************************
      *キー情報の獲得
      **************************************************************************
     C     GETKEY        BEGSR
      *<<商品コード>>

     C                   EVAL      W@HINCOD = #IWVAL('XXHINCOD')

      *
     C                   ENDSR
      **************************************************************************
      *キー情報のセット処理
      **************************************************************************
     C     SETKEY        BEGSR
      *<<商品コード>>

     C                   EVAL      set_val = %TRIM(W@HINCOD)
     C                   EVAL      sts_set = #IWSET('XXHINCOD':set_val)

      *
     C                   ENDSR
      **************************************************************************
      *明細情報のセット処理
      **************************************************************************
     C     SETDTL        BEGSR
      *明細表示項目
      *<<商品コード>>

     C                   EVAL      set_val = %TRIM(XXHINCOD)
     C                   EVAL      sts_set = #IWSET('XXHINCOD':set_val)

      *<<メーカー>>

     C                   EVAL      set_val = %TRIM(XXMAKER)
     C                   EVAL      sts_set = #IWSET('XXMAKER':set_val)

      *<<品種>>

     C                   EVAL      set_val = %TRIM(XXHINSYU)
     C                   EVAL      sts_set = #IWSET('XXHINSYU':set_val)

      *<<品名>>

     C                   EVAL      set_val = %TRIM(XXHINMEI)
     C                   EVAL      sts_set = #IWSET('XXHINMEI':set_val)

      *<<売単価>>

     C                   EVAL      set_val = %TRIM(%EDITC(XXUTANKA:'L'))
     C                   EVAL      sts_set = #IWSET('XXUTANKA':set_val)

      *<<仕入単価>>

     C                   EVAL      set_val = %TRIM(%EDITC(XXSTANKA:'L'))
     C                   EVAL      sts_set = #IWSET('XXSTANKA':set_val)

      *<<在庫数>>

     C                   EVAL      set_val = %TRIM(%EDITC(XXZAIKO:'L'))
     C                   EVAL      sts_set = #IWSET('XXZAIKO':set_val)

      *
     C                   ENDSR
      **************************************************************************
      *OPNQRYF
      **************************************************************************
     C     OPNQRY        BEGSR
      * QRYSLT STRING作成
      *<<商品コード>> FROM
     C                   IF        %TRIM(W@HINCODF) <> '*BEGIN'
     C                   IF        qry_slt <> *BLANK
     C                   EVAL      qry_slt = %TRIM(qry_slt) + ' *AND '
     C                   ENDIF
     C                   EVAL      qry_slt = %TRIM(qry_slt) + ' (' +
     C                               'HINCOD' + ' >= ''''' +
     C                               %TRIM(W@HINCODF) + ''''')'
     C                   ENDIF
      *<<商品コード>> TO
     C                   IF        %TRIM(W@HINCODT) <> '*END'
     C                   IF        qry_slt <> *BLANK
     C                   EVAL      qry_slt = %TRIM(qry_slt) + ' *AND '
     C                   ENDIF
     C                   EVAL      qry_slt = %TRIM(qry_slt) + ' (' +
     C                               'HINCOD' + ' <= ''''' +
     C                               %TRIM(W@HINCODT) + ''''')'
     C                   ENDIF
      * KEY FILED
     C                   EVAL      qry_kfld = %TRIM(qry_kfld)
     C                                         + ' (HINCOD)'
     C                   IF        qry_kfld = *BLANK
     C                   MOVEL(P)  '*FILE'       qry_kfld
     C                   ENDIF
      *CLOF
     C                   EVAL      qcmd_str='CLOF ' + qry_file
     C                   EXSR      CMDEXE
      *OPNQRYF
      * FILE
     C                   EVAL      qcmd_str = 'OPNQRYF'
     C                                + ' FILE(' + %TRIM(qry_file)  + ')'
      * OPTION
     C                   EVAL      qcmd_str = %TRIM(qcmd_str)
     C                                + ' OPTION(' + %TRIM(qry_opt) + ')'
      * QRYSLT
     C                   IF        qry_slt <> *BLANK
     C                   EVAL      qcmd_str = %TRIM(qcmd_str)
     C                                + ' QRYSLT('''
     C                                + %TRIM(qry_slt) + ''')'
     C                   ENDIF
      * KEYFLD
     C                   EVAL      qcmd_str = %TRIM(qcmd_str)
     C                                + ' KEYFLD('
     C                                + %TRIM(qry_kfld) +')'
      * SEQONLY
     C                   EVAL      qcmd_str = %TRIM(qcmd_str)
     C                                + ' SEQONLY(*NO)'
     C                   EXSR      CMDEXE
      *OVRDBF
     C                   EVAL      qcmd_str = 'OVRDBF '
     C                                + %TRIM(qry_file)
     C                                + ' '
     C                                + %TRIM(qry_file)
     C                                + ' SHARE(*YES)'
     C                   EXSR      CMDEXE
      *
     C                   ENDSR
      **************************************************************************
      *CMD実行
      **************************************************************************
     C     CMDEXE        BEGSR
      *
     C                   CALL      'QCMDEXC'                            80
     C                   PARM                    qcmd_str
     C                   PARM                    qcmd_len
      *
     C                   CLEAR                   qcmd_str
      *
     C                   ENDSR