保存済みのオプション文字列

コンパイラはさらに、ロード モジュールのビルドで使用するコンパイラ オプションを含んだ 32 バイトの文字列を、ロード モジュールに保存します。

このトピックでは、保存済みオプション文字列の PL/I 宣言を示します。構造体に含まれている大半のフィールドの意味はその名前から推測できますが、次に一部のフィールドについて説明します。

次に、保存済みオプション文字列の DECLARE を示します。

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_gn_in_sidefile    bit(1) /* set with version >= 12 */
,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 sos_nonullstraddr     bit(1) /* set with version >= 10 */
,3 sos_nullstrptr_sysnull
bit(1) /* set with version >= 11 */
,3 sos_ignore_display    bit(1) /* set with version >= 11 */
,3 sos_ignore_put        bit(1) /* set with version >= 11 */
,3 sos_onsnap_stringsize        /* set with version >= 11 */
bit(1)
,3 sos_onsnap_stringrange       /* set with version >= 11 */
bit(1)
,3 sos_rtcheck_nullptr          /* set with version >= 11 */
bit(1)
,3 sos_initauto_short    bit(1) /* set with version >= 11 */
,3 sos_pp_cics           bit(1) /* set with version >= 11 */
,3 sos_pp_sql            bit(1) /* set with version >= 11 */
,3 sos_cuname_offset     fixed bin(16) unsigned
,2 sos_extension02
,3 sos_xref_in_sidefile         /* set with version >= 13 */
bit(1)
,3 sos_unroll
bit(1) /* set with version >= 14 */
,3 sos_nolaxreturn
bit(1)	/* set with version >= 14 */
,3 *                     bit(29) /* reserved */

sos_cmpat フィールドに可能な値が次の宣言によって与えられます。

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);

sos_system フィールドに可能な値が次の宣言によって与えられます。

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);

sos_test_hooks フィールドに可能な値が次の宣言によって与えられます。

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);

sos_linkage フィールドに可能な値が次の宣言によって与えられます。

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

sos_floatinmath フィールドに可能な値が次の宣言によって与えられます。

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);

保存済みオプション文字列は、タイムスタンプの後に置かれます。サービス オプションを指定する場合は、その文字列が可変文字列としてタイムスタンプの直後に続きます。さらに、保存済みオプション文字列が 2 番目の可変文字列としてサービス文字列の後に続きます。サービス オプション文字列を指定しない場合は、保存済みオプション文字列が可変文字列としてタイムスタンプの直後に続きます。

保存済みオプション可変文字列の長さは、保存済みオプション文字列自体のサイズより長い場合があります。

サービス文字列の存在は、PPA2 の 10 進数オフセット 20 でのフラグ バイトによって、PPA2 で示されます。このバイトと '20'bx による AND 演算の結果がゼロでなければ、サービス文字列が存在します。

以前にリリースされた PL/I コンパイラによっては、保存済みオプション文字列をロード モジュールに置かない場合がありました。保存済みオプション文字列の存在は、PPA2 の 10 進数オフセット 20 でのフラグ バイトによって、PPA2 で示されます。このバイトと '02'bx による AND 演算の結果がゼロでなければ、保存済みオプション文字列が存在します。