Saved options information layout

Figure 1 shows the layout of the saved options information.
Figure 1. Definition of saved options information layout
#define USHRT unsigned short
#define UINT  unsigned int

typedef struct SOS_s {
  UINT  sos_words          : 8,  /* 0xFF000000  sizeof(SOS)/4                     */
        sos_version        : 8,  /* 0x00FF0000  version number                    */
                                 /*             1 - as of XL C/C++ 1.10           */
                                 /*             2 - as of XL C/C++ 1.11           */
                                 /*             3 - as of XL C/C++ 1.13           */
                                 /*             4 - as of XL C/C++ 2.1            */
                                 /*             5 - as of XL C/C++ 2.1 PTF        */
                                 /*             6 - as of XL C/C++ 2.1.1          */
        sos_arch           : 8,  /* 0x0000FF00  ARCHITECTURE                      */
        sos_tune           : 8;  /* 0x000000FF  TUNE                              */

  /* offset:  4 */

  UINT  sos_csect          : 1,  /* 0x80000000  0 - NOCSECT                       */
                                 /*             1 - CSECT                         */
        sos_version_info   :15,  /* 0x7FFF0000  version list (PHASEIDs location - */
                                 /*             offset/4 from SOS start)          */
        sos_locale_ccsid   :16;  /* 0x0000FFFF  CCSID from the LOCALE             */

  /* offset:  8 */

  USHRT sos_lit_ccsid;           /* 0xFFFF0000  CONVLIT(xx)                       */
  USHRT sos_wlit_ccsid;          /* 0x0000FFFF  CONVLIT(,WCHAR|UNICODE)           */

  /* offset: 12 */

  UINT  sos_target_rel;          /* 0xFFFFFFFF  TARGET(release value in HEX)      */
                                 /*             As given by __TARGET_LIB__        */

  /* offset: 16 */

  UINT  sos_initauto_val;        /* 0xFFFFFFFF  INITAUTO value                    */
  /* offset: 20 */

  UINT  sos_enumsize       : 3,  /* 0xE0000000  0 - ENUMSIZE(SMALL)               */
                                 /*             1 - ENUMSIZE(INT)                 */
                                 /*             2 - ENUMSIZE(INTLONG)             */
                                 /*             3 - ENUMSIZE(1)                   */
                                 /*             4 - ENUMSIZE(2)                   */
                                 /*             5 - ENUMSIZE(4)                   */
                                 /*             6 - ENUMSIZE(8)                   */
        sos_round          : 3,  /* 0x1C000000  0 - ROUND(N)                      */
                                 /*             1 - ROUND(Z)                      */
                                 /*             2 - ROUND(P)                      */
                                 /*             3 - ROUND(M)                      */
        sos_round_dfp      : 4,  /* 0x03C00000  0 - NODFP                         */
                                 /*             1 - ROUND(DN)                     */
                                 /*             2 - ROUND(DM)                     */
                                 /*             3 - ROUND(DP)                     */
                                 /*             4 - ROUND(DZ)                     */
                                 /*             5 - ROUND(DNA)                    */
                                 /*             6 - ROUND(DI)                     */
                                 /*             7 - ROUND(DNZ)                    */
        sos_flt_hex        : 1,  /* 0x00200000  0 - FLOAT(HEX)                    */
                                 /*             1 - FLOAT(IEEE)                   */
        sos_flt_afp        : 2,  /* 0x00180000  0 - FLOAT(NOAFP)                  */
                                 /*             1 - FLOAT(AFP(NOVOLATILE))        */
                                 /*             2 - FLOAT(AFP(VOLATILE))          */
        sos_flt_fold       : 1,  /* 0x00040000  FLOAT(FOLD)                       */
        sos_flt_maf        : 1,  /* 0x00020000  FLOAT(MAF)                        */
        sos_flt_rrm        : 1,  /* 0x00010000  FLOAT(RRM)                        */
        sos_aggrcopy       : 1,  /* 0x00008000  0 - AGGRCOPY(NOOVERLAP)           */
                                 /*             1 - AGGRCOPY(OVERLAP)             */
        sos_bitfield       : 1,  /* 0x00004000  0 - BITFIELD(UNSIGNED)            */
                                 /*             1 - BITFIELD(SIGNED)              */
        sos_chars          : 1,  /* 0x00002000  0 - CHARS(UNSIGNED)               */
                                 /*             1 - CHARS(SIGNED)                 */
        sos_hgpr           : 2,  /* 0x00001800  0 - NOHGPR                        */
                                 /*             1 - HGPR(PRESERVE)                */
                                 /*             2 - HGPR(NOPRESERVE)              */
        sos_initauto       : 2,  /* 0x00000600  0 - NOINITAUTO                    */
                                 /*             1 - INITAUTO (xx)                 */
                                 /*             2 - INITAUTO (xx, WORD)           */
        sos_inline         : 2,  /* 0x00000180  0 - NOINLINE                      */
                                 /*             1 - INLINE(AUTO)                  */
                                 /*             2 - INLINE(NOAUTO)                */
        sos_ipa            : 2,  /* 0x00000060  0 - NOIPA                         */
                                 /*             1 - IPA(OBJECT)                   */
                                 /*             2 - IPA(NOOBJECT)                 */
                                 /*             3 - IPA(OBJONLY)                  */
        sos_unroll         : 2,  /* 0x00000018  0 - UNROLL(AUTO)                  */
                                 /*             1 - UNROLL(NO)                    */
                                 /*             2 - UNROLL(YES)                   */
        sos_dll            : 2,  /* 0x00000006  0 - NODLL                         */
                                 /*             1 - DLL(NOCALLBACKANY)            */
                                 /*             2 - DLL(CALLBACKANY)              */
        sos_exportall      : 1;  /* 0x00000001  EXPORTALL                         */
  /* offset: 24 */

  UINT  sos_ansialias      : 1,  /* 0x80000000  ANSIALIAS                         */
        sos_argparse       : 1,  /* 0x40000000  ARGPARSE                          */
        sos_compress       : 1,  /* 0x20000000  COMPRESS                          */
        sos_compact        : 1,  /* 0x10000000  COMPACT                           */
        sos_execops        : 1,  /* 0x08000000  EXECOPS                           */
        sos_goff           : 1,  /* 0x04000000  GOFF                              */
        sos_hot            : 1,  /* 0x02000000  HOT                               */
        sos_ignerrno       : 1,  /* 0x01000000  IGNERRNO                          */
        sos_libansi        : 1,  /* 0x00800000  LIBANSI                           */
        sos_upconv         : 1,  /* 0x00400000  UPCONV                            */
        sos_longname       : 1,  /* 0x00200000  LONGNAME                          */
        sos_lp64           : 1,  /* 0x00100000  LP64                              */
        sos_rent           : 1,  /* 0x00080000  0 - NORENT                        */
                                 /*             1 - RENT                          */
        sos_wsizeof        : 1,  /* 0x00040000  WSIZEOF                           */
        sos_roconst        : 1,  /* 0x00020000  ROCONST                           */
        sos_rostring       : 1,  /* 0x00010000  ROSTRING                          */
        sos_start          : 1,  /* 0x00008000  START                             */
        sos_strict         : 1,  /* 0x00004000  STRICT                            */
        sos_strictind      : 1,  /* 0x00002000  STRICT_INDUCTION                  */
        sos_xpl_bkchn      : 1,  /* 0x00001000  XPLINK(BACKCHAIN)                 */
        sos_xpl_callbk     : 1,  /* 0x00000800  XPLINK(CALLBACK)                  */
        sos_xpl_grd        : 1,  /* 0x00000400  XPLINK(GUARD)                     */
        sos_xpl_oscall     : 2,  /* 0x00000300  0 - XPLINK(OSCALL(NOSTACK))       */
                                 /*             1 - XPLINK(OSCALL(DOWNSTACK))     */
                                 /*             2 - XPLINK(OSCALL(UPSTACK))       */
        sos_hook_line      : 1,  /* 0x00000080  DEBUG(HOOK(LINE))                 */
        sos_hook_block     : 1,  /* 0x00000040  DEBUG(HOOK(BLOCK))                */
        sos_hook_path      : 1,  /* 0x00000020  DEBUG(HOOK(PATH))                 */
        sos_hook_func      : 1,  /* 0x00000010  DEBUG(HOOK(FUNC))                 */
        sos_hook_call      : 1,  /* 0x00000008  DEBUG(HOOK(CALL))                 */
        sos_debug_sym      : 1,  /* 0x00000004  DEBUG(SYMBOL)                     */
        sos_debug_fmt      : 2;  /* 0x00000003  0 - NODEBUG                       */
                                 /*             1 - DEBUG(FORMAT(ISD))            */
                                 /*             2 - DEBUG(FORMAT(DWARF))          */
  /* offset: 28 */

  UINT  sos_gonumber       : 1,  /* 0x80000000  GONUMBER                          */
        sos_target         : 2,  /* 0x60000000  0 - TARGET(LE)                    */
                                 /*             1 - TARGET(IMS)                   */
        sos_plist          : 1,  /* 0x10000000  0 - PLIST(HOST)                   */
                                 /*             1 - PLIST(OS)                     */
        sos_optlevel       : 4,  /* 0x0F000000  OPTIMIZE                          */
        sos_redir          : 1,  /* 0x00800000  REDIR                             */
        sos_cvft           : 1,  /* 0x00400000  CVFT                              */
        sos_objmodel       : 2,  /* 0x00300000  0 - OBJECTMODEL(CLASSIC)          */
                                 /*             1 - OBJECTMODEL(IBM)              */
        sos_exh            : 1,  /* 0x00080000  EXH                               */
        sos_rtti           : 1,  /* 0x00040000  RTTI                              */
        sos_namemangling   : 6,  /* 0x0003F000  0 - NAMEMANGLING(zOSV1R2) and     */
                                 /*                 NAMEMANGLING(ZOSV1R5_DEFAULT) */
                                 /*             1 - NAMEMANGLING(ANSI)            */
                                 /*             2 - NAMEMANGLING(COMPAT)  and     */
                                 /*                 NAMEMANGLING(OSV2R10)         */
                                 /*             3 - NAMEMANGLING(ZOSV1R5_ANSI)    */
                                 /*             4 - NAMEMANGLING(ZOSV1R7_ANSI)    */
                                 /*             5 - NAMEMANGLING(ZOSV1R8_ANSI)    */
                                 /*             6 - NAMEMANGLING(ZOSV1R9_ANSI)    */
                                 /*             7 - NAMEMANGLING(ZOSV1R10_ANSI)   */
                                 /*             8 - NAMEMANGLING(ZOSV1R11_ANSI)   */
                                 /*             9 - NAMEMANGLING(ZOSV1R12_ANSI)   */
                                 /*            10 - NAMEMANGLING(ZOSV2R1_ANSI)    */
                                 /*            11 - NAMEMANGLING(ZOSV2R1M1_ANSI)  */
        sos_ansisinit      : 1,  /* 0x00000800  LANGLVL(ANSISINIT)                */
        sos_newexcp        : 1,  /* 0x00000400  LANGLVL(NEWEXCP)                  */
        sos_oldmath        : 1,  /* 0x00000200  LANGLVL(OLDMATH)                  */
        sos_oldstr         : 1,  /* 0x00000100  LANGLVL(OLDSTR)                   */
        sos_oldtmplalign   : 1,  /* 0x00000080  LANGLVL(OLDTMPLALIGN)             */
        sos_restrict       : 1,  /* 0x00000040  ASSERT(RESTRICT)                  */
        sos_prefetch       : 1,  /* 0x00000020  PREFETCH                          */
                                 /* Applicable to zOSV1R11 and later              */
        sos_rtc            : 1,  /* 0x00000010  RTCHECK                           */
                                 /* Applicable to zOSV1R11 and later              */
        sos_rtc_bounds     : 1,  /* 0x00000008  RTCHECK(BOUNDS)                   */
                                 /* Applicable to zOSV1R11 and later              */
        sos_rtc_divzero    : 1,  /* 0x00000004  RTCHECK(DIVZERO)                  */
                                 /* Applicable to zOSV1R11 and later              */
        sos_rtc_nullptr    : 1,  /* 0x00000002  RTCHECK(NULLPTR)                  */
                                 /* Applicable to zOSV1R11 and later              */
        sos_restrict_param : 1;  /* 0x00000001  RESTRICT                          */
                                 /* Applicable to zOSV1R12 and later              */
  /* offset: 32 */

  UNIT  sos_rvaluerefs     : 1,  /* 0x80000000  LANGLVL(RVALUEREFERENCES)         */
                                 /* Applicable to zOSV2R1 and later               */
        sos_refcollapsing  : 1,  /* 0x40000000  LANGLVL(REFERENCECOLLAPSING)      */
                                 /* Applicable to zOSV2R1 and later               */
        sos_rightanglebkt  : 1,  /* 0x20000000  LANGLVL(RIGHTANGLEBRACKET)        */
                                 /* Applicable to zOSV2R1 and later               */
        sos_scopedenum     : 1,  /* 0x10000000  LANGLVL(SCOPEDENUM)               */
                                 /* Applicable to zOSV2R1 and later               */
        sos_debug_level    : 4,  /* 0x0F000000  DEBUG(LEVEL(0-9))                 */
                                 /* Applicable to zOSV2R1 and later               */
        sos_subscript_wrap : 1,  /* 0x00800000  STRICT(SUBSTRICTWRAP)             */
                                 /* Applicable to zOSV2R1 and later               */
        sos_tempsaslocals  : 1,  /* 0x00400000  LANGLVL(TEMPSASLOCALS)            */
                                 /* Applicable to zOSV1R13 and later              */
        sos_smp            : 1,  /* 0x00200000  SMP                               */
                                 /* Applicable to zOSV2R1 and later               */
        sos_smp_opt        : 1,  /* 0x00100000  SMP(OPT)                          */
                                 /* Applicable to zOSV2R1 and later               */
        sos_smp_explicit   : 1,  /* 0x00080000  SMP(EXPLICIT)                     */
                                 /* Applicable to zOSV2R1 and later               */
        sos_threaded       : 1,  /* 0X00040000  THREADED                          */
                                 /* Applicable to zOSV2R1 and later               */
        sos_funcevent      : 1,  /* 0x00020000  FUNCEVENT                         */
                                 /* Applicable to zOSV2R1M1 and later             */
        sos_vector         : 1,  /* 0x00010000  VECTOR                            */
                                 /* Applicable to zOSV2R1M1 and later             */
        sos_asm            : 1,  /* 0x00008000  ASM                               */
                                 /* Applicable to zOSV2R1M1 and later             */
        sos_unrolln        : 8,  /* 0x00007F80  UNROLL(N) where 0 <= N <= 255     */
                                 /* Applicable to zOSV2R1M1 and later             */
        sos_padding        : 7;

} SOS_t;