COBOL2002 ユーザーズガイド
Excelのシートのセルに数値が設定されているときに,このセルから値を取得し,SET文を使ってCOBOLの数値項目で値を受け取る例を次に示します。このとき,VARIANT値からCOBOLのデータに暗黙的なデータ変換が行われます。
VARIANT値の概念については,マニュアル「COBOL2002 言語 拡張仕様編 18.1.1 言語の概念(OLE2オートメーションインタフェース機能)」を参照してください。
WORKING-STORAGE SECTION.
01 AP-OBJ USAGE OBJECT REFERENCE OLE.
01 CDATA-NUM PIC 9(9). …1.
PROCEDURE DIVISION.
INVOKE 'Excel.Application' 'CREATEOBJ'
RETURNING AP-OBJ.
:
SET CDATA-NUM TO
'Workbooks(1).Worksheets(1).Cells(1,1).Value'
WITH AP-OBJ. …2.VARIANT値をCOBOLデータに変換する必要がない場合は,値をバリアントデータ項目で受け取ることで,受け渡したVARIANT値のポインタを保持できます。
バリアント項目で取得した値を,別のセルにそのまま設定する例を次に示します。
WORKING-STORAGE SECTION.
01 AP-OBJ USAGE OBJECT REFERENCE OLE.
01 CDATA-VAR USAGE VARIANT VALUE ZERO. …1.
PROCEDURE DIVISION.
INVOKE 'Excel.Application' 'CREATEOBJ'
RETURNING AP-OBJ.
:
SET CDATA-VAR TO
'Workbooks(1).Worksheets(1).Cells(1,1).Value'
WITH AP-OBJ. …2.
SET 'Workbooks(1).Worksheets(1).Cells(1,2).Value'
WITH AP-OBJ TO CDATA-VAR. …3.不要となったVARIANT値は,バリアントデータ項目を初期化することで,解放できます。
不要となったVARIANT値を解放する例を次に示します。
WORKING-STORAGE SECTION.
01 AP-OBJ USAGE OBJECT REFERENCE OLE.
01 CDATA-VAR USAGE VARIANT VALUE ZERO. …1.
PROCEDURE DIVISION.
INVOKE 'Excel.Application' 'CREATEOBJ'
RETURNING AP-OBJ.
:
SET CDATA-VAR TO
'Workbooks(1).Worksheets(1).Cells(1,1).Value'
WITH AP-OBJ. …2.
SET 'Workbooks(1).Worksheets(1).Cells(1,2).Value'
WITH AP-OBJ TO CDATA-VAR. …3.
SET CDATA-VAR TO NULL. …4.取得したVARIANT値がどの型かがわからない場合は,いったんVARIANT値の型をチェックしたあとで,その型に合ったCOBOLのデータ項目に設定します。VARIANT値の型は,TYPE-OF-VARIANT関数で取得できます。TYPE-OF-VARIANT関数については,マニュアル「COBOL2002 言語 拡張仕様編 18.5.3 TYPE-OF-VARIANT関数(OLE2オートメーションインタフェース機能)」を参照ください。
VARIANT値の型をチェックしたあとで,該当するCOBOLのデータ項目に値を設定する例を次に示します。
WORKING-STORAGE SECTION.
01 AP-OBJ USAGE OBJECT REFERENCE OLE.
01 CDATA-VAR USAGE VARIANT VALUE ZERO. …1.
01 CDATA-COMP PIC S9(10) USAGE COMP.
01 CDATA-COMP2 USAGE COMP-2.
01 CDATA-ALP.
02 FILLER OCCURS 255 DEPENDING ON C-LNG PIC X.
01 C-LNG PIC 9(4) USAGE COMP VALUE ZERO.
PROCEDURE DIVISION.
INVOKE 'Excel.Application' 'CREATEOBJ'
RETURNING AP-OBJ.
:
SET CDATA-VAR TO
'Workbooks(1).Worksheets(1).Cells(1,1).Value'
WITH AP-OBJ. …2.
EVALUATE FUNCTION TYPE-OF-VARIANT(CDATA-VAR) …3.
WHEN 2
WHEN 3 …4.
COMPUTE CDATA-COMP =
FUNCTION VARIANT-TO-INTEGER(CDATA-VAR)
WHEN 4
WHEN 5 …4.
COMPUTE CDATA-COMP2 =
FUNCTION VARIANT-TO-NUMERIC(CDATA-VAR)
WHEN 6
WHEN 7
WHEN 8
WHEN 9
COMPUTE C-LNG =
FUNCTION LENGTH-OF-VARIANT(CDATA-VAR) …5.
MOVE
FUNCTION VARIANT-TO-ALPHANUMERIC(CDATA-VAR)
TO CDATA-ALP …4.
END-EVALUATE.SET文を使って,CONVERT-TO-VARIANT関数で作成したVARIANT
値のポインタを,バリアントデータ項目に保持したり,別のバリアントデータ項目に転記できます。
バリアントデータ項目に値を設定する例を次に示します。
WORKING-STORAGE SECTION.
01 CBL-DATA-DATE PIC X(8) VALUE '03/01/01'.
01 CDATA-VAR1 USAGE VARIANT VALUE ZERO. …1.
01 CDATA-VAR2 USAGE VARIANT VALUE ZERO. …1.'
PROCEDURE DIVISION.
INVOKE 'Excel.Application' 'CREATEOBJ'
RETURNING AP-OBJ.
:
SET CDATA-VAR1
TO FUNCTION
CONVERT-TO-VARIANT(7,CBL-DATA-DATE). …2.
SET CDATA-VAR2 TO CDATA-VAR1. …3.バリアントデータ項目にEXTERNAL句を指定する場合については,「4.2.2 外部属性(EXTERNAL句)」の「(2) EXTERNAL領域にVARIANTデータ項目を含む場合の注意事項」を参照してください。
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.