If all you are looking for is a routine to allow you to copy and paste to the clipboard from cobol, the following routine I developed should be helpful.
This solution requires the following libraries to be included from Microsoft Platform SDK. If you have any of Microsoft Visual programming tools, you may already have these libraries.
WINSPOOL.LIB
GDI32.LIB
USER32.LIB
ADBAPI32.LIB
F3BICBLR.LIB <- From Fujitsu
Here is the code:
@OPTIONS ALPHAL(WORD)
IDENTIFICATION DIVISION.
PROGRAM-ID. BWCLIPBD.
ENVIRONMENT DIVISION.
DATA DIVISION.
BASED-STORAGE SECTION.
01 GLOBALDATA PIC X BASED ON GLOBALPTR.
01 GLOBALINPUT PIC X(8000) BASED ON INPUT-PTR.
WORKING-STORAGE SECTION.
78 GMEM-GLOBAL value 8194.
01 long typedef pic s9(9) comp-5.
01 ENV-NAME PIC X(40).
01 GLOBALPTR POINTER.
01 INPUT-PTR POINTER.
01 GLOBAL-MEM type long.
01 GLOBAL-HANDLE type long.
01 GLOBAL-LEN type long.
01 MEM-FLAGS type long VALUE GMEM-GLOBAL.
LINKAGE SECTION.
01 IO-FUNCTION PIC X.
01 IO-AREA PIC X.
01 IO-LENGTH PIC S9(9) COMP-5.
PROCEDURE DIVISION USING IO-FUNCTION
IO-AREA
IO-LENGTH.
BEGIN SECTION.
IF IO-FUNCTION NOT = 'I' AND NOT = 'R'
MOVE 'X' TO IO-FUNCTION
GOBACK.
IF IO-FUNCTION = 'R'
PERFORM RETRIEVE-TEXT
ELSE
PERFORM INSERT-TEXT
END-IF.
GOBACK.
INSERT-TEXT SECTION.
COMPUTE GLOBAL-LEN = IO-LENGTH + 1.
INITIALIZE GLOBAL-MEM.
CALL "OpenClipboard" WITH STDCALL LINKAGE
USING BY VALUE 0.
IF RETURN-CODE NOT = ZERO
CALL "EmptyClipboard" WITH STDCALL LINKAGE
CALL "GlobalAlloc" WITH STDCALL LINKAGE
USING BY VALUE MEM-FLAGS, GLOBAL-LEN
RETURNING GLOBAL-MEM
IF GLOBAL-MEM = ZERO
MOVE '1' TO IO-FUNCTION
CALL "CloseClipboard" WITH STDCALL LINKAGE
GOBACK
END-IF
CALL "GlobalLock" WITH STDCALL LINKAGE
USING BY VALUE GLOBAL-MEM
RETURNING GLOBALPTR
MOVE IO-AREA (1:IO-LENGTH) TO GLOBALDATA (1:IO-LENGTH)
MOVE X'00' TO GLOBALDATA (GLOBAL-LEN:1)
CALL "GlobalUnlock" WITH STDCALL LINKAGE
USING BY VALUE GLOBAL-MEM
CALL "SetClipboardData" WITH STDCALL LINKAGE
USING BY VALUE 1 GLOBAL-MEM
CALL "CloseClipboard" WITH STDCALL LINKAGE
END-IF.
MOVE SPACES TO IO-FUNCTION.
INSERT-TEXT-EXIT.
EXIT.
RETRIEVE-TEXT SECTION.
CALL "OpenClipboard" WITH STDCALL LINKAGE
USING BY VALUE 0.
IF RETURN-CODE NOT = ZERO
CALL "GetClipboardData" WITH STDCALL LINKAGE
USING BY VALUE 1
RETURNING GLOBAL-HANDLE
CALL "GlobalLock" WITH STDCALL LINKAGE
USING BY VALUE GLOBAL-HANDLE
RETURNING INPUT-PTR
UNSTRING GLOBALINPUT
DELIMITED BY X'00'
INTO IO-AREA (1:IO-LENGTH)
CALL "GlobalUnlock" WITH STDCALL LINKAGE
USING BY VALUE GLOBAL-HANDLE
CALL "CloseClipboard" WITH STDCALL LINKAGE
ELSE
MOVE SPACES TO IO-AREA (1:IO-LENGTH)
END-IF.
RETRIEVE-TEXT-EXIT.
EXIT.