こちらこそ、お世話になります。プロシージャーの戻り値を複数定義することはできません。しかし、現実はご指摘のように結果として TRUE または FALSE を戻して、TRUE であれば、初めて戻り値を取得したい、というような処理の必要性があります。これを解決するにはプロシージャーのパラメータにポインターを定義することです。ポインターをパラメータとして渡して、渡されたプロシージャー側でそのポインターを基底とする変数を更新してやれば元の変数の実体を変更することができます。この手法は他の言語でもよく使用されている方法です。下記にそのサンプルをご紹介します。この例では品種名 HNSNAM のポインターをパラメータ値として渡しています。このようなテクニックは EnterpriseServer Ver5.1 のヘルプでも詳細な解説を予定しています。Source: http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QRPGLESRC.FILE/TESTPTR.MBR0001.00 H DFTNAME(TESTPTR) DATEDIT(*YMD/) DFTACTGRP(*NO) 0002.00 F********** 品種マスターの照会 ***************************************0003.00 FHINSHU IF E K DISK 0004.00 F**********************************************************************0005.00 D GET_HINSHU PR 4S 0 0006.00 D HNSCOD 4A VALUE 0007.00 D HNSNAM_P * VALUE 0008.00 0009.00 D RES S 4S 0 0010.00 D TRUE S 4S 0 INZ(0) 0011.00 D FALSE S 4S 0 INZ(-1) 0012.00 0013.00 C MOVEL '0001' HNSCOD 0014.00 C EVAL RES = GET_HINSHU(HNSCOD: %ADDR(HNSNAM)) 0015.00 C IF RES = TRUE 0016.00 C* ( 取得成功 ! ) 0017.00 C 'HNSNAM=' CAT(P) HNSNAM:0 DSP40 40 0018.00 C DSP40 DSPLY ANS 1 0019.00 C ELSE 0020.00 C* ( 取得失敗 ! ) 0021.00 C 'FAILED' DSPLY ANS 0022.00 C END 0023.00 C SETON LR 0024.00 C****************************************************** 0025.00 * GET_HINSHU : 品種名の取得 0026.00 C****************************************************** 0027.00 P GET_HINSHU B EXPORT 0028.00 D PI 4S 0 0029.00 D HNSCOD 4A VALUE 0030.00 D HNSNAM_P * VALUE 0031.00 0032.00 D RTNNAME S 14 BASED(HNSNAM_P) 0033.00 C SETOFF 99 0034.00 C HNSCOD CHAIN HINSHU 99 0035.00 C *IN99 IFEQ *OFF 0036.00 C MOVEL HNSNAM RTNNAME 0037.00 C RETURN TRUE 0038.00 C ELSE 0039.00 C RETURN FALSE 0040.00 C END 0041.00 P E
なるほど...。戻り値のポインターを返す事ができるのですね。これであれば戻り値を複数定義する事も可能ですね。色々応用できそうです。ありがとうございました。