IDENTIFICATION DIVISION. PROGRAM-ID. TESTVFX. ** testvfx is a test harness to vet the following CBL_ routines: ** CBL_OPEN_VFILE ** CBL_READ_VFILE ** CBL_WRITE_VFILE ** CBL_CLOSE_VFILE 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-HID2 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 '***************************' DISPLAY '********* OPENING *********' DISPLAY '***************************' CALL CBL_OPEN_VFILE USING T-HID T-HSTAT. DISPLAY ' ' DISPLAY '***************************' DISPLAY '********* WRITING *********' DISPLAY '***************************' MOVE 1 TO T-HOF MOVE 80 TO T-HLEN MOVE 'ABCD' TO T-BUFFER MOVE 'ONE' TO T-BUFFER (76:3) DISPLAY 'T-BUFFER =:' T-BUFFER (1:T-HLEN) CALL CBL_WRITE_VFILE USING BY VALUE T-HID T-HOF T-HLEN BY REFERENCE T-BUFFER. ADD 80 TO T-HOF MOVE '1234' TO T-BUFFER MOVE 'TWO' TO T-BUFFER (76:3) DISPLAY 'T-BUFFER =:' T-BUFFER (1:T-HLEN) CALL CBL_WRITE_VFILE USING BY VALUE T-HID T-HOF T-HLEN BY REFERENCE T-BUFFER. DISPLAY ' ' DISPLAY '***************************' DISPLAY '********* READING *********' DISPLAY '***************************' MOVE 1 TO T-HOF CALL 'CBL_READ_VFILE' USING BY VALUE T-HID T-HOF T-HLEN BY REFERENCE T-BUFFER DISPLAY 'T-BUFFER =:' T-BUFFER (1:T-HLEN) MOVE 81 TO T-HOF CALL 'CBL_READ_VFILE' USING BY VALUE T-HID T-HOF T-HLEN BY REFERENCE T-BUFFER DISPLAY 'T-BUFFER =:' T-BUFFER (1:T-HLEN) DISPLAY ' ' DISPLAY '***************************' DISPLAY '********* CLOSING *********' DISPLAY '***************************' CALL CBL_CLOSE_VFILE USING T-HID DISPLAY 'RETURN FROM CLOSE FILE' DISPLAY '***************************' DISPLAY '********* OPENING *********' DISPLAY '***************************' CALL CBL_OPEN_VFILE USING T-HID2 T-HSTAT. DISPLAY ' ' DISPLAY '***************************' DISPLAY '********* WRITING *********' DISPLAY '***************************' MOVE 1 TO T-HOF MOVE 80 TO T-HLEN MOVE 'DEFG' TO T-BUFFER DISPLAY 'T-BUFFER =:' T-BUFFER (1:4) CALL CBL_WRITE_VFILE USING BY VALUE T-HID2 T-HOF T-HLEN BY REFERENCE T-BUFFER. ADD 80 TO T-HOF MOVE '5678' TO T-BUFFER DISPLAY 'T-BUFFER =:' T-BUFFER (1:4) CALL CBL_WRITE_VFILE USING BY VALUE T-HID2 T-HOF T-HLEN BY REFERENCE T-BUFFER. DISPLAY ' ' DISPLAY '***************************' DISPLAY '********* READING *********' DISPLAY '***************************' MOVE 1 TO T-HOF CALL 'CBL_READ_VFILE' USING BY VALUE T-HID T-HOF T-HLEN BY REFERENCE T-BUFFER DISPLAY 'T-BUFFER =:' T-BUFFER (1:T-HLEN) MOVE 81 TO T-HOF CALL 'CBL_READ_VFILE' USING BY VALUE T-HID T-HOF T-HLEN BY REFERENCE T-BUFFER DISPLAY 'T-BUFFER =:' T-BUFFER (1:T-HLEN) DISPLAY ' ' DISPLAY '***************************' DISPLAY '********* CLOSING *********' DISPLAY '***************************' CALL CBL_CLOSE_VFILE USING T-HID2 DISPLAY 'RETURN FROM CLOSE FILE' STOP RUN.