> Use POSIX Ada 1003.5.  It has everything you want, and should work across
> almost all OS systems, especially UNIX.  All vendors of Ada compilers support
> POSIX Ada to my best knowledge.
>
> Doing anything else is non-portable because OS interfaces are non-portable.

Even this may not be 100% portable.  For example, I had code in Apex that
I had to modify for GNAT, because GNAT (Florist) provided the routine
overloaded for String and Wide_String (Apex had only String) and the two
vendors had different parameter names.

I did not send either vendor a bug report because I cannot afford to buy
the official POSIX standard (so I can't tell whether one or both is
compliant).