Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, Programming Guide

Saved options string

The compiler also stores in the load module a 32-byte "string" that records the compiler options used in building the load module.

A PL/I declare for the saved options string is given in Figure 101. For most of the fields in the structure, the meaning of the field is obvious given its name, but a few of the fields need some explanation:

Figure 101. Declare for the saved options string
   dcl
    1 sos  based
      ,2 sos_words               fixed bin(8) unsigned
      ,2 sos_version             fixed bin(8) unsigned
      ,2 sos_arch                fixed bin(8) unsigned
      ,2 sos_tune                fixed bin(8) unsigned
      ,2 sos_currency            char(1)
      ,2 sos_optlevel            bit(4)  /* set with version >= 2 */
      ,2 sos_scheduler           bit(1)  /* set with version >= 5 */
      ,2 sos_nowritable_prv      bit(1)  /* set with version >= 4 */
      ,2 sos_noblockedio         bit(1)  /* set with version >= 3 */
      ,2 sos_optimize            bit(1)
      ,2 sos_window              fixed bin(15)
      ,2 sos_codepage            fixed bin(31)
      ,2 sos_limits_intname      fixed bin(8) unsigned
      ,2 sos_limits_extname      fixed bin(8) unsigned
      ,2 sos_limits_fixbinp1     fixed bin(8) unsigned
      ,2 sos_limits_fixbinp2     fixed bin(8) unsigned
      ,2 sos_limits_fixdecp1     fixed bin(8) unsigned
      ,2 sos_limits_fixdecp2             /* set with version >= 4 */
                                 fixed bin(8) unsigned
      ,2 sos_flags1
        ,3 sos_check_stg      bit(1)
        ,3 sos_compact        bit(1)
        ,3 sos_csect          bit(1)
        ,3 sos_dbcs           bit(1)
        ,3 sos_display_wto    bit(1)
        ,3 sos_extrn_full     bit(1)
        ,3 sos_graphic        bit(1)
        ,3 sos_check_conform  bit(1)  /* set with version >= 6 */
      ,2 sos_flags2
        ,3 sos_interrupt      bit(1)
        ,3 sos_reduce         bit(1)
        ,3 sos_norent         bit(1)
        ,3 sos_respect_date   bit(1)
        ,3 sos_rules_ans      bit(1)
        ,3 sos_stdsys         bit(1)
        ,3 sos_nowritable     bit(1)
        ,3 sos_wchar_big      bit(1)
      ,2 sos_flags3
        ,3 sos_cmpat          bit(4)
        ,3 sos_system         bit(4)
      ,2 sos_flags4
        ,3 sos_dllinit        bit(1)
        ,3 sos_xinfo_def      bit(1)
        ,3 sos_xinfo_xml      bit(1)
        ,3 sos_static_full    bit(1)
        ,3 sos_backreg_5      bit(1)
        ,3 sos_noresexp       bit(1)  /* set with version >= 2 */
        ,3 sos_bifprec        bit(2)  /* set with version >= 2 */
                                      /* 01 => bifprec(15)     */
                                      /* 10 => bifprec(31)     */
      ,2 sos_test
        ,3 sos_test_hooks     bit(4)
        ,3 sos_test_sym       bit(1)
        ,3 sos_test_nohook    bit(1)  /* set with version >= 5 */
        ,3 sos_test_separate  bit(1)  /* set with version >= 7 */
        ,3 sos_Static_Length  bit(1)  /* set with version >= 2 */
      ,2 sos_float
        ,3 sos_afp            bit(1)
        ,3 sos_dft_nobin1arg  bit(1)  /* set with version >>= 7 */
        ,3 sos_dec_forcedsign bit(1)  /* set with version >= 6 */
        ,3 sos_dec_nofoflonasgn bit(1)  /* set with version >= 6 */
        ,3 sos_prectype       bit(2)  /* set with version >= 5 */
        ,3 sos_floatinmath    bit(2)  /* set with version >= 2 */
      ,2 sos_usage
        ,3 sos_ans_round      bit(1)
        ,3 sos_ans_unspec     bit(1)
        ,3 sos_common         bit(1)  /* set with version >= 6 */
        ,3 sos_initauto       bit(1)  /* set with version >= 5 */
        ,3 sos_initbased      bit(1)  /* set with version >= 5 */
        ,3 sos_initctl        bit(1)  /* set with version >= 5 */
        ,3 sos_initstatic     bit(1)  /* set with version >= 5 */
        ,3 sos_stringofg_is_c bit(1)  /* set with version >= 5 */
      ,2 sos_default
        ,3 sos_ans            bit(1)
        ,3 sos_asgn           bit(1)
        ,3 sos_byaddr         bit(1)
        ,3 sos_conn           bit(1)
        ,3 sos_descriptor     bit(1)
        ,3 sos_ebcdic         bit(1)
        ,3 sos_nonnative      bit(1)
        ,3 sos_nonnativeaddr  bit(1)
        ,3 sos_inline         bit(1)
        ,3 sos_reorder        bit(1)
        ,3 sos_evendec        bit(1)
        ,3 sos_null370        bit(1)
        ,3 sos_recursive      bit(1)
        ,3 sos_desclctr       bit(1)
        ,3 sos_ret_byaddr     bit(1)
        ,3 sos_initfill       bit(1)
        ,3 sos_initfill_char  char(1)
        ,3 sos_short_ieee     bit(1)
        ,3 sos_dummy_unal     bit(1)
        ,3 sos_retcode        bit(1)
        ,3 sos_unaligned      bit(1)
        ,3 sos_ordinal_max    bit(1)
        ,3 sos_overlap        bit(1)
        ,3 sos_hex            bit(1)
        ,3 sos_e_hex          bit(1)
        ,3 sos_linkage        fixed bin(8) unsigned
      ,2 sos_prefix
        ,3 sos_size           bit(1)
        ,3 sos_stringrange    bit(1)
        ,3 sos_stringsize     bit(1)
        ,3 sos_subrg          bit(1)
        ,3 sos_fofl           bit(1)
        ,3 sos_ofl            bit(1)
        ,3 sos_invalidop      bit(1)
        ,3 sos_ufl            bit(1)
        ,3 sos_zdiv           bit(1)
        ,3 sos_conv           bit(1)
        ,3 *                  bit(1)
        ,3 sos_dfp            bit(1)  /* set with version >=  9 */
        ,3 sos_nosepname      bit(1)  /* set with version >=  8 */
        ,3 sos_csectcut       bit(3)  /* set with version >=  5 */
      ,2 sos_extension01
        ,3 sos_hgpr           bit(1)  /* set with version >= 10 */
        ,3 sos_hgpr_preserve  bit(1)  /* set with version >= 10 */
        ,3 sos_goff           bit(1)  /* set with version >= 10 */
        ,3 sos_dec_foflonmult bit(1)  /* set with version >= 10 */
        ,3 sos_usage_hex_cstg bit(1)  /* set with version >= 10 */
        ,3 sos_usage_substr_loose     /* set with version >= 10 */
                              bit(1)
        ,3 *                  bit(10)
        ,3 sos_cuname_offset  fixed bin(16) unsigned

