=== modified file 'rules/gaps/control_flow.rules'
--- old/rules/gaps/control_flow.rules	2026-09-14 19:23:12 +0000
+++ new/rules/gaps/control_flow.rules	2026-09-15 18:42:38 +0000
@@ -17,6 +17,7 @@
 **                  based on node types.
 ** 006 GES 20260910 Updated class, method and constructor to have full support.
 **     GES 20260914 Added OO4GL class def features.
+**     GES 20260915 Corrected RUN SINGLE-RUN and SINGLETON, which are fully supported.
 */
 -->
 
@@ -112,8 +113,8 @@
          <rule>run.put(prog.kw_on,                       rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>run.put(prog.kw_persist,                  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>run.put(prog.kw_set,                      rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>run.put(prog.kw_sing_run,                 rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>
-         <rule>run.put(prog.kw_singlton,                 rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>
+         <rule>run.put(prog.kw_sing_run,                 rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
+         <rule>run.put(prog.kw_singlton,                 rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>run.put(prog.kw_value,                    rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
       </function>
    

=== modified file 'rules/gaps/database.rules'
--- old/rules/gaps/database.rules	2026-09-15 00:50:51 +0000
+++ new/rules/gaps/database.rules	2026-09-15 18:19:08 +0000
@@ -32,6 +32,8 @@
 **     GES 20260914 Updated BIND runtime status.
 **     GES 20260914 Added marking for the _usertablestat metadata table and its fields, and
 **                  updated the marking for _myconnection._myconn-userid.
+**     GES 20260915 Corrected stale none support levels for WHERE-clause built-ins, metaschema
+**                  fields and COLUMN-CODEPAGE, and recorded the gap details behind them.
 */
  -->
  
@@ -147,7 +149,7 @@
          <rule>metaFields.put("_field._valmsg"                       , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
          <rule>metaFields.put("_field._field-rpos"                   , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule> <!-- same as POSITION -->
          <rule>metaFields.put("_field._order"                        , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
-         <rule>metaFields.put("_field._field-physpos"                , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
+         <rule>metaFields.put("_field._field-physpos"                , rw.gap(rw.cvt_lvl_full      | rw.rt_lvl_basic, null, "reports the field order rather than a physical position"))</rule>
          <rule>metaFields.put("_field._extent"                       , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
          <rule>metaFields.put("_field._can-read"                     , rw.cvt_lvl_full      | rw.rt_lvl_basic)</rule> <!-- runtime support is basic because it simply reads the value from the dev-time schema and does not consider that each db may have custom values set, also no assignment support exists -->
          <rule>metaFields.put("_field._can-write"                    , rw.cvt_lvl_full      | rw.rt_lvl_basic)</rule> <!-- runtime support is basic because it simply reads the value from the dev-time schema and does not consider that each db may have custom values set, also no assignment support exists -->
@@ -187,9 +189,9 @@
          <rule>metaFields.put("_myconnection._myconn-id"             , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
          <rule>metaFields.put("_myconnection._myconn-userid"         , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
          <rule>metaFields.put("_myconnection._myconn-pid"            , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
-         <rule>metaFields.put("_myconnection._myconn-numseqbuffers"  , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
-         <rule>metaFields.put("_myconnection._myconn-usedseqbuffers" , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
-         <rule>metaFields.put("_myconnection._myconn-tenantid"       , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
+         <rule>metaFields.put("_myconnection._myconn-numseqbuffers"  , rw.cvt_lvl_full      | rw.rt_lvl_stub)</rule>
+         <rule>metaFields.put("_myconnection._myconn-usedseqbuffers" , rw.cvt_lvl_full      | rw.rt_lvl_stub)</rule>
+         <rule>metaFields.put("_myconnection._myconn-tenantid"       , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
          
          <rule>metaTables.put("_servers"                             , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
          <rule>metaFields.put("_servers._server-id"                  , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
@@ -262,7 +264,7 @@
          <!-- UI-specific field-level options are handled by UI rules so they don't appear 
               here -->
          <rule>ttFieldOpts.put(prog.kw_case_sen, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>ttFieldOpts.put(prog.kw_col_cp  , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>
+         <rule>ttFieldOpts.put(prog.kw_col_cp  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>ttFieldOpts.put(prog.kw_decimals, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>ttFieldOpts.put(prog.kw_extent  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>ttFieldOpts.put(prog.kw_init    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -486,7 +488,7 @@
          <rule>whereFuncs.put(prog.kw_int     , rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
          <rule>whereFuncs.put(prog.kw_int64   , rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
          <rule>whereFuncs.put(prog.kw_interval, rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
-         <rule>whereFuncs.put(prog.kw_is_colcp, rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
+         <rule>whereFuncs.put(prog.kw_is_colcp, rw.gap(rw.cvt_lvl_full   | rw.rt_lvl_partial, null, "a database CLOB column's declared codepage is not reflected; only a clob constructed with an explicit codepage reports one"))</rule>
          <rule>whereFuncs.put(prog.kw_is_cp_fx, rw.cvt_lvl_full   | rw.rt_lvl_basic     )</rule>
          <rule>whereFuncs.put(prog.kw_is_db_mt, rw.cvt_lvl_full   | rw.rt_lvl_stub      )</rule>
          <rule>whereFuncs.put(prog.kw_is_lead , rw.cvt_lvl_full   | rw.rt_lvl_stub      )</rule>
@@ -503,7 +505,7 @@
          <rule>whereFuncs.put(prog.kw_lc      , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
          <rule>whereFuncs.put(prog.kw_ldbname , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
          <rule>whereFuncs.put(prog.kw_length  , rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
-         <rule>whereFuncs.put(prog.kw_lib     , rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
+         <rule>whereFuncs.put(prog.kw_lib     , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>
          <rule>whereFuncs.put(prog.kw_line_cnt, rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
          <rule>whereFuncs.put(prog.kw_load_pic, rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
          <rule>whereFuncs.put(prog.kw_locked  , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
@@ -546,7 +548,7 @@
          <rule>whereFuncs.put(prog.kw_raw     , rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
          <rule>whereFuncs.put(prog.kw_rec_len , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
          <rule>whereFuncs.put(prog.kw_recid   , rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
-         <rule>whereFuncs.put(prog.kw_rejected, rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
+         <rule>whereFuncs.put(prog.kw_rejected, rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>
          <rule>whereFuncs.put(prog.kw_replace , rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
          <rule>whereFuncs.put(prog.kw_retry   , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
          <rule>whereFuncs.put(prog.kw_rgb_val , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
@@ -585,7 +587,7 @@
          <rule>whereFuncs.put(prog.kw_u_msg   , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
          <rule>whereFuncs.put(prog.kw_unbox   , rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
          <rule>whereFuncs.put(prog.kw_url_deco, rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
-         <rule>whereFuncs.put(prog.kw_url_enco, rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
+         <rule>whereFuncs.put(prog.kw_url_enco, rw.gap(rw.cvt_lvl_full   | rw.rt_lvl_partial, null, "only the java encoding form is implemented; the query, cookie and default forms are ignored"))</rule>
          <rule>whereFuncs.put(prog.kw_url_fld , rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
          <rule>whereFuncs.put(prog.kw_url_fldl, rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
          <rule>whereFuncs.put(prog.kw_url_fmt , rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>

=== modified file 'rules/gaps/expressions.rules'
--- old/rules/gaps/expressions.rules	2026-09-15 13:23:10 +0000
+++ new/rules/gaps/expressions.rules	2026-09-15 18:45:56 +0000
@@ -274,6 +274,8 @@
 **     GES 20260914 Updated ERROR and SET-DB-CLIENT support levels.
 **     CA  20260915 Marked as cvt_full and rt_stub: DUMP-LOGGING-NOW, INHERIT-BGCOLOR, INHERIT-FGCOLOR,
 **                  EXECUTION-LOG, FRAME-SPACING.
+**     GES 20260915 Corrected stale none support levels for built-in functions, attributes and
+**                  methods, including the WebSpeed API, and recorded the gap details behind them.
 */
 -->
  
@@ -443,7 +445,7 @@
          <rule>funcs.put(prog.kw_aud_enab, rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
          <rule>funcs.put(prog.kw_avail   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_avg     , rw.cvt_lvl_basic   | rw.rt_lvl_basic)</rule> <!-- this is only available from embedded SQL -->
-         <rule>funcs.put(prog.kw_avl_msgs, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed available-messages is notsupported -->
+         <rule>funcs.put(prog.kw_avl_msgs, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_base64_d, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_base64_e, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_box     , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- box is not supported, todo: this qualified class is wrong but we need a placeholder -->
@@ -454,7 +456,7 @@
          <rule>funcs.put(prog.kw_caps    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_cast    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_cbit    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_check_am, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed check-agent-mode is notsupported -->
+         <rule>funcs.put(prog.kw_check_am, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_chr     , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_compare , rw.cvt_lvl_full    | rw.rt_lvl_partial)</rule> <!-- missing collation, matches, begins and strength types CAPS, PRIMARY, SECONDARY, TERTIARY, QUATERNARY -->
          <rule>funcs.put(prog.kw_conn_ed , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -464,7 +466,7 @@
          <rule>funcs.put(prog.kw_cur_chg , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_cur_res , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_cur_val , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_cvt_dt  , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed convert-datetime is notsupported -->
+         <rule>funcs.put(prog.kw_cvt_dt  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_data_sm , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_date    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_date_tz , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -480,7 +482,7 @@
          <rule>funcs.put(prog.kw_dbvers  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_dec     , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_decrypt , rw.gap(rw.group_base_lang, rw.cvt_lvl_full    | rw.rt_lvl_partial))</rule> <!-- decrypt -->
-         <rule>funcs.put(prog.kw_del_cook, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed delete-cookie is notsupported -->
+         <rule>funcs.put(prog.kw_del_cook, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_dyn_cast, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- dynamic-cast is not supported, todo: this qualified class is wrong but we need a placeholder -->
          <rule>funcs.put(prog.kw_dyn_curv, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_dyn_enum, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -499,7 +501,7 @@
          <rule>funcs.put(prog.kw_fill    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_first   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_first_of, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_fmt_dt  , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed format-datetime is notsupported -->
+         <rule>funcs.put(prog.kw_fmt_dt  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_fr_col  , rw.cvt_lvl_full    | rw.rt_lvl_untested)</rule> <!--  always returns 0, may need changes for nested frames -->
          <rule>funcs.put(prog.kw_fr_down , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_fr_line , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -510,40 +512,40 @@
          <rule>funcs.put(prog.kw_get_bits, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_get_byte, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_get_byts, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_get_cfg , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-config is notsupported -->
-         <rule>funcs.put(prog.kw_get_cgi , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-cgi is notsupported -->
-         <rule>funcs.put(prog.kw_get_cgl , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-cgi-long is notsupported -->
+         <rule>funcs.put(prog.kw_get_cfg , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
+         <rule>funcs.put(prog.kw_get_cgi , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
+         <rule>funcs.put(prog.kw_get_cgl , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_get_cll , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- get-collation is not supported -->
          <rule>funcs.put(prog.kw_get_clnt, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!--  GET-CLIENT -->
          <rule>funcs.put(prog.kw_get_codp, rw.gap(rw.group_base_lang, rw.cvt_lvl_full    | rw.rt_lvl_basic))</rule>
          <rule>funcs.put(prog.kw_get_coll, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- get-collations is not supported -->
-         <rule>funcs.put(prog.kw_get_cook, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-cookie is notsupported -->
+         <rule>funcs.put(prog.kw_get_cook, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_get_dbcl, rw.cvt_lvl_full    | rw.rt_lvl_partial)</rule> <!-- get-db-client -->
          <rule>funcs.put(prog.kw_get_dbl , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_get_fld , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-field is notsupported -->
+         <rule>funcs.put(prog.kw_get_fld , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_get_flt , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_get_i64 , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_get_lic , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- undocumented get-license() -->
-         <rule>funcs.put(prog.kw_get_l_v , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-long-value is notsupported -->
+         <rule>funcs.put(prog.kw_get_l_v , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_get_long, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_get_msgg, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-message-groups is notsupported -->
-         <rule>funcs.put(prog.kw_get_msgs, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-messages is notsupported -->
+         <rule>funcs.put(prog.kw_get_msgg, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
+         <rule>funcs.put(prog.kw_get_msgs, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_get_ptr , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_get_shrt, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_get_str , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_get_sz  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_get_u_f , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-user-field is notsupported -->
+         <rule>funcs.put(prog.kw_get_u_f , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_get_ul  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_get_usht, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_get_val , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-value is notsupported -->
+         <rule>funcs.put(prog.kw_get_val , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_guid    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_handle  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_hashcode, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_hex_decd, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_hex_encd, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_hid_fld , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed hidden-field is notsupported -->
-         <rule>funcs.put(prog.kw_hid_fldl, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed hidden-field-list is notsupported -->
-         <rule>funcs.put(prog.kw_html_enc, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed html-encode is notsupported -->
+         <rule>funcs.put(prog.kw_hid_fld , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
+         <rule>funcs.put(prog.kw_hid_fldl, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
+         <rule>funcs.put(prog.kw_html_enc, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_hwnd    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- FWD extension, not real 4GL -->
          <rule>funcs.put(prog.kw_if      , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_index   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -551,7 +553,7 @@
          <rule>funcs.put(prog.kw_int     , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_int64   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_interval, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_is_colcp, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- is-column-codepage is not supported -->
+         <rule>funcs.put(prog.kw_is_colcp, rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_partial, null, "a database CLOB column's declared codepage is not reflected; only a clob constructed with an explicit codepage reports one"))</rule>
          <rule>funcs.put(prog.kw_is_cp_fx, rw.cvt_lvl_full    | rw.rt_lvl_basic)</rule>
          <rule>funcs.put(prog.kw_is_db_mt, rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule> <!-- Found in 11.7 reference --> 
          <rule>funcs.put(prog.kw_is_lead , rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule> <!-- is-lead-byte is not supported -->
@@ -568,7 +570,7 @@
          <rule>funcs.put(prog.kw_lc      , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_ldbname , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_length  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_lib     , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- library is not supported -->
+         <rule>funcs.put(prog.kw_lib     , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_line_cnt, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_load_pic, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_locked  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -593,9 +595,9 @@
          <rule>funcs.put(prog.kw_num_ent , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_num_res , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_os_g_env, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_out_hh  , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed output-http-header is notsupported -->
-         <rule>funcs.put(prog.kw_out_msgs, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed output-messages is notsupported -->
-         <rule>funcs.put(prog.kw_outputct, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed output-content-type is notsupported -->
+         <rule>funcs.put(prog.kw_out_hh  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
+         <rule>funcs.put(prog.kw_out_msgs, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
+         <rule>funcs.put(prog.kw_outputct, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_p2j_rc  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- fwd-extension, not real 4gl! -->
          <rule>funcs.put(prog.kw_page_num, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_page_sz , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -603,7 +605,7 @@
          <rule>funcs.put(prog.kw_progname, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_prover  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- proversion runtime support is directory.xml config based -->
          <rule>funcs.put(prog.kw_qry_off , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_que_msg , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed queue-message is notsupported -->
+         <rule>funcs.put(prog.kw_que_msg , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_quoter  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_r_index , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_r_trim  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -611,7 +613,7 @@
          <rule>funcs.put(prog.kw_raw     , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- raw is not supported -->
          <rule>funcs.put(prog.kw_rec_len , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_recid   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_rejected, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- rejected is not supported -->
+         <rule>funcs.put(prog.kw_rejected, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_replace , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_retry   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_rgb_val , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -621,12 +623,12 @@
          <rule>funcs.put(prog.kw_sdbname , rw.cvt_lvl_full    | rw.rt_lvl_full_restr)</rule>
          <rule>funcs.put(prog.kw_search  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_seek    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_set_cook, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed set-cookie is notsupported -->
+         <rule>funcs.put(prog.kw_set_cook, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_set_dbcl, rw.gap(rw.group_database, rw.cvt_lvl_full    | rw.rt_lvl_full))</rule>
          <rule>funcs.put(prog.kw_set_lstk, rw.cvt_lvl_full    | rw.rt_lvl_basic)</rule> <!-- undocumented method on LAST-EVENT -->
          <rule>funcs.put(prog.kw_set_ptr , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>funcs.put(prog.kw_set_u_f , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed set-user-field is notsupported -->
-         <rule>funcs.put(prog.kw_set_w_s , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed setwebstate is notsupported -->
+         <rule>funcs.put(prog.kw_set_u_f , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
+         <rule>funcs.put(prog.kw_set_w_s , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_setuser , rw.gap(rw.group_database, rw.cvt_lvl_full    | rw.rt_lvl_full_restr))</rule>
          <rule>funcs.put(prog.kw_sha1_dig, rw.gap(rw.group_base_lang, rw.cvt_lvl_full    | rw.rt_lvl_basic))</rule>
          <rule>funcs.put(prog.kw_sqrt    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -649,11 +651,11 @@
          <rule>funcs.put(prog.kw_type_of , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_u_msg   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_unbox   , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed unbox is notsupported -->
-         <rule>funcs.put(prog.kw_url_deco, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed url-decode is notsupported -->
-         <rule>funcs.put(prog.kw_url_enco, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed url-encode is notsupported -->
-         <rule>funcs.put(prog.kw_url_fld , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed url-field is notsupported -->
-         <rule>funcs.put(prog.kw_url_fldl, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed url-field-list is notsupported -->
-         <rule>funcs.put(prog.kw_url_fmt , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed url-format is notsupported -->
+         <rule>funcs.put(prog.kw_url_deco, rw.gap(rw.cvt_lvl_none    | rw.rt_lvl_stub, "only the WEB-CONTEXT:URL-DECODE() method form is converted, not the function form", null))</rule>
+         <rule>funcs.put(prog.kw_url_enco, rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_partial, null, "only the java encoding form is implemented; the query, cookie and default forms are ignored"))</rule>
+         <rule>funcs.put(prog.kw_url_fld , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
+         <rule>funcs.put(prog.kw_url_fldl, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
+         <rule>funcs.put(prog.kw_url_fmt , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- WebSpeed API, implemented by the converted PSC WebSpeed ADE in p2j.webspeed -->
          <rule>funcs.put(prog.kw_userid  , rw.gap(rw.group_database, rw.cvt_lvl_full    | rw.rt_lvl_full_restr))</rule>
          <rule>funcs.put(prog.kw_val_evt , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>funcs.put(prog.kw_val_hnd , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -784,7 +786,7 @@
          <rule>attrs.put(prog.kw_authblob, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- FWD extension, not real 4GL -->
          <rule>attrs.put(prog.kw_authen_f, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- authentication-failed -->
          <rule>attrs.put(prog.kw_auto_com, rw.cvt_lvl_full_restr | rw.rt_lvl_full_restr)</rule> <!-- auto-completion, not implemented for in-browse combo boxes -->
-         <rule>attrs.put(prog.kw_auto_del, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- auto-delete -->
+         <rule>attrs.put(prog.kw_auto_del, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- auto-delete -->
          <rule>attrs.put(prog.kw_auto_d_x, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- auto-delete-xml -->
          <rule>attrs.put(prog.kw_auto_end, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_auto_go , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
@@ -792,7 +794,7 @@
          <rule>attrs.put(prog.kw_auto_res, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_auto_ret, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- auto-return -->
          <rule>attrs.put(prog.kw_auto_syn, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- auto-synchronize -->
-         <rule>attrs.put(prog.kw_auto_val, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- auto-validate -->
+         <rule>attrs.put(prog.kw_auto_val, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- auto-validate -->
          <rule>attrs.put(prog.kw_auto_zap, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_avail   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_avl_fmts, rw.gap(rw.group_ui, rw.cvt_lvl_none       | rw.rt_lvl_none))</rule> <!-- available-formats -->
@@ -801,7 +803,7 @@
          <rule>attrs.put(prog.kw_b4_table, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- before-table -->
          <rule>attrs.put(prog.kw_backgrnd, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_base_ade, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- base-ade -->
-         <rule>attrs.put(prog.kw_bas_logg, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- basic-logging -->
+         <rule>attrs.put(prog.kw_bas_logg, rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- basic-logging -->
          <rule>attrs.put(prog.kw_batch_mo, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_batch_sz, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- batch-size -->
          <rule>attrs.put(prog.kw_beg_ev_g, rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- begin-event-group -->
@@ -1041,7 +1043,7 @@
          <rule>attrs.put(prog.kw_end_ev_g, rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- end-event-group -->
          <rule>attrs.put(prog.kw_end_f_d , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- end-file-drop -->
          <rule>attrs.put(prog.kw_end_user, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- end-user-prompt -->
-         <rule>attrs.put(prog.kw_ent_ex_l, rw.cvt_lvl_full       | rw.rt_lvl_none)</rule> <!-- entity-expansion-limit -->
+         <rule>attrs.put(prog.kw_ent_ex_l, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- entity-expansion-limit -->
          <rule>attrs.put(prog.kw_entry   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_ent_tlst, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- entry-types-list -->
          <rule>attrs.put(prog.kw_e_proc_c, rw.cvt_lvl_full       | rw.rt_lvl_partial)</rule> <!-- not implemented in DataSets-->
@@ -1056,7 +1058,7 @@
          <rule>attrs.put(prog.kw_evt_type, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_excl_id , rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- exclusive-id -->
          <rule>attrs.put(prog.kw_exec_log, rw.gap(rw.group_base_lang, rw.cvt_lvl_full       | rw.rt_lvl_stub))</rule> <!-- execution-log -->
-         <rule>attrs.put(prog.kw_exitcode, rw.gap(rw.group_base_lang, rw.cvt_lvl_partial    | rw.rt_lvl_none))</rule> <!-- added in 11.7.3 as attribute to SESSION -->
+         <rule>attrs.put(prog.kw_exitcode, rw.gap(rw.group_base_lang, rw.cvt_lvl_partial    | rw.rt_lvl_stub))</rule> <!-- added in 11.7.3 as attribute to SESSION -->
          <rule>attrs.put(prog.kw_expandbl, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_expand  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_export  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
@@ -1226,7 +1228,7 @@
          <rule>attrs.put(prog.kw_idephwnd, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- ide-parent-hwnd -->
          <rule>attrs.put(prog.kw_idewntyp, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- ide-window-type -->
          <rule>attrs.put(prog.kw_idx_info, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
-         <rule>attrs.put(prog.kw_ign_cmod, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- ignore-current-modified -->
+         <rule>attrs.put(prog.kw_ign_cmod, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- ignore-current-modified -->
          <rule>attrs.put(prog.kw_image   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_img_down, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_img_ins , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
@@ -1345,7 +1347,7 @@
          <rule>attrs.put(prog.kw_marg_w_c, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- margin-width-chars undocumented attribute, found in customer source -->
          <rule>attrs.put(prog.kw_marg_w_p, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- margin-width-pixels undocumented attribute, found in customer source -->
          <rule>attrs.put(prog.kw_mark_new, rw.gap(rw.group_database, rw.cvt_lvl_full       | rw.rt_lvl_stub))</rule>
-         <rule>attrs.put(prog.kw_mark_rs , rw.gap(rw.group_database, rw.cvt_lvl_full       | rw.rt_lvl_none))</rule>
+         <rule>attrs.put(prog.kw_mark_rs , rw.gap(rw.group_database, rw.cvt_lvl_full       | rw.rt_lvl_full))</rule>
          <rule>attrs.put(prog.kw_max_btn , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- max-button -->
          <rule>attrs.put(prog.kw_max_char, rw.gap(rw.group_ui, rw.cvt_lvl_full_restr | rw.rt_lvl_full_restr))</rule> <!-- not implemented for in-browse combo boxes -->
          <rule>attrs.put(prog.kw_max_d_g , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
@@ -1369,13 +1371,13 @@
          <rule>attrs.put(prog.kw_min_cwpx, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- min-column-width-pixels -->
          <rule>attrs.put(prog.kw_min_h_c , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- min-height-chars -->
          <rule>attrs.put(prog.kw_min_h_p , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
-         <rule>attrs.put(prog.kw_min_schm, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- min-schema-marshal -->
+         <rule>attrs.put(prog.kw_min_schm, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- min-schema-marshal -->
          <rule>attrs.put(prog.kw_min_val , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_min_w_c , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_min_w_p , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_mnemon  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- FWD extension, not real 4GL! -->
          <rule>attrs.put(prog.kw_modified, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
-         <rule>attrs.put(prog.kw_mou_ptr , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
+         <rule>attrs.put(prog.kw_mou_ptr , rw.gap(rw.cvt_lvl_partial    | rw.rt_lvl_partial, "only the read form is converted; the marking map has no setter for it", "there is no general MOUSE-POINTER setter outside the OCX control extension"))</rule>
          <rule>attrs.put(prog.kw_mov_2_b , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_mov_2eof, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_mov_2_t , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
@@ -1414,7 +1416,7 @@
          <rule>attrs.put(prog.kw_no_focus, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_no_pre,   rw.cvt_lvl_full       | rw.rt_lvl_full_restr)</rule> <!-- no-prefetch: implicit in FWD, not aware of side-effects ATM-->
          <rule>attrs.put(prog.kw_normalze, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
-         <rule>attrs.put(prog.kw_no_sch_m, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- no-schema-marshal -->
+         <rule>attrs.put(prog.kw_no_sch_m, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- no-schema-marshal -->
          <rule>attrs.put(prog.kw_no_valid, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- the no-validate attr is a browse-only feature in the 4GL -->
          <rule>attrs.put(prog.kw_num_2rtn, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- num-to-retain -->
          <rule>attrs.put(prog.kw_num_buff, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
@@ -1545,8 +1547,8 @@
          <rule>attrs.put(prog.kw_repos   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- reposition --> 
          <rule>attrs.put(prog.kw_repos_f , rw.gap(rw.group_database, rw.cvt_lvl_full       | rw.rt_lvl_basic))</rule> <!-- error reporting TODO -->
          <rule>attrs.put(prog.kw_rep_stxt, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
-         <rule>attrs.put(prog.kw_req_info, rw.gap(rw.group_base_lang, rw.cvt_lvl_none       | rw.rt_lvl_full))</rule> <!-- request-info -->
-         <rule>attrs.put(prog.kw_rsp_info, rw.gap(rw.group_base_lang, rw.cvt_lvl_none       | rw.rt_lvl_full))</rule> <!-- response-info -->
+         <rule>attrs.put(prog.kw_req_info, rw.gap(rw.group_base_lang, rw.cvt_lvl_full       | rw.rt_lvl_full))</rule> <!-- request-info -->
+         <rule>attrs.put(prog.kw_rsp_info, rw.gap(rw.group_base_lang, rw.cvt_lvl_full       | rw.rt_lvl_full))</rule> <!-- response-info -->
          <rule>attrs.put(prog.kw_reset   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_resizabl, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- resizable attribute is not complete for frame widget -->
          <rule>attrs.put(prog.kw_resize  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>   
@@ -1658,7 +1660,7 @@
          <rule>attrs.put(prog.kw_side_l_h, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_sing_run, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- single-run -->
          <rule>attrs.put(prog.kw_singlton, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- singleton -->
-         <rule>attrs.put(prog.kw_skip_d_r, rw.cvt_lvl_full       | rw.rt_lvl_none)</rule>
+         <rule>attrs.put(prog.kw_skip_d_r, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_smal_ico, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- small-icon -->
          <rule>attrs.put(prog.kw_smal_ttl, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- small-title -->
          <rule>attrs.put(prog.kw_soap_f_a, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
@@ -1692,7 +1694,7 @@
          <rule>attrs.put(prog.kw_stop_prs, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_stream  , rw.cvt_lvl_full       | rw.rt_lvl_partial)</rule> <!-- stream -->
          <rule>attrs.put(prog.kw_strict  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
-         <rule>attrs.put(prog.kw_stric_er, rw.cvt_lvl_full       | rw.rt_lvl_none)</rule> <!-- strict-entity-resolution -->
+         <rule>attrs.put(prog.kw_stric_er, rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- strict-entity-resolution -->
          <rule>attrs.put(prog.kw_str_val , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_stup_par, rw.gap(rw.group_base_lang, rw.cvt_lvl_full       | rw.rt_lvl_partial))</rule> <!-- we manufacture a simulated command line based on directory settings, at this time only rereadnolock is simulated -->
          <rule>attrs.put(prog.kw_sub_m_h , rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- undocumented sub-menu-help -->
@@ -1708,7 +1710,7 @@
          <rule>attrs.put(prog.kw_synchron, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- buffer synchronize method-->
          <rule>attrs.put(prog.kw_sys_a_b , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_sys_id  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
-         <rule>attrs.put(prog.kw_tab_crcl, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- table-crc-list -->
+         <rule>attrs.put(prog.kw_tab_crcl, rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- table-crc-list -->
          <rule>attrs.put(prog.kw_tab_hand, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_table   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
          <rule>attrs.put(prog.kw_tab_list, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- table-list -->
@@ -1764,7 +1766,7 @@
          <rule>attrs.put(prog.kw_value   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- value -->
          <rule>attrs.put(prog.kw_val_xml , rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- validate-xml -->
          <rule>attrs.put(prog.kw_version , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
-         <rule>attrs.put(prog.kw_view_as , rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- view-as -->
+         <rule>attrs.put(prog.kw_view_as , rw.gap(rw.cvt_lvl_full       | rw.rt_lvl_stub, null, "the value is stored but not honored"))</rule> <!-- view-as -->
          <rule>attrs.put(prog.kw_view_fcr, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- view-first-column-on-reopen -->
          <rule>attrs.put(prog.kw_virt_hc , rw.gap(rw.group_ui, rw.cvt_lvl_full       | rw.rt_lvl_basic))</rule> <!-- unfinished support for nested frames -->
          <rule>attrs.put(prog.kw_virt_hp , rw.gap(rw.group_ui, rw.cvt_lvl_full       | rw.rt_lvl_basic))</rule> <!-- unfinished support for nested frames -->
@@ -2078,8 +2080,8 @@
          <rule>com.put(prog.com_invocation, rw.cvt_lvl_full | rw.rt_lvl_basic)</rule>
          <rule>com.put(prog.com_method    , rw.cvt_lvl_full | rw.rt_lvl_basic)</rule>
          <rule>com.put(prog.com_property  , rw.cvt_lvl_full | rw.rt_lvl_basic)</rule>
-         <rule>com.put(prog.kw_by_ptr     , rw.cvt_lvl_none | rw.rt_lvl_none)</rule>
-         <rule>com.put(prog.kw_by_var_p   , rw.cvt_lvl_none | rw.rt_lvl_none)</rule>
+         <rule>com.put(prog.kw_by_ptr     , rw.gap(rw.cvt_lvl_full | rw.rt_lvl_stub, null, "the value is stored but not honored"))</rule>
+         <rule>com.put(prog.kw_by_var_p   , rw.gap(rw.cvt_lvl_full | rw.rt_lvl_stub, null, "the value is stored but not honored"))</rule>
       </function>
       
       <!-- handle-based methods or attributes -->
@@ -2115,10 +2117,10 @@
          <rule>map.put(prog.kw_coll_all, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_cre_imag, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_creat_sn, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>map.put(prog.kw_crt_mimg, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_crt_mimg, rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
          <rule>map.put(prog.kw_dclk_exp, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>map.put(prog.kw_drag_nod, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
-         <rule>map.put(prog.kw_drag_ovr, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_drag_nod, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
+         <rule>map.put(prog.kw_drag_ovr, rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_partial, null, "only meaningful during an OLE drag and drop operation"))</rule>
          <rule>map.put(prog.kw_ens_n_v,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_exp_n_ic, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_exp_node, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -2138,7 +2140,7 @@
          <rule>map.put(prog.kw_fs_node,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_fv_node,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_get_fcn,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>map.put(prog.kw_get_n_at, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_get_n_at, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_get_n_bg, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_get_n_fg, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_get_n_hc, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -2146,17 +2148,17 @@
          <rule>map.put(prog.kw_get_nlev, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_get_nsn,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_get_ntxt, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>map.put(prog.kw_get_nvv,  rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_get_nvv, rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
          <rule>map.put(prog.kw_get_parn, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_get_psn,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_get_snc,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_get_tnod, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>map.put(prog.kw_indent,   rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
-         <rule>map.put(prog.kw_is_msel,  rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_indent, rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_stub, null, "the value is stored but not honored"))</rule>
+         <rule>map.put(prog.kw_is_msel, rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_partial, null, "implemented for TREE-LIST only; the TREE-VIEW control reports it unsupported"))</rule>
          <rule>map.put(prog.kw_is_n_exp, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>map.put(prog.kw_n_height, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_n_height, rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_stub, null, "the value is stored but not honored"))</rule>
          <rule>map.put(prog.kw_n_key_id, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>map.put(prog.kw_node_bld, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_node_bld, rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_stub, null, "the value is stored but not honored"))</rule>
          <rule>map.put(prog.kw_node_cnt, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_node_exp, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_node_ico, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -2170,13 +2172,13 @@
          <rule>map.put(prog.kw_rem_node, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_scr_nodc, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_scr_ntop, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>map.put(prog.kw_scr_vert, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
-         <rule>map.put(prog.kw_scr_wlns, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_scr_vert, rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
+         <rule>map.put(prog.kw_scr_wlns, rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_stub, null, "the value is stored but not honored"))</rule>
          <rule>map.put(prog.kw_sel_nid,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_sel_nkey, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_sel_node, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_sel_sfvn, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>map.put(prog.kw_set_msel, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_set_msel, rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_partial, null, "implemented for TREE-LIST only; the TREE-VIEW control reports it unsupported"))</rule>
          <rule>map.put(prog.kw_set_n_bg, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_set_n_fg, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_set_n_hc, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -2184,7 +2186,7 @@
          <rule>map.put(prog.kw_set_snc,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_set_tn_i, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_show_but, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>map.put(prog.kw_textedit, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_textedit, rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_stub, null, "the value is stored but not honored"))</rule>
          <rule>map.put(prog.kw_tnod_val, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_trig_nod, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_trig_col, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -2195,11 +2197,11 @@
       <!-- TABSET attributes and methods -->
       <function name="addTabsetAttrsMeths">
          <parameter name="map" type="java.util.Map" />
-         <rule>map.put(prog.kw_add_tab,  rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
-         <rule>map.put(prog.kw_clr_tabs, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
-         <rule>map.put(prog.kw_curr_tab, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
-         <rule>map.put(prog.kw_set_f_d,  rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
-         <rule>map.put(prog.kw_tabs,     rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_add_tab, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
+         <rule>map.put(prog.kw_clr_tabs, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
+         <rule>map.put(prog.kw_curr_tab, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
+         <rule>map.put(prog.kw_set_f_d, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
+         <rule>map.put(prog.kw_tabs, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
       </function>
 
       <!-- TREELIST attributes and methods -->
@@ -2233,8 +2235,8 @@
          <rule>map.put(prog.kw_sor_c_c,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_sor_cols, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>map.put(prog.kw_tho_sep,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>map.put(prog.kw_all_dndo, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
-         <rule>map.put(prog.kw_all_dnd,  rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
+         <rule>map.put(prog.kw_all_dndo, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
+         <rule>map.put(prog.kw_all_dnd, rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_partial, null, "only gates the OLE drag and drop path"))</rule>
       </function>
 
       <!-- HTML-BROWSER attributes and methods -->

=== modified file 'rules/gaps/input_output.rules'
--- old/rules/gaps/input_output.rules	2022-04-29 11:01:19 +0000
+++ new/rules/gaps/input_output.rules	2026-09-15 18:41:31 +0000
@@ -5,12 +5,13 @@
 ** Module   : input_output.rules
 ** Abstract : rules for encoding support levels of I/O constructs
 **
-** Copyright (c) 2018-2022, Golden Code Development Corporation.
+** Copyright (c) 2018-2026, Golden Code Development Corporation.
 **
 ** _#_ _I_ __Date__ ________________________________Description_________________________________      
 ** 001 GES 20181108 First version.
 ** 002 GES 20191109 Updates for some I/O options.
 ** 003 GES 20220425 More updates for I/O options.
+** 004 GES 20260915 Corrected the LOB-DIR and MAP option support levels, which are implemented.
 */
  -->
  
@@ -87,9 +88,9 @@
          <rule>opts.put(prog.kw_font,                     rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- FWD extension -->
          <rule>opts.put(prog.kw_echo,                     rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_keep_msg,                 rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>opts.put(prog.kw_lob_dir,                  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>
+         <rule>opts.put(prog.kw_lob_dir,           rw.gap(rw.cvt_lvl_full    | rw.rt_lvl_partial, null, "only the export direction is implemented; a lob is never read back through the directory"))</rule>
          <rule>opts.put(prog.kw_landscap,                 rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
-         <rule>opts.put(prog.kw_map,                      rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>
+         <rule>opts.put(prog.kw_map,                      rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
          <rule>opts.put(prog.kw_no_cvt,                   rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_no_echo,                  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_no_error,                 rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -102,4 +103,4 @@
       </function>
    
   </func-library>
-</rule-set>
\ No newline at end of file
+</rule-set>

=== modified file 'rules/gaps/user_interface.rules'
--- old/rules/gaps/user_interface.rules	2026-09-10 23:49:58 +0000
+++ new/rules/gaps/user_interface.rules	2026-09-15 18:19:09 +0000
@@ -26,6 +26,8 @@
 ** 012 EVL 20230821 Changed runtime status for STREAM-IO, SCREEN-IO frame definition options.
 ** 013 GES 20260910 Updated browse view-as option.
 **     GES 20260910 Added UI event gap marking.
+**     GES 20260915 Corrected stale none support levels for UI events and frame, browse and
+**                  widget options, and flagged the entries which look unreachable.
 */
  -->
  
@@ -113,7 +115,7 @@
          <rule>opts.put(prog.kw_columns,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_ctx_h,    rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- context-help option -->
          <rule>opts.put(prog.kw_ctx_h_f,  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- context-help-file option is not supported -->
-         <rule>opts.put(prog.kw_ctx_h_id, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule> <!-- runtime support is ready, no conversion for option use -->
+         <rule>opts.put(prog.kw_ctx_h_id, rw.gap(rw.cvt_lvl_none    | rw.rt_lvl_stub, "only the handle attribute form is converted, not the frame phrase option", "the value is stored but not honored"))</rule>
          <rule>opts.put(prog.kw_dcolor,   rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_deflt_bn, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_down,     rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -126,7 +128,7 @@
          <rule>opts.put(prog.kw_inh_fgc,  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- inherit-fgcolor option -->
          <rule>opts.put(prog.kw_keep_tab, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_lab_dc,   rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- undocumented but allowed frame option -->
-         <rule>opts.put(prog.kw_lab_font, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>  <!-- undocumented but allowed frame option -->
+         <rule>opts.put(prog.kw_lab_font, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>  <!-- undocumented but allowed frame option; frame_generator setMap emits setLabelFont against the frame, which has no such method - needs review -->
          <rule>opts.put(prog.kw_mou_ptr,  rw.cvt_lvl_none    | rw.rt_lvl_partial)</rule> <!-- runtime background is ready but conversion is not -->
          <rule>opts.put(prog.kw_no_attr,  rw.cvt_lvl_full    | rw.rt_lvl_partial)</rule> <!-- no-attr-space no conversion support, runtime supported by kw_attr -->
          <rule>opts.put(prog.kw_no_autov, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -163,7 +165,7 @@
          <rule>opts.put(prog.kw_view_as,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_wid_id,   rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule> <!-- runtime has only stub, the real widget id is not changing -->
          <rule>opts.put(prog.kw_width,    rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>opts.put(prog.kw_width_c,  rw.cvt_lvl_none    | rw.rt_lvl_full)</rule> <!-- runtime without conversion support on attribute level -->
+         <rule>opts.put(prog.kw_width_c,  rw.cvt_lvl_none    | rw.rt_lvl_full)</rule> <!-- runtime without conversion support on attribute level; most likely dead, needs review -->
          <rule>opts.put(prog.kw_width_p,  rw.cvt_lvl_none    | rw.rt_lvl_full)</rule> <!-- runtime without conversion support on attribute level -->
          <rule>opts.put(prog.kw_with,     rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          
@@ -175,7 +177,7 @@
          
          <rule>opts.put(prog.at,          rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_3d,       rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- undocumented but found in customer source -->
-         <rule>opts.put(prog.kw_assign,   rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- neither conversion none runtime support -->
+         <rule>opts.put(prog.kw_assign,   rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- neither conversion none runtime support; most likely dead, needs review -->
          <rule>opts.put(prog.kw_auto_ret, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_bgcolor,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_center,   rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- undocumented but found in customer source -->
@@ -244,7 +246,7 @@
          <rule>opts.put(prog.kw_view_as,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_wid_id,   rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule> <!-- runtime has only stub, the real widget id is not changing -->
          <rule>opts.put(prog.kw_width,    rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>opts.put(prog.kw_width_c,  rw.cvt_lvl_none    | rw.rt_lvl_full)</rule> <!-- runtime without conversion support on attribute level -->
+         <rule>opts.put(prog.kw_width_c,  rw.cvt_lvl_none    | rw.rt_lvl_full)</rule> <!-- runtime without conversion support on attribute level; most likely dead, needs review -->
          <rule>opts.put(prog.kw_width_p,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          
       </function>
@@ -263,10 +265,10 @@
          <rule>opts.put(prog.kw_auto_ret, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_bgcolor,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_blank,    rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- runtime support for text and fill-in widgets only -->
-         <rule>opts.put(prog.kw_case_sen, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported and should not be -->
+         <rule>opts.put(prog.kw_case_sen, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported and should not be; most likely dead, needs review -->
          <rule>opts.put(prog.kw_col,      rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_col_bgc,  rw.cvt_lvl_partial | rw.rt_lvl_partial)</rule> <!-- browse column bg color is supported for browse widget only -->
-         <rule>opts.put(prog.kw_col_cp,   rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported -->
+         <rule>opts.put(prog.kw_col_cp,   rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported; most likely dead, needs review -->
          <rule>opts.put(prog.kw_col_dc,   rw.cvt_lvl_full    | rw.rt_lvl_none)</rule> <!-- browse column dcolor is not supported at runtime level -->
          <rule>opts.put(prog.kw_col_fgc,  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- browse column fg color is not supported -->
          <rule>opts.put(prog.kw_col_font, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -308,14 +310,14 @@
          <rule>opts.put(prog.kw_marg_ex,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_menu_bar, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_menu_itm, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>opts.put(prog.kw_mou_ptr,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
+         <rule>opts.put(prog.kw_mou_ptr,  rw.cvt_lvl_none    | rw.rt_lvl_partial)</rule> <!-- runtime background is ready but conversion is not -->
          <rule>opts.put(prog.kw_no_attr,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_no_cv_3d, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_no_fill,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_no_focus, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_no_label, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_no_tab_s, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>opts.put(prog.kw_no_undo,  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported -->
+         <rule>opts.put(prog.kw_no_undo,  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported; most likely dead, needs review -->
          <rule>opts.put(prog.kw_not,      rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_passwd_f, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_pfcolor,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -338,7 +340,7 @@
          <rule>opts.put(prog.kw_tooltip,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_transpar, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_triggers, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
-         <rule>opts.put(prog.kw_ttcp,     rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported -->
+         <rule>opts.put(prog.kw_ttcp,     rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported; most likely dead, needs review -->
          <rule>opts.put(prog.kw_validate, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_view_as,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
          <rule>opts.put(prog.kw_when,     rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
@@ -397,18 +399,18 @@
          <!-- registered so that triggers using them convert, but no runtime exists for them;
               see the 20210121 history entry in ui/Keyboard.java -->
          <rule>uiEvents.put("DESELECT"           , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
-         <rule>uiEvents.put("OFF-END"            , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
-         <rule>uiEvents.put("OFF-HOME"           , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
+         <rule>uiEvents.put("OFF-END"            , rw.cvt_lvl_full | rw.rt_lvl_full)</rule>
+         <rule>uiEvents.put("OFF-HOME"           , rw.cvt_lvl_full | rw.rt_lvl_full)</rule>
          <rule>uiEvents.put("PARENT-WINDOW-CLOSE", rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
 
          <!-- COM/OCX drag and drop events; the native COM bridge has no connection point sink,
               so no COM event is ever delivered to converted code -->
-         <rule>uiEvents.put("OLE-COMPLETE-DRAG"  , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
-         <rule>uiEvents.put("OLE-DRAG-DROP"      , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
-         <rule>uiEvents.put("OLE-DRAG-OVER"      , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
-         <rule>uiEvents.put("OLE-GIVE-FEEDBACK"  , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
-         <rule>uiEvents.put("OLE-SET-DATA"       , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
-         <rule>uiEvents.put("OLE-START-DRAG"     , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
+         <rule>uiEvents.put("OLE-COMPLETE-DRAG"  , rw.gap(rw.cvt_lvl_full | rw.rt_lvl_none, null, "delivered only for FWD's emulated tree and tree-list OCX controls; a real COM control has no connection point sink"))</rule>
+         <rule>uiEvents.put("OLE-DRAG-DROP"      , rw.gap(rw.cvt_lvl_full | rw.rt_lvl_none, null, "delivered only for FWD's emulated tree and tree-list OCX controls; a real COM control has no connection point sink"))</rule>
+         <rule>uiEvents.put("OLE-DRAG-OVER"      , rw.gap(rw.cvt_lvl_full | rw.rt_lvl_none, null, "delivered only for FWD's emulated tree and tree-list OCX controls; a real COM control has no connection point sink"))</rule>
+         <rule>uiEvents.put("OLE-GIVE-FEEDBACK"  , rw.gap(rw.cvt_lvl_full | rw.rt_lvl_none, null, "delivered only for FWD's emulated tree and tree-list OCX controls; a real COM control has no connection point sink"))</rule>
+         <rule>uiEvents.put("OLE-SET-DATA"       , rw.gap(rw.cvt_lvl_full | rw.rt_lvl_none, null, "delivered only for FWD's emulated tree and tree-list OCX controls; a real COM control has no connection point sink"))</rule>
+         <rule>uiEvents.put("OLE-START-DRAG"     , rw.gap(rw.cvt_lvl_full | rw.rt_lvl_none, null, "delivered only for FWD's emulated tree and tree-list OCX controls; a real COM control has no connection point sink"))</rule>
 
       </function>
 

