引数の説明
一意名(埋め込みCLR型,英字/英数字/日本語項目) |
例
000001 IDENTIFICATION DIVISION. 000002 CLASS-ID. C3500. 000003 ENVIRONMENT DIVISION. 000004 CONFIGURATION SECTION. 000005 REPOSITORY. 000006 IDENTIFICATION DIVISION. 000007 OBJECT. 000008 ENVIRONMENT DIVISION. 000009 DATA DIVISION. 000010 WORKING-STORAGE SECTION. 000011 01 AA. 000012 02 OBJDT PIC S9(9) COMP-5. 000013 PROCEDURE DIVISION. 000014 IDENTIFICATION DIVISION. 000015* 000016 METHOD-ID MAIN. 000017 ENVIRONMENT DIVISION. 000018 DATA DIVISION. 000019 PROCEDURE DIVISION. 000020 INVOKE SELF "METHOD-1" USING BY REFERENCE OBJDT. 000021 END METHOD MAIN. 000022* 000023 METHOD-ID METHOD-1. 000024 ENVIRONMENT DIVISION. 000025 DATA DIVISION. 000026 LINKAGE SECTION. 000027 01 PRM1 PIC S9(9) COMP-5. 000028 PROCEDURE DIVISION USING PRM1. 000029 ADD 10 TO PRM1. 000030 END METHOD METHOD-1. 000031* 000032 END OBJECT. 000033 END CLASS C3500.
C3500.cob (20) : JMN3500I-W REFERENCEパラメタ'OBJDT'と仮パラメタは,CLRとしては異なる型であるため,呼び出し先で値を更新した場合,'OBJDT'に反映されるのは,呼び出し先からの復帰後となります.
詳細な説明
本来REFERENCEパラメタにおいては,呼出し先での値の変更は呼出し元に即時に反映されます.しかし呼出し元と呼出し先とでCLRとしての型が異なる場合には,呼出し元のパラメタは呼出しの前に呼出し先のCLR型に合わせて変換され,実際に呼出し先に渡されるのは,その結果を保持する一時領域の参照となります.この場合,呼出し先における値の変更の呼出し元への反映は,呼出し先からの復帰後にその一時領域からの書き戻しが行われることによって実現されます.つまり変更と反映の間にはタイムラグが存在します.呼出し元のパラメタがSTATICまたはOBJECTのデータの場合,このタイムラグが処理に大きな影響を与える可能性があるため,このようなワーニングメッセージを出力しています.