The possible values for the sos_cmpat field are given by these declares:

   dcl sos_cmpat_le            bit(4) value('0000'b);
   dcl sos_cmpat_v1            bit(4) value('0001'b);
   dcl sos_cmpat_v2            bit(4) value('0010'b);
   dcl sos_cmpat_v3            bit(4) value('0011'b);

The possible values for the sos_system field are given by these declares:

 dcl sos_system_mvs          bit(4) value('0001'b);
   dcl sos_system_tso          bit(4) value('0010'b);
   dcl sos_system_cics         bit(4) value('0011'b);
   dcl sos_system_ims          bit(4) value('0100'b);
   dcl sos_system_os           bit(4) value('0101'b);

The possible values for the sos_test_hooks field are given by these declares:

 dcl sos_test_hooks_none     bit(4) value('0000'b);
   dcl sos_test_hooks_block    bit(4) value('0001'b);
   dcl sos_test_hooks_stmt     bit(4) value('0011'b);
   dcl sos_test_hooks_path     bit(4) value('0101'b);
   dcl sos_test_hooks_all      bit(4) value('0111'b);

The possible values for the sos_linkage field are given by these declares:

   dcl sos_linkage_optlink     fixed bin(8) unsigned value(1);
   dcl sos_linkage_system      fixed bin(8) unsigned value(2);

The possible values for the sos_bifprec field are given by these declares:

 dcl sos_bifprec_15          bit(2) value('01'b);
   dcl sos_bifprec_31          bit(2) value('10'b);

The possible values for the sos_floatinmath field are given by these declares:

dcl sos_floatinmath_asis    bit(2) value('00'b);
   dcl sos_floatinmath_long    bit(2) value('10'b);
   dcl sos_floatinmath_extndd  bit(2) value('11'b);

The saved options string is located after the timestamp in one of two ways:

  1. if the service option has been specified, the string specified in the service option follows immediately after the timestamp as a character varying string. Then the saved options string follows after the service string as a second character varying string.
  2. if the service option has not been specified, the saved options string follows immediately after the timestamp as a character varying string.

The length of the varying string that holds the saved options string may be longer than the size of the saved options string itself.

The presence (or absence) of the service string is indicated in the PPA2 by the flag byte at decimal offset 20 in the PPA2: if the result of anding this byte with '20'bx is not zero, then the service string is present.

In some earlier releases of the PL/I compiler, the compiler did not place a saved options string in the load module. The presence (or absence) of the saved options string is indicated in the PPA2 by the flag byte at decimal offset 20 in the PPA2: if the result of anding this byte with '02'bx is not zero, then the saved options string is present.


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)