ほとんどのメインフレーム DB2 アプリケーションが DB2 DATE、TIME、および TIMESTAMP PIC X 文字ホスト変数のデフォルト形式を使用しますが、一部は使用しません。メインフレーム DB2 アプリケーションは、デフォルトに加えて代替形式もサポートします。同様に、ほとんどの SQL Server アプリケーションは、PIC X 文字ホスト変数のデフォルトの date、time、および datetime2 形式を使用します。残念ながら、デフォルトの DB2 のデータ型形式は、デフォルトの SQL Server のデータ型形式と一致しません。メインフレーム DB2 DATE、TIME、および TIMESTAMP の形式が正しく変換され、SQL Server のアプリケーションによって認識されることを確認するには、HCOSS を使用して変換をカスタマイズします。
たとえば、文字ホスト変数のデフォルトのデータ型形式は、次のとおりです。
メインフレーム データ型 | メインフレーム DB2 形式 | SQL Server データ型 | SQL Server 形式 |
---|---|---|---|
DATE | yyyy-mm-dd | date | yyyy-mm-dd |
TIME | hh.mm.ss | time | hh:mm:ss |
TIMESTAMP | yyyy-mm-dd-hh.mm.ss.ffffff | datetime2 | yyyy-mm-dd hh:mm:ss.ffffffff |
メインフレーム DB2 用の DATE データ型の文字ホスト変数のデフォルト形式と SQL Server 用の date データ型は一致します。したがって、SQL Server は DB2 のフォーマットを認識するので、変換は必要ありません。ただし、TIME/time および TIMESTAMP/datetime2 のデフォルトのデータ型形式は一致しません。そのため、アプリケーションが文字ホスト変数にデフォルトの DB2 TIME 形式または TIMESTAMP 形式 (あるいはその両方) を使用し、それらを SQL Server のそれぞれ time および datetime2 データ型に使用する場合は、それらが認識されるように HCOSS を使用してメインフレーム DB2 の形式に変換します。
変換されている DB2 アプリケーションがデフォルトでは SQL Server でサポートされていない入力ホスト変数形式を使用する場合、DETECTDATE HCOSS コンパイラ指令オプションを使用して、DB2 形式を SQL Server 互換形式に変換します。DETECTDATE は、HCOSS に SQL Server の文字入力ホスト変数の内容を調べるように指示し、DATE、TIME、および TIMESTAMP データ用に指定されたメインフレーム形式に一致するデータを探します。
日付と時間の変換に対処するために DETECTDATE 指令のみを使用して処理された DATE および TIME データ型に関しては、HCOSS は SQL Server 文字入力ホスト変数の内容を調査し、デフォルトの DATE および TIME DB2 メインフレーム形式 (それぞれ yyyy-mm-dd と hh.mm.ss) に基づいて一致するフィールドを識別します。
DETECTDATE に加えて、DATE または TIME HCOSS 指令 (あるいはその両方) を指定する場合、HCOSS は SQL Server 文字入力ホスト変数の内容を調査し、DATE および TIME 指令によって指定された日付の時間の形式に一致するフィールドを識別します。
シナリオ | DETECTDATE オプション |
---|---|
DB2 プリケーションが PIC X 入力ホスト変数で DATE、TIME、および TIMESTAMP の値を使用しますが、それらの値は SQL Server 内の date、time、または datetime2 列でのみ使用します。 | CLIENT |
DB2 アプリケーションが PIC X 入力ホスト変数で DATE、TIME、および TIMESTAMP の値を使用しますが、それらの値は SQL Server 内の character 列でのみ使用します。また、SQL は、date、time、または datetime2 データ型に対して、暗黙的な文字または明示的な文字のいずれも使用しません。 | 必要なし。DETECTDATE、DATE、または TIME HCOSS SQL コンパイラ指令オプションを使用しません。 |
SQL Server で使用するのは、date、time、および datetime2 列での SQLTYPE ホスト変数のみで、PIC X ホスト変数を date、time、または datetime2 列で使用することはありません。 | 必要なし。1 |
DB2 アプリケーションが PIC X 入力ホスト変数で DATE、TIME、および TIMESTAMP の値を使用します。さらに、SQL Server の character 列と date、time、および datetime2 列の両方でそれらの値を使用し、character 列は、DATE、TIME、または TIMESTAMP 値と混同される可能性のある形式のデータを使用する場合があります。 | SERVER |
アプリケーションがデフォルトの SQL Server 形式と一致する DB2 メインフレームの DATE または TIME 形式 (あるいはその両方) を使用します。さらに、SQL Server の character 列または date 列 (あるいはその両方) でそれらの値を使用します。 | 必要なし。DETECTDATE、DATE、または TIME HCOSS SQL コンパイラ指令オプションを使用しません。 |
1オプションで、代替の日付時刻の HCOSS SQL コンパイラ指令オプションを使用できます。 |