IDENTIFICATION DIVISION. PROGRAM-ID. TESTVFX. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-PC. OBJECT-COMPUTER. IBM-PC. SPECIAL-NAMES. ** CALL-CONVENTION 66 IS WINDLL ** CALL-CONVENTION 66 IS WINAPI. CALL-CONVENTION 74 IS WINAPI. ** CALL-CONVENTION 0 WINAPI. INPUT-OUTPUT SECTION. FILE-CONTROL. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 77 GMEM-FIXED-HEX-ZEROED PIC 9(04) COMP-5 VALUE 8194. 77 CF-TEXT PIC X(02) VALUE X'0100'. 77 CF-TEXT2 PIC X(02) VALUE X'0100'. 77 CF-TEXT3 PIC 9(04) COMP-5 VALUE 1. 77 CF-TEXT4 PIC X(02) VALUE X'0100'. 77 ERROR-PAUSE PIC X(01). 77 DWORD PIC 9(15) COMP-5. 77 UNPACK PIC 9(08). 77 I PIC 9(04) COMP-5 VALUE 0. 77 J PIC 9(04) COMP-5 VALUE 0. 77 K PIC 9(04) COMP-5 VALUE 0. 77 L PIC 9(04) COMP-5 VALUE 0. 77 M PIC 9(04) COMP-5 VALUE 0. 77 Z91 PIC 9(04) COMP-5. 77 Z92 PIC 9(04) COMP-5. 77 Z93 PIC 9(08) COMP-5. 77 Z94 PIC 9(08) COMP-5. 77 RET-CODE PIC 9(08) COMP-5 VALUE 0. 01 PROGRAM-FIELDS. 05 T-HID PIC 9(04) COMP-5. 05 T-HSTAT PIC X(02). 05 T-HOF PIC 9(09) COMP-5. 05 T-HLEN PIC 9(09) COMP-5. 05 T-BUFFER PIC X(80). 05 GLOBALALLOC PIC X(24) VALUE 'GlobalAlloc'. 05 GLOBALUNLOCK PIC X(24) VALUE 'GlobalUnlock'. 05 GLOBALLOCK PIC X(24) VALUE 'GlobalLock'. 05 GLOBALSIZE PIC X(24) VALUE 'GlobalSize'. 05 VFILE PIC X(24) VALUE 'VFILE1'. 05 CBL_OPEN_VFILE PIC X(24) VALUE 'CBL_OPEN_VFILE'. 05 CBL_READ_VFILE PIC X(24) VALUE 'CBL_READ_VFILE'. 05 CBL_WRITE_VFILE PIC X(24) VALUE 'CBL_WRITE_VFILE'. 05 CBL_CLOSE_VFILE PIC X(24) VALUE 'CBL_CLOSE_VFILE'. 05 SETCLIPBOARDDATA PIC X(24) VALUE 'SetClipboardData'. 05 GETCLIPBOARDDATA PIC X(24) VALUE 'GetClipboardData'. 05 OPENCLIPBOARD PIC X(24) VALUE 'OpenClipboard'. 05 CLOSECLIPBOARD PIC X(24) VALUE 'CloseClipboard'. 05 EMPTYCLIPBOARD PIC X(24) VALUE 'EmptyClipboard'. 05 LOADLIBRARYA PIC X(24) VALUE 'LoadLibraryA'. 05 GETDLL PIC X(24) VALUE 'GetProcAddress '. 05 DLL-BUFFER-LEN PIC 9(08) COMP-5 VALUE 200. 05 DLL-HANDLE PIC 9(08) COMP-5. 05 DLL-LIBRARY PIC X(24) VALUE SPACES. 05 DLL-ZERO PIC 9(08) COMP-5 VALUE ZERO. 05 DLL-PTR PROCEDURE-POINTER. 05 DLL-PTR-X REDEFINES DLL-PTR PIC X(04). 05 LINK-DLL-PTR PROCEDURE-POINTER. 05 LINK-DLL-PTR-X REDEFINES LINK-DLL-PTR PIC X(04). 05 LINK-DLL-PTR-9 REDEFINES LINK-DLL-PTR PIC 9(08) COMP-5. 05 DLL-NAME. 10 DNAME OCCURS 20 TIMES PIC X(01). 05 FILLER PIC X(01) VALUE X'00'. 05 SIMPLEDLL PIC X(24). 05 NOCMD PIC 9(05) COMP-5 VALUE 0. 05 NOARG POINTER. 05 NOARG-9 REDEFINES NOARG PIC 9(08) COMP-5. 05 DEREF POINTER. 05 DEREF-X REDEFINES DEREF PIC X(04). 05 DEREF-9 REDEFINES DEREF PIC 9(08) COMP-5. LINKAGE SECTION. PROCEDURE DIVISION. CALL VFILE. DISPLAY 'RETURN FROM VFILE' CALL CBL_OPEN_VFILE USING T-HID T-HSTAT. ** DISPLAY 'RETURN FROM OPEN VFILE' MOVE 1 TO T-HOF MOVE 80 TO T-HLEN MOVE 'ABCD' TO T-BUFFER CALL CBL_WRITE_VFILE USING ** BY VALUE T-HID BY REFERENCE T-HID T-HOF T-HLEN BY REFERENCE T-BUFFER. ** DISPLAY 'RETURN FROM WRITE 1 VFILE' ADD 80 TO T-HOF MOVE '1234' TO T-BUFFER CALL CBL_WRITE_VFILE USING ** BY VALUE T-HID BY REFERENCE T-HID T-HOF T-HLEN BY REFERENCE T-BUFFER. DISPLAY 'RETURN FROM WRITE 2 VFILE' STOP RUN.