| Windows | COBOL | Data Size |
| char[n], str[n], tchar[n] | PIC X(n) | n bytes |
| long, int | PIC X(4) COMP-N
or PIC S9(9) COMP-5 |
4 bytes |
| dword, ulong, lpxxx, float | PIC X(4) COMP-N
or PIC 9(9) COMP-5 |
4 bytes |
| short | PIC X(2) COMP-N
or PIC S9(5) COMP-5 |
2 bytes |
| word, ushort | PIC X(2) COMP-N
or PIC 9(5) COMP-5 |
2 bytes |
We recommend using COMP-N for most cases, although COMP-N data types are HEX, unsigned, and thus difficult for negative numbers.
If you want to use COMP-5, be sure to use the "--TruncANSI" compiler option. This causes truncation in binary to the capacity of the allocated storage for COMP-5 items. (By default, ACUCOBOL-GT truncates in decimal to the number of digits given in the PICTURE clause on arithmetic and non-arithmetic stores into COMP-5 items.) Note that the "-Dz" option overrides "--TruncANSI".
C structure to include:
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;
Resulting ACUCOBOL-GT group item:
01 WIN32-FIND-DATA.
03 dwFileAttributes PIC X(4) COMP-N.
03 ftCreationTime.
05 dwLowCreateDT PIC X(4) COMP-N.
05 dwHighCreateDT PIC X(4) COMP-N.
03 ftLastAccessTime.
05 dwLowAccessDT PIC X(4) COMP-N.
05 dwHighAccessDT PIC X(4) COMP-N.
03 ftLastWriteTime.
05 dwLowWriteDT PIC X(4) COMP-N.
05 dwHighWriteDT PIC X(4) COMP-N.
03 nFileSizeHigh PIC X(4) COMP-N.
03 nFileSizeLow PIC X(4) COMP-N.
03 dwReserved0 PIC X(4) COMP-N.
03 dwReserved1 PIC X(4) COMP-N.
03 cFileName PIC X(260).
03 cAlternateFileName PIC X(14).