H DFTNAME(SMP007) DATEDIT(*YMD/) F********** 商品マスターあいまい検索 ********************************* FSMP007D CF E WORKSTN F SFILE(SFREC01:RRN1) F INFDS(INFDS) F********************************************************************** D INFDS DS D LINE 370 371B 0 D BRRN 376 377B 0 D TOPRRN 378 379B 0 D*( データ・ベース外部データ構造 ) D FMT001 E DS EXTNAME(SHOHIN) D* 作業変数の定義 D RRN1 S 4S 0 INZ D MAXGYO S 4S 0 INZ(13) D AR S 1 DIM(24) C*( 初期画面 ) C*----------------------------------------------------+ C START TAG | C EXFMT DSPHEAD C*----------------------------------------------------+ C*( CF03 )- 終了 C *IN03 IFEQ *ON CF03 C SETON LR C RETURN C END CF03 C*( ENTER )- 検索 C Z-ADD 1 TOPRRN C EXSR READ C*( サブ・ファイルの表示 ) C*----------------------------------------------------+ C DSPLY TAG | C WRITE DSPEND01 C SETON 4142 |SFL-DSPLY C EXFMT SFCTL01 C SETOFF 4142 | C*----------------------------------------------------+ C*( CF03 )- 終了 C *IN03 IFEQ *ON CF03 C SETON LR C RETURN C END CF03 C*( CF12 )- 前画面 C *IN12 IFEQ *ON CF12 C GOTO START C END CF03 C END TAG C****************************************************** C READ BEGSR C****************************************************** C EXSR SFLCLR C* ********************************************************** C* * 検索文字列 SERACH = '% 検索文字 %% ... %' に構成する * C* ********************************************************** C MOVEA SCHFLD AR(2) C 1 DO 24 N 4 0 C AR(N) IFEQ ' ' C MOVE '%' AR(N) C END C END C MOVEA AR SEARCH 24 C* ****************************** C* * SQL 文のカーソルの前準備 * C* ****************************** C* SELECT 文によってカーソル C1 を用意 C/EXEC SQL DECLARE C1 CURSOR FOR C+ SELECT T1.SHCODE, T1.SHNAME, T1.SHTANK, T1.SHSCOD, T1.SHSCOD C+ FROM QTRFIL/SHOHIN T1 C+ WHERE T1.SHNAME LIKE :SEARCH C+ ORDER BY T1.SHCODE C/END-EXEC C* カーソルをオープン C/EXEC SQL C+ OPEN C1 C/END-EXEC C* *********************************** C* * FETCH によって明細行を取り出す * C* *********************************** C SETOFF 80 C/EXEC SQL WHENEVER NOT FOUND GOTO EOF C/END-EXEC C 1 DO MAXGYO RRN1 C/EXEC SQL C+ FETCH C1 INTO :SHCODE, :SHNAME, :SHTANK, :SHSCOD, :SHSCOD C/END-EXEC C MOVE RRN1 GYO C N80 Z-ADD 1 DSPREC C SETON 80 C*----------------------------------------------------+ C WRITE SFREC01 C*----------------------------------------------------+ C END C EOF TAG C* カーソルをクローズ C/EXEC SQL C+ CLOSE C1 C/END-EXEC C ENDSR C****************************************************** C SFLCLR BEGSR C****************************************************** C*----------------------------------------------------+ C SETON 44 | C WRITE SFCTL01 C SETOFF 44 | C*----------------------------------------------------+ C ENDSR