RPG プログラム A と CL プログラム B があります。A はデータ構造をエントリー・パラメーターとして B を呼び出します。このデータ構造には、文字とパック 10 進数が含まれています。B のエントリ パラメータは文字変数として宣言されているため、エントリ パラメータが A から渡されると、10 進数値は 16 進形式になります。B で元の 10 進数値が必要です。これらの 16 進文字列を B で 10 進数に変換する方法はありますか?
質問する
1676 次
1 に答える
2
変換する必要はありません。データ構造内の適切な位置に小数フィールドを定義します。
PGM (&STRUCT)
DCL &STRUCT *CHAR 12
DCL &NAME *CHAR 10 STG(*DEFINED) DEFVAR(&STRUCT)
DCL &NBR *DEC (3 0) STG(*DEFINED) DEFVAR(&STRUCT 11)
*DEFINED 格納方法は、位置が固定されている場合にうまく機能します。場所が異なる可能性がある状況では、*BASED ストレージを使用してください。
この例では、フォーマット パラメータによって決定される位置に数値があります。値は 1 または 2 増加します。
PGM (&STRUCT)
DCL &STRUCT *CHAR 80
DCL &FMT *CHAR 4
DCL &P1 *PTR
DCL &NUM *DEC (3 0) STG(*BASED)
...
CHGVAR &FMT %SUBSTR(&STRUCT 1 4)
CHGVAR &P1 %ADDRESS(&STRUCT)
SELECT
WHEN (&FMT = 'ONE ') THEN(DO)
CHGVAR %OFFSET(&P1) 20 /* POS 21 IN STRUCT */
CHGVAR &NUM (&NUM + 1) /* INCREMENT NUMBER BY 1 */
ENDDO
WHEN (&FMT = 'TWO ') THEN(DO)
CHGVAR %OFFSET(&P1) 40 /* POS 41 IN STRUCT */
CHGVAR &NUM (&NUM + 2) /* INCREMENT NUMBER BY 2 */
ENDDO
OTHERWISE DO
/* EXIT WITH ERROR */
...
ENDDO
ENDSELECT
CL コマンドの変数を参照してください。
于 2012-11-01T13:03:49.063 に答える