Passing strings between C and PL/I
C and PL/I have different string data types:
- C strings
- Logically unbounded length and are terminated by a NULL (the last byte of the string contains X'00').
- PL/I CHAR(n) VARYING
- A halfword-prefixed string of characters with a maximum length n characters. The current length is held in the halfword prefix.
- PL/I CHAR(n) VARYINGZ
- A null-terminated string of characters with a maximum length of n characters.
- PL/I CHAR(n)
- A fixed-length string of characters of length n. There is no halfword prefix indicating the length.
You can pass strings between C and PL/I routines, but you must match what the routine interface demands with what is physically passed.