OK - Let's walk through it step-by-step:
Argument 1: long buffer
If this argument contains the address of a block of memory, then in 64-bit it needs to hold a 64-bit value. If the PB app is supplying the block of memory, such as a string that has been initialized to 10,000 (Unicode) spaces, for example, then preface the argument name in the external function declaration with the "REF" (pass by reference) keyword - and PB will pass the address of the PB variable: REF String buffer. If Tuxedo is expecting ANSI (single byte/character) data instead of UnicodeLE16 (two bytes/character), then the external function declaration will also have to include the optional phrase: ALIAS FOR "Fchgstr32;ansi".
Now, if Tuxedo has allocated the block of memory and has provided its address in another, different DLL function, then argument 1 should be declared as a PB Longptr. I cannot make that determination based on the limited information you have supplied.
Argument 2: DWORD fldid
As Roland explained, the PB equivalent to the typdef'd DWORD data type is ULong (UnsignedLong). Since this parameter does NOT appear to contain a memory address, it should keep the same data type: ULong fldid.
Argument 3: long occ
A data type of long is identical to the PB Long data type: Long occ.
Argument 4: char *fldvar
A null-delimited array of (single-byte, or ANSI) characters... in other words, a PB String. If the DLL function is going to change the contents of this string and PB needs to be able to see the changed value, then the string needs to be passed by reference (include the REF keyword, as in REF String fldvar). If PB does NOT need to be able to see any change to the string value, omit the REF keyword: String fldvar.
Argument 5: DWORD fldlen
Same explanation as argument 2: ULong fldlen
Return value: long
Same explanation as argument 3: Long
----------------------
No guarantees, since there are some aspects of arguments 1 and 4 that are not clear, but I suggest you try the following:
FUNCTION Long Fchgstr32 ( &
REF String buffer, &
ULong fldid, &
Long occ, &
String fldvar, &
ULong fldlen &
) LIBRARY "pbtux32.dll" ALIAS FOR "Fchgstr32;ansi"
// or...
FUNCTION Long Fchgstr32 ( &
Longptr buffer, &
ULong fldid, &
Long occ, &
String fldvar, &
ULong fldlen &
) LIBRARY "pbtux32.dll" ALIAS FOR "Fchgstr32;ansi"
Best regards, John
https://docs.oracle.com/en/database/oracle/tuxedo/22/otxpd/oracle-tuxedo-certified-platform-tables.html#GUID-BF26677B-E1FB-4E9D-AFDA-3B204F5DE4D2