Project

General

Profile

gap_marking_cleanup_1_11747a.diff

Greg Shah, 09/15/2026 02:59 PM

Download (66.4 KB)

View differences:

new/rules/gaps/control_flow.rules 2026-09-15 18:42:38 +0000
17 17
**                  based on node types.
18 18
** 006 GES 20260910 Updated class, method and constructor to have full support.
19 19
**     GES 20260914 Added OO4GL class def features.
20
**     GES 20260915 Corrected RUN SINGLE-RUN and SINGLETON, which are fully supported.
20 21
*/
21 22
-->
22 23

  
......
112 113
         <rule>run.put(prog.kw_on,                       rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
113 114
         <rule>run.put(prog.kw_persist,                  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
114 115
         <rule>run.put(prog.kw_set,                      rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
115
         <rule>run.put(prog.kw_sing_run,                 rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>
116
         <rule>run.put(prog.kw_singlton,                 rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>
116
         <rule>run.put(prog.kw_sing_run,                 rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
117
         <rule>run.put(prog.kw_singlton,                 rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
117 118
         <rule>run.put(prog.kw_value,                    rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
118 119
      </function>
119 120
   
new/rules/gaps/database.rules 2026-09-15 18:19:08 +0000
32 32
**     GES 20260914 Updated BIND runtime status.
33 33
**     GES 20260914 Added marking for the _usertablestat metadata table and its fields, and
34 34
**                  updated the marking for _myconnection._myconn-userid.
35
**     GES 20260915 Corrected stale none support levels for WHERE-clause built-ins, metaschema
36
**                  fields and COLUMN-CODEPAGE, and recorded the gap details behind them.
35 37
*/
36 38
 -->
37 39
 
......
147 149
         <rule>metaFields.put("_field._valmsg"                       , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
148 150
         <rule>metaFields.put("_field._field-rpos"                   , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule> <!-- same as POSITION -->
149 151
         <rule>metaFields.put("_field._order"                        , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
150
         <rule>metaFields.put("_field._field-physpos"                , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
152
         <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>
151 153
         <rule>metaFields.put("_field._extent"                       , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
152 154
         <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 -->
153 155
         <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 189
         <rule>metaFields.put("_myconnection._myconn-id"             , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
188 190
         <rule>metaFields.put("_myconnection._myconn-userid"         , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
189 191
         <rule>metaFields.put("_myconnection._myconn-pid"            , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
190
         <rule>metaFields.put("_myconnection._myconn-numseqbuffers"  , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
191
         <rule>metaFields.put("_myconnection._myconn-usedseqbuffers" , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
192
         <rule>metaFields.put("_myconnection._myconn-tenantid"       , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
192
         <rule>metaFields.put("_myconnection._myconn-numseqbuffers"  , rw.cvt_lvl_full      | rw.rt_lvl_stub)</rule>
193
         <rule>metaFields.put("_myconnection._myconn-usedseqbuffers" , rw.cvt_lvl_full      | rw.rt_lvl_stub)</rule>
194
         <rule>metaFields.put("_myconnection._myconn-tenantid"       , rw.cvt_lvl_full      | rw.rt_lvl_full)</rule>
193 195
         
194 196
         <rule>metaTables.put("_servers"                             , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
195 197
         <rule>metaFields.put("_servers._server-id"                  , rw.cvt_lvl_full      | rw.rt_lvl_none)</rule>
......
262 264
         <!-- UI-specific field-level options are handled by UI rules so they don't appear 
263 265
              here -->
264 266
         <rule>ttFieldOpts.put(prog.kw_case_sen, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
265
         <rule>ttFieldOpts.put(prog.kw_col_cp  , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>
267
         <rule>ttFieldOpts.put(prog.kw_col_cp  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
266 268
         <rule>ttFieldOpts.put(prog.kw_decimals, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
267 269
         <rule>ttFieldOpts.put(prog.kw_extent  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
268 270
         <rule>ttFieldOpts.put(prog.kw_init    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
486 488
         <rule>whereFuncs.put(prog.kw_int     , rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
487 489
         <rule>whereFuncs.put(prog.kw_int64   , rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
488 490
         <rule>whereFuncs.put(prog.kw_interval, rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
489
         <rule>whereFuncs.put(prog.kw_is_colcp, rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
491
         <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>
490 492
         <rule>whereFuncs.put(prog.kw_is_cp_fx, rw.cvt_lvl_full   | rw.rt_lvl_basic     )</rule>
491 493
         <rule>whereFuncs.put(prog.kw_is_db_mt, rw.cvt_lvl_full   | rw.rt_lvl_stub      )</rule>
492 494
         <rule>whereFuncs.put(prog.kw_is_lead , rw.cvt_lvl_full   | rw.rt_lvl_stub      )</rule>
......
503 505
         <rule>whereFuncs.put(prog.kw_lc      , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
504 506
         <rule>whereFuncs.put(prog.kw_ldbname , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
505 507
         <rule>whereFuncs.put(prog.kw_length  , rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
506
         <rule>whereFuncs.put(prog.kw_lib     , rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
508
         <rule>whereFuncs.put(prog.kw_lib     , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>
507 509
         <rule>whereFuncs.put(prog.kw_line_cnt, rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
508 510
         <rule>whereFuncs.put(prog.kw_load_pic, rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
509 511
         <rule>whereFuncs.put(prog.kw_locked  , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
......
546 548
         <rule>whereFuncs.put(prog.kw_raw     , rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
547 549
         <rule>whereFuncs.put(prog.kw_rec_len , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
548 550
         <rule>whereFuncs.put(prog.kw_recid   , rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
549
         <rule>whereFuncs.put(prog.kw_rejected, rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
551
         <rule>whereFuncs.put(prog.kw_rejected, rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>
550 552
         <rule>whereFuncs.put(prog.kw_replace , rw.cvt_lvl_full   | rw.rt_lvl_full      )</rule>
551 553
         <rule>whereFuncs.put(prog.kw_retry   , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
552 554
         <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 587
         <rule>whereFuncs.put(prog.kw_u_msg   , rw.cvt_lvl_full   | rw.rt_lvl_full_restr)</rule>  <!-- no server-side translation; evaluated client-side -->
586 588
         <rule>whereFuncs.put(prog.kw_unbox   , rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
587 589
         <rule>whereFuncs.put(prog.kw_url_deco, rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
588
         <rule>whereFuncs.put(prog.kw_url_enco, rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
590
         <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>
589 591
         <rule>whereFuncs.put(prog.kw_url_fld , rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
590 592
         <rule>whereFuncs.put(prog.kw_url_fldl, rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
591 593
         <rule>whereFuncs.put(prog.kw_url_fmt , rw.cvt_lvl_none   | rw.rt_lvl_none      )</rule>
new/rules/gaps/expressions.rules 2026-09-15 18:45:56 +0000
274 274
**     GES 20260914 Updated ERROR and SET-DB-CLIENT support levels.
275 275
**     CA  20260915 Marked as cvt_full and rt_stub: DUMP-LOGGING-NOW, INHERIT-BGCOLOR, INHERIT-FGCOLOR,
276 276
**                  EXECUTION-LOG, FRAME-SPACING.
277
**     GES 20260915 Corrected stale none support levels for built-in functions, attributes and
278
**                  methods, including the WebSpeed API, and recorded the gap details behind them.
277 279
*/
278 280
-->
279 281
 
......
443 445
         <rule>funcs.put(prog.kw_aud_enab, rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
444 446
         <rule>funcs.put(prog.kw_avail   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
445 447
         <rule>funcs.put(prog.kw_avg     , rw.cvt_lvl_basic   | rw.rt_lvl_basic)</rule> <!-- this is only available from embedded SQL -->
446
         <rule>funcs.put(prog.kw_avl_msgs, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed available-messages is notsupported -->
448
         <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 -->
447 449
         <rule>funcs.put(prog.kw_base64_d, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
448 450
         <rule>funcs.put(prog.kw_base64_e, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
449 451
         <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 456
         <rule>funcs.put(prog.kw_caps    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
455 457
         <rule>funcs.put(prog.kw_cast    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
456 458
         <rule>funcs.put(prog.kw_cbit    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
457
         <rule>funcs.put(prog.kw_check_am, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed check-agent-mode is notsupported -->
459
         <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 -->
458 460
         <rule>funcs.put(prog.kw_chr     , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
459 461
         <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 -->
460 462
         <rule>funcs.put(prog.kw_conn_ed , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
464 466
         <rule>funcs.put(prog.kw_cur_chg , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
465 467
         <rule>funcs.put(prog.kw_cur_res , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
466 468
         <rule>funcs.put(prog.kw_cur_val , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
467
         <rule>funcs.put(prog.kw_cvt_dt  , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed convert-datetime is notsupported -->
469
         <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 -->
468 470
         <rule>funcs.put(prog.kw_data_sm , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
469 471
         <rule>funcs.put(prog.kw_date    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
470 472
         <rule>funcs.put(prog.kw_date_tz , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
480 482
         <rule>funcs.put(prog.kw_dbvers  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
481 483
         <rule>funcs.put(prog.kw_dec     , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
482 484
         <rule>funcs.put(prog.kw_decrypt , rw.gap(rw.group_base_lang, rw.cvt_lvl_full    | rw.rt_lvl_partial))</rule> <!-- decrypt -->
483
         <rule>funcs.put(prog.kw_del_cook, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed delete-cookie is notsupported -->
485
         <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 -->
484 486
         <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 -->
485 487
         <rule>funcs.put(prog.kw_dyn_curv, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
486 488
         <rule>funcs.put(prog.kw_dyn_enum, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
499 501
         <rule>funcs.put(prog.kw_fill    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
500 502
         <rule>funcs.put(prog.kw_first   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
501 503
         <rule>funcs.put(prog.kw_first_of, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
502
         <rule>funcs.put(prog.kw_fmt_dt  , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed format-datetime is notsupported -->
504
         <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 -->
503 505
         <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 -->
504 506
         <rule>funcs.put(prog.kw_fr_down , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
505 507
         <rule>funcs.put(prog.kw_fr_line , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
510 512
         <rule>funcs.put(prog.kw_get_bits, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
511 513
         <rule>funcs.put(prog.kw_get_byte, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
512 514
         <rule>funcs.put(prog.kw_get_byts, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
513
         <rule>funcs.put(prog.kw_get_cfg , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-config is notsupported -->
514
         <rule>funcs.put(prog.kw_get_cgi , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-cgi is notsupported -->
515
         <rule>funcs.put(prog.kw_get_cgl , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-cgi-long is notsupported -->
515
         <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 -->
516
         <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 -->
517
         <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 -->
516 518
         <rule>funcs.put(prog.kw_get_cll , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- get-collation is not supported -->
517 519
         <rule>funcs.put(prog.kw_get_clnt, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!--  GET-CLIENT -->
518 520
         <rule>funcs.put(prog.kw_get_codp, rw.gap(rw.group_base_lang, rw.cvt_lvl_full    | rw.rt_lvl_basic))</rule>
519 521
         <rule>funcs.put(prog.kw_get_coll, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- get-collations is not supported -->
520
         <rule>funcs.put(prog.kw_get_cook, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-cookie is notsupported -->
522
         <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 -->
521 523
         <rule>funcs.put(prog.kw_get_dbcl, rw.cvt_lvl_full    | rw.rt_lvl_partial)</rule> <!-- get-db-client -->
522 524
         <rule>funcs.put(prog.kw_get_dbl , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
523
         <rule>funcs.put(prog.kw_get_fld , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-field is notsupported -->
525
         <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 -->
524 526
         <rule>funcs.put(prog.kw_get_flt , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
525 527
         <rule>funcs.put(prog.kw_get_i64 , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
526 528
         <rule>funcs.put(prog.kw_get_lic , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- undocumented get-license() -->
527
         <rule>funcs.put(prog.kw_get_l_v , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-long-value is notsupported -->
529
         <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 -->
528 530
         <rule>funcs.put(prog.kw_get_long, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
529
         <rule>funcs.put(prog.kw_get_msgg, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-message-groups is notsupported -->
530
         <rule>funcs.put(prog.kw_get_msgs, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-messages is notsupported -->
531
         <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 -->
532
         <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 -->
531 533
         <rule>funcs.put(prog.kw_get_ptr , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
532 534
         <rule>funcs.put(prog.kw_get_shrt, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
533 535
         <rule>funcs.put(prog.kw_get_str , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
534 536
         <rule>funcs.put(prog.kw_get_sz  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
535
         <rule>funcs.put(prog.kw_get_u_f , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-user-field is notsupported -->
537
         <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 -->
536 538
         <rule>funcs.put(prog.kw_get_ul  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
537 539
         <rule>funcs.put(prog.kw_get_usht, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
538
         <rule>funcs.put(prog.kw_get_val , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed get-value is notsupported -->
540
         <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 -->
539 541
         <rule>funcs.put(prog.kw_guid    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
540 542
         <rule>funcs.put(prog.kw_handle  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
541 543
         <rule>funcs.put(prog.kw_hashcode, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
542 544
         <rule>funcs.put(prog.kw_hex_decd, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
543 545
         <rule>funcs.put(prog.kw_hex_encd, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
544
         <rule>funcs.put(prog.kw_hid_fld , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed hidden-field is notsupported -->
545
         <rule>funcs.put(prog.kw_hid_fldl, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed hidden-field-list is notsupported -->
546
         <rule>funcs.put(prog.kw_html_enc, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed html-encode is notsupported -->
546
         <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 -->
547
         <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 -->
548
         <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 -->
547 549
         <rule>funcs.put(prog.kw_hwnd    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- FWD extension, not real 4GL -->
548 550
         <rule>funcs.put(prog.kw_if      , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
549 551
         <rule>funcs.put(prog.kw_index   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
551 553
         <rule>funcs.put(prog.kw_int     , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
552 554
         <rule>funcs.put(prog.kw_int64   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
553 555
         <rule>funcs.put(prog.kw_interval, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
554
         <rule>funcs.put(prog.kw_is_colcp, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- is-column-codepage is not supported -->
556
         <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>
555 557
         <rule>funcs.put(prog.kw_is_cp_fx, rw.cvt_lvl_full    | rw.rt_lvl_basic)</rule>
556 558
         <rule>funcs.put(prog.kw_is_db_mt, rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule> <!-- Found in 11.7 reference --> 
557 559
         <rule>funcs.put(prog.kw_is_lead , rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule> <!-- is-lead-byte is not supported -->
......
568 570
         <rule>funcs.put(prog.kw_lc      , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
569 571
         <rule>funcs.put(prog.kw_ldbname , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
570 572
         <rule>funcs.put(prog.kw_length  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
571
         <rule>funcs.put(prog.kw_lib     , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- library is not supported -->
573
         <rule>funcs.put(prog.kw_lib     , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
572 574
         <rule>funcs.put(prog.kw_line_cnt, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
573 575
         <rule>funcs.put(prog.kw_load_pic, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
574 576
         <rule>funcs.put(prog.kw_locked  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
593 595
         <rule>funcs.put(prog.kw_num_ent , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
594 596
         <rule>funcs.put(prog.kw_num_res , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
595 597
         <rule>funcs.put(prog.kw_os_g_env, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
596
         <rule>funcs.put(prog.kw_out_hh  , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed output-http-header is notsupported -->
597
         <rule>funcs.put(prog.kw_out_msgs, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed output-messages is notsupported -->
598
         <rule>funcs.put(prog.kw_outputct, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed output-content-type is notsupported -->
598
         <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 -->
599
         <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 -->
600
         <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 -->
599 601
         <rule>funcs.put(prog.kw_p2j_rc  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- fwd-extension, not real 4gl! -->
600 602
         <rule>funcs.put(prog.kw_page_num, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
601 603
         <rule>funcs.put(prog.kw_page_sz , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
603 605
         <rule>funcs.put(prog.kw_progname, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
604 606
         <rule>funcs.put(prog.kw_prover  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- proversion runtime support is directory.xml config based -->
605 607
         <rule>funcs.put(prog.kw_qry_off , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
606
         <rule>funcs.put(prog.kw_que_msg , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed queue-message is notsupported -->
608
         <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 -->
607 609
         <rule>funcs.put(prog.kw_quoter  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
608 610
         <rule>funcs.put(prog.kw_r_index , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
609 611
         <rule>funcs.put(prog.kw_r_trim  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
611 613
         <rule>funcs.put(prog.kw_raw     , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- raw is not supported -->
612 614
         <rule>funcs.put(prog.kw_rec_len , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
613 615
         <rule>funcs.put(prog.kw_recid   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
614
         <rule>funcs.put(prog.kw_rejected, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- rejected is not supported -->
616
         <rule>funcs.put(prog.kw_rejected, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
615 617
         <rule>funcs.put(prog.kw_replace , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
616 618
         <rule>funcs.put(prog.kw_retry   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
617 619
         <rule>funcs.put(prog.kw_rgb_val , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
621 623
         <rule>funcs.put(prog.kw_sdbname , rw.cvt_lvl_full    | rw.rt_lvl_full_restr)</rule>
622 624
         <rule>funcs.put(prog.kw_search  , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
623 625
         <rule>funcs.put(prog.kw_seek    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
624
         <rule>funcs.put(prog.kw_set_cook, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed set-cookie is notsupported -->
626
         <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 -->
625 627
         <rule>funcs.put(prog.kw_set_dbcl, rw.gap(rw.group_database, rw.cvt_lvl_full    | rw.rt_lvl_full))</rule>
626 628
         <rule>funcs.put(prog.kw_set_lstk, rw.cvt_lvl_full    | rw.rt_lvl_basic)</rule> <!-- undocumented method on LAST-EVENT -->
627 629
         <rule>funcs.put(prog.kw_set_ptr , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
628
         <rule>funcs.put(prog.kw_set_u_f , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed set-user-field is notsupported -->
629
         <rule>funcs.put(prog.kw_set_w_s , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed setwebstate is notsupported -->
630
         <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 -->
631
         <rule>funcs.put(prog.kw_set_w_s , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
630 632
         <rule>funcs.put(prog.kw_setuser , rw.gap(rw.group_database, rw.cvt_lvl_full    | rw.rt_lvl_full_restr))</rule>
631 633
         <rule>funcs.put(prog.kw_sha1_dig, rw.gap(rw.group_base_lang, rw.cvt_lvl_full    | rw.rt_lvl_basic))</rule>
632 634
         <rule>funcs.put(prog.kw_sqrt    , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
649 651
         <rule>funcs.put(prog.kw_type_of , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
650 652
         <rule>funcs.put(prog.kw_u_msg   , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
651 653
         <rule>funcs.put(prog.kw_unbox   , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed unbox is notsupported -->
652
         <rule>funcs.put(prog.kw_url_deco, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed url-decode is notsupported -->
653
         <rule>funcs.put(prog.kw_url_enco, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed url-encode is notsupported -->
654
         <rule>funcs.put(prog.kw_url_fld , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed url-field is notsupported -->
655
         <rule>funcs.put(prog.kw_url_fldl, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed url-field-list is notsupported -->
656
         <rule>funcs.put(prog.kw_url_fmt , rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- webspeed url-format is notsupported -->
654
         <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>
655
         <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>
656
         <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 -->
657
         <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 -->
658
         <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 -->
657 659
         <rule>funcs.put(prog.kw_userid  , rw.gap(rw.group_database, rw.cvt_lvl_full    | rw.rt_lvl_full_restr))</rule>
658 660
         <rule>funcs.put(prog.kw_val_evt , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
659 661
         <rule>funcs.put(prog.kw_val_hnd , rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
784 786
         <rule>attrs.put(prog.kw_authblob, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- FWD extension, not real 4GL -->
785 787
         <rule>attrs.put(prog.kw_authen_f, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- authentication-failed -->
786 788
         <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 -->
787
         <rule>attrs.put(prog.kw_auto_del, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- auto-delete -->
789
         <rule>attrs.put(prog.kw_auto_del, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- auto-delete -->
788 790
         <rule>attrs.put(prog.kw_auto_d_x, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- auto-delete-xml -->
789 791
         <rule>attrs.put(prog.kw_auto_end, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
790 792
         <rule>attrs.put(prog.kw_auto_go , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
......
792 794
         <rule>attrs.put(prog.kw_auto_res, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
793 795
         <rule>attrs.put(prog.kw_auto_ret, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- auto-return -->
794 796
         <rule>attrs.put(prog.kw_auto_syn, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- auto-synchronize -->
795
         <rule>attrs.put(prog.kw_auto_val, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- auto-validate -->
797
         <rule>attrs.put(prog.kw_auto_val, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- auto-validate -->
796 798
         <rule>attrs.put(prog.kw_auto_zap, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
797 799
         <rule>attrs.put(prog.kw_avail   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
798 800
         <rule>attrs.put(prog.kw_avl_fmts, rw.gap(rw.group_ui, rw.cvt_lvl_none       | rw.rt_lvl_none))</rule> <!-- available-formats -->
......
801 803
         <rule>attrs.put(prog.kw_b4_table, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- before-table -->
802 804
         <rule>attrs.put(prog.kw_backgrnd, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
803 805
         <rule>attrs.put(prog.kw_base_ade, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- base-ade -->
804
         <rule>attrs.put(prog.kw_bas_logg, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- basic-logging -->
806
         <rule>attrs.put(prog.kw_bas_logg, rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- basic-logging -->
805 807
         <rule>attrs.put(prog.kw_batch_mo, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
806 808
         <rule>attrs.put(prog.kw_batch_sz, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- batch-size -->
807 809
         <rule>attrs.put(prog.kw_beg_ev_g, rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- begin-event-group -->
......
1041 1043
         <rule>attrs.put(prog.kw_end_ev_g, rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- end-event-group -->
1042 1044
         <rule>attrs.put(prog.kw_end_f_d , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- end-file-drop -->
1043 1045
         <rule>attrs.put(prog.kw_end_user, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- end-user-prompt -->
1044
         <rule>attrs.put(prog.kw_ent_ex_l, rw.cvt_lvl_full       | rw.rt_lvl_none)</rule> <!-- entity-expansion-limit -->
1046
         <rule>attrs.put(prog.kw_ent_ex_l, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- entity-expansion-limit -->
1045 1047
         <rule>attrs.put(prog.kw_entry   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1046 1048
         <rule>attrs.put(prog.kw_ent_tlst, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- entry-types-list -->
1047 1049
         <rule>attrs.put(prog.kw_e_proc_c, rw.cvt_lvl_full       | rw.rt_lvl_partial)</rule> <!-- not implemented in DataSets-->
......
1056 1058
         <rule>attrs.put(prog.kw_evt_type, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1057 1059
         <rule>attrs.put(prog.kw_excl_id , rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- exclusive-id -->
1058 1060
         <rule>attrs.put(prog.kw_exec_log, rw.gap(rw.group_base_lang, rw.cvt_lvl_full       | rw.rt_lvl_stub))</rule> <!-- execution-log -->
1059
         <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 -->
1061
         <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 -->
1060 1062
         <rule>attrs.put(prog.kw_expandbl, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1061 1063
         <rule>attrs.put(prog.kw_expand  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1062 1064
         <rule>attrs.put(prog.kw_export  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
......
1226 1228
         <rule>attrs.put(prog.kw_idephwnd, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- ide-parent-hwnd -->
1227 1229
         <rule>attrs.put(prog.kw_idewntyp, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- ide-window-type -->
1228 1230
         <rule>attrs.put(prog.kw_idx_info, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1229
         <rule>attrs.put(prog.kw_ign_cmod, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- ignore-current-modified -->
1231
         <rule>attrs.put(prog.kw_ign_cmod, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- ignore-current-modified -->
1230 1232
         <rule>attrs.put(prog.kw_image   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1231 1233
         <rule>attrs.put(prog.kw_img_down, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1232 1234
         <rule>attrs.put(prog.kw_img_ins , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
......
1345 1347
         <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 -->
1346 1348
         <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 -->
1347 1349
         <rule>attrs.put(prog.kw_mark_new, rw.gap(rw.group_database, rw.cvt_lvl_full       | rw.rt_lvl_stub))</rule>
1348
         <rule>attrs.put(prog.kw_mark_rs , rw.gap(rw.group_database, rw.cvt_lvl_full       | rw.rt_lvl_none))</rule>
1350
         <rule>attrs.put(prog.kw_mark_rs , rw.gap(rw.group_database, rw.cvt_lvl_full       | rw.rt_lvl_full))</rule>
1349 1351
         <rule>attrs.put(prog.kw_max_btn , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- max-button -->
1350 1352
         <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 -->
1351 1353
         <rule>attrs.put(prog.kw_max_d_g , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
......
1369 1371
         <rule>attrs.put(prog.kw_min_cwpx, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- min-column-width-pixels -->
1370 1372
         <rule>attrs.put(prog.kw_min_h_c , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- min-height-chars -->
1371 1373
         <rule>attrs.put(prog.kw_min_h_p , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1372
         <rule>attrs.put(prog.kw_min_schm, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- min-schema-marshal -->
1374
         <rule>attrs.put(prog.kw_min_schm, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- min-schema-marshal -->
1373 1375
         <rule>attrs.put(prog.kw_min_val , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1374 1376
         <rule>attrs.put(prog.kw_min_w_c , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1375 1377
         <rule>attrs.put(prog.kw_min_w_p , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1376 1378
         <rule>attrs.put(prog.kw_mnemon  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- FWD extension, not real 4GL! -->
1377 1379
         <rule>attrs.put(prog.kw_modified, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1378
         <rule>attrs.put(prog.kw_mou_ptr , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1380
         <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>
1379 1381
         <rule>attrs.put(prog.kw_mov_2_b , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1380 1382
         <rule>attrs.put(prog.kw_mov_2eof, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1381 1383
         <rule>attrs.put(prog.kw_mov_2_t , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
......
1414 1416
         <rule>attrs.put(prog.kw_no_focus, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1415 1417
         <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-->
1416 1418
         <rule>attrs.put(prog.kw_normalze, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1417
         <rule>attrs.put(prog.kw_no_sch_m, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- no-schema-marshal -->
1419
         <rule>attrs.put(prog.kw_no_sch_m, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- no-schema-marshal -->
1418 1420
         <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 -->
1419 1421
         <rule>attrs.put(prog.kw_num_2rtn, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- num-to-retain -->
1420 1422
         <rule>attrs.put(prog.kw_num_buff, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
......
1545 1547
         <rule>attrs.put(prog.kw_repos   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- reposition --> 
1546 1548
         <rule>attrs.put(prog.kw_repos_f , rw.gap(rw.group_database, rw.cvt_lvl_full       | rw.rt_lvl_basic))</rule> <!-- error reporting TODO -->
1547 1549
         <rule>attrs.put(prog.kw_rep_stxt, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1548
         <rule>attrs.put(prog.kw_req_info, rw.gap(rw.group_base_lang, rw.cvt_lvl_none       | rw.rt_lvl_full))</rule> <!-- request-info -->
1549
         <rule>attrs.put(prog.kw_rsp_info, rw.gap(rw.group_base_lang, rw.cvt_lvl_none       | rw.rt_lvl_full))</rule> <!-- response-info -->
1550
         <rule>attrs.put(prog.kw_req_info, rw.gap(rw.group_base_lang, rw.cvt_lvl_full       | rw.rt_lvl_full))</rule> <!-- request-info -->
1551
         <rule>attrs.put(prog.kw_rsp_info, rw.gap(rw.group_base_lang, rw.cvt_lvl_full       | rw.rt_lvl_full))</rule> <!-- response-info -->
1550 1552
         <rule>attrs.put(prog.kw_reset   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1551 1553
         <rule>attrs.put(prog.kw_resizabl, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- resizable attribute is not complete for frame widget -->
1552 1554
         <rule>attrs.put(prog.kw_resize  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>   
......
1658 1660
         <rule>attrs.put(prog.kw_side_l_h, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1659 1661
         <rule>attrs.put(prog.kw_sing_run, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- single-run -->
1660 1662
         <rule>attrs.put(prog.kw_singlton, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- singleton -->
1661
         <rule>attrs.put(prog.kw_skip_d_r, rw.cvt_lvl_full       | rw.rt_lvl_none)</rule>
1663
         <rule>attrs.put(prog.kw_skip_d_r, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1662 1664
         <rule>attrs.put(prog.kw_smal_ico, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- small-icon -->
1663 1665
         <rule>attrs.put(prog.kw_smal_ttl, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- small-title -->
1664 1666
         <rule>attrs.put(prog.kw_soap_f_a, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
......
1692 1694
         <rule>attrs.put(prog.kw_stop_prs, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1693 1695
         <rule>attrs.put(prog.kw_stream  , rw.cvt_lvl_full       | rw.rt_lvl_partial)</rule> <!-- stream -->
1694 1696
         <rule>attrs.put(prog.kw_strict  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1695
         <rule>attrs.put(prog.kw_stric_er, rw.cvt_lvl_full       | rw.rt_lvl_none)</rule> <!-- strict-entity-resolution -->
1697
         <rule>attrs.put(prog.kw_stric_er, rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- strict-entity-resolution -->
1696 1698
         <rule>attrs.put(prog.kw_str_val , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1697 1699
         <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 -->
1698 1700
         <rule>attrs.put(prog.kw_sub_m_h , rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- undocumented sub-menu-help -->
......
1708 1710
         <rule>attrs.put(prog.kw_synchron, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- buffer synchronize method-->
1709 1711
         <rule>attrs.put(prog.kw_sys_a_b , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1710 1712
         <rule>attrs.put(prog.kw_sys_id  , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1711
         <rule>attrs.put(prog.kw_tab_crcl, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- table-crc-list -->
1713
         <rule>attrs.put(prog.kw_tab_crcl, rw.cvt_lvl_full       | rw.rt_lvl_stub)</rule> <!-- table-crc-list -->
1712 1714
         <rule>attrs.put(prog.kw_tab_hand, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1713 1715
         <rule>attrs.put(prog.kw_table   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1714 1716
         <rule>attrs.put(prog.kw_tab_list, rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- table-list -->
......
1764 1766
         <rule>attrs.put(prog.kw_value   , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule> <!-- value -->
1765 1767
         <rule>attrs.put(prog.kw_val_xml , rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- validate-xml -->
1766 1768
         <rule>attrs.put(prog.kw_version , rw.cvt_lvl_full       | rw.rt_lvl_full)</rule>
1767
         <rule>attrs.put(prog.kw_view_as , rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- view-as -->
1769
         <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 -->
1768 1770
         <rule>attrs.put(prog.kw_view_fcr, rw.cvt_lvl_none       | rw.rt_lvl_none)</rule> <!-- view-first-column-on-reopen -->
1769 1771
         <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 -->
1770 1772
         <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 2080
         <rule>com.put(prog.com_invocation, rw.cvt_lvl_full | rw.rt_lvl_basic)</rule>
2079 2081
         <rule>com.put(prog.com_method    , rw.cvt_lvl_full | rw.rt_lvl_basic)</rule>
2080 2082
         <rule>com.put(prog.com_property  , rw.cvt_lvl_full | rw.rt_lvl_basic)</rule>
2081
         <rule>com.put(prog.kw_by_ptr     , rw.cvt_lvl_none | rw.rt_lvl_none)</rule>
2082
         <rule>com.put(prog.kw_by_var_p   , rw.cvt_lvl_none | rw.rt_lvl_none)</rule>
2083
         <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>
2084
         <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>
2083 2085
      </function>
2084 2086
      
2085 2087
      <!-- handle-based methods or attributes -->
......
2115 2117
         <rule>map.put(prog.kw_coll_all, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2116 2118
         <rule>map.put(prog.kw_cre_imag, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2117 2119
         <rule>map.put(prog.kw_creat_sn, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2118
         <rule>map.put(prog.kw_crt_mimg, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2120
         <rule>map.put(prog.kw_crt_mimg, rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
2119 2121
         <rule>map.put(prog.kw_dclk_exp, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2120
         <rule>map.put(prog.kw_drag_nod, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2121
         <rule>map.put(prog.kw_drag_ovr, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2122
         <rule>map.put(prog.kw_drag_nod, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2123
         <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>
2122 2124
         <rule>map.put(prog.kw_ens_n_v,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2123 2125
         <rule>map.put(prog.kw_exp_n_ic, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2124 2126
         <rule>map.put(prog.kw_exp_node, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
2138 2140
         <rule>map.put(prog.kw_fs_node,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2139 2141
         <rule>map.put(prog.kw_fv_node,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2140 2142
         <rule>map.put(prog.kw_get_fcn,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2141
         <rule>map.put(prog.kw_get_n_at, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2143
         <rule>map.put(prog.kw_get_n_at, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2142 2144
         <rule>map.put(prog.kw_get_n_bg, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2143 2145
         <rule>map.put(prog.kw_get_n_fg, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2144 2146
         <rule>map.put(prog.kw_get_n_hc, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
2146 2148
         <rule>map.put(prog.kw_get_nlev, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2147 2149
         <rule>map.put(prog.kw_get_nsn,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2148 2150
         <rule>map.put(prog.kw_get_ntxt, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2149
         <rule>map.put(prog.kw_get_nvv,  rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2151
         <rule>map.put(prog.kw_get_nvv, rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
2150 2152
         <rule>map.put(prog.kw_get_parn, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2151 2153
         <rule>map.put(prog.kw_get_psn,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2152 2154
         <rule>map.put(prog.kw_get_snc,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2153 2155
         <rule>map.put(prog.kw_get_tnod, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2154
         <rule>map.put(prog.kw_indent,   rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2155
         <rule>map.put(prog.kw_is_msel,  rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2156
         <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>
2157
         <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>
2156 2158
         <rule>map.put(prog.kw_is_n_exp, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2157
         <rule>map.put(prog.kw_n_height, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2159
         <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>
2158 2160
         <rule>map.put(prog.kw_n_key_id, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2159
         <rule>map.put(prog.kw_node_bld, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2161
         <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>
2160 2162
         <rule>map.put(prog.kw_node_cnt, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2161 2163
         <rule>map.put(prog.kw_node_exp, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2162 2164
         <rule>map.put(prog.kw_node_ico, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
2170 2172
         <rule>map.put(prog.kw_rem_node, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2171 2173
         <rule>map.put(prog.kw_scr_nodc, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2172 2174
         <rule>map.put(prog.kw_scr_ntop, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2173
         <rule>map.put(prog.kw_scr_vert, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2174
         <rule>map.put(prog.kw_scr_wlns, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2175
         <rule>map.put(prog.kw_scr_vert, rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
2176
         <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>
2175 2177
         <rule>map.put(prog.kw_sel_nid,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2176 2178
         <rule>map.put(prog.kw_sel_nkey, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2177 2179
         <rule>map.put(prog.kw_sel_node, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2178 2180
         <rule>map.put(prog.kw_sel_sfvn, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2179
         <rule>map.put(prog.kw_set_msel, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2181
         <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>
2180 2182
         <rule>map.put(prog.kw_set_n_bg, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2181 2183
         <rule>map.put(prog.kw_set_n_fg, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2182 2184
         <rule>map.put(prog.kw_set_n_hc, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
2184 2186
         <rule>map.put(prog.kw_set_snc,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2185 2187
         <rule>map.put(prog.kw_set_tn_i, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2186 2188
         <rule>map.put(prog.kw_show_but, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2187
         <rule>map.put(prog.kw_textedit, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2189
         <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>
2188 2190
         <rule>map.put(prog.kw_tnod_val, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2189 2191
         <rule>map.put(prog.kw_trig_nod, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2190 2192
         <rule>map.put(prog.kw_trig_col, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
2195 2197
      <!-- TABSET attributes and methods -->
2196 2198
      <function name="addTabsetAttrsMeths">
2197 2199
         <parameter name="map" type="java.util.Map" />
2198
         <rule>map.put(prog.kw_add_tab,  rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2199
         <rule>map.put(prog.kw_clr_tabs, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2200
         <rule>map.put(prog.kw_curr_tab, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2201
         <rule>map.put(prog.kw_set_f_d,  rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2202
         <rule>map.put(prog.kw_tabs,     rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2200
         <rule>map.put(prog.kw_add_tab, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2201
         <rule>map.put(prog.kw_clr_tabs, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2202
         <rule>map.put(prog.kw_curr_tab, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2203
         <rule>map.put(prog.kw_set_f_d, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2204
         <rule>map.put(prog.kw_tabs, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2203 2205
      </function>
2204 2206

  
2205 2207
      <!-- TREELIST attributes and methods -->
......
2233 2235
         <rule>map.put(prog.kw_sor_c_c,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2234 2236
         <rule>map.put(prog.kw_sor_cols, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2235 2237
         <rule>map.put(prog.kw_tho_sep,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2236
         <rule>map.put(prog.kw_all_dndo, rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2237
         <rule>map.put(prog.kw_all_dnd,  rw.cvt_lvl_full    | rw.rt_lvl_none)</rule>
2238
         <rule>map.put(prog.kw_all_dndo, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
2239
         <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>
2238 2240
      </function>
2239 2241

  
2240 2242
      <!-- HTML-BROWSER attributes and methods -->
new/rules/gaps/input_output.rules 2026-09-15 18:41:31 +0000
5 5
** Module   : input_output.rules
6 6
** Abstract : rules for encoding support levels of I/O constructs
7 7
**
8
** Copyright (c) 2018-2022, Golden Code Development Corporation.
8
** Copyright (c) 2018-2026, Golden Code Development Corporation.
9 9
**
10 10
** _#_ _I_ __Date__ ________________________________Description_________________________________      
11 11
** 001 GES 20181108 First version.
12 12
** 002 GES 20191109 Updates for some I/O options.
13 13
** 003 GES 20220425 More updates for I/O options.
14
** 004 GES 20260915 Corrected the LOB-DIR and MAP option support levels, which are implemented.
14 15
*/
15 16
 -->
16 17
 
......
87 88
         <rule>opts.put(prog.kw_font,                     rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- FWD extension -->
88 89
         <rule>opts.put(prog.kw_echo,                     rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
89 90
         <rule>opts.put(prog.kw_keep_msg,                 rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
90
         <rule>opts.put(prog.kw_lob_dir,                  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>
91
         <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>
91 92
         <rule>opts.put(prog.kw_landscap,                 rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
92
         <rule>opts.put(prog.kw_map,                      rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>
93
         <rule>opts.put(prog.kw_map,                      rw.cvt_lvl_full    | rw.rt_lvl_stub)</rule>
93 94
         <rule>opts.put(prog.kw_no_cvt,                   rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
94 95
         <rule>opts.put(prog.kw_no_echo,                  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
95 96
         <rule>opts.put(prog.kw_no_error,                 rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
102 103
      </function>
103 104
   
104 105
  </func-library>
105
</rule-set>
106
</rule-set>
new/rules/gaps/user_interface.rules 2026-09-15 18:19:09 +0000
26 26
** 012 EVL 20230821 Changed runtime status for STREAM-IO, SCREEN-IO frame definition options.
27 27
** 013 GES 20260910 Updated browse view-as option.
28 28
**     GES 20260910 Added UI event gap marking.
29
**     GES 20260915 Corrected stale none support levels for UI events and frame, browse and
30
**                  widget options, and flagged the entries which look unreachable.
29 31
*/
30 32
 -->
31 33
 
......
113 115
         <rule>opts.put(prog.kw_columns,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
114 116
         <rule>opts.put(prog.kw_ctx_h,    rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- context-help option -->
115 117
         <rule>opts.put(prog.kw_ctx_h_f,  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- context-help-file option is not supported -->
116
         <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 -->
118
         <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>
117 119
         <rule>opts.put(prog.kw_dcolor,   rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
118 120
         <rule>opts.put(prog.kw_deflt_bn, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
119 121
         <rule>opts.put(prog.kw_down,     rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
126 128
         <rule>opts.put(prog.kw_inh_fgc,  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- inherit-fgcolor option -->
127 129
         <rule>opts.put(prog.kw_keep_tab, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
128 130
         <rule>opts.put(prog.kw_lab_dc,   rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- undocumented but allowed frame option -->
129
         <rule>opts.put(prog.kw_lab_font, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule>  <!-- undocumented but allowed frame option -->
131
         <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 -->
130 132
         <rule>opts.put(prog.kw_mou_ptr,  rw.cvt_lvl_none    | rw.rt_lvl_partial)</rule> <!-- runtime background is ready but conversion is not -->
131 133
         <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 -->
132 134
         <rule>opts.put(prog.kw_no_autov, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
163 165
         <rule>opts.put(prog.kw_view_as,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
164 166
         <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 -->
165 167
         <rule>opts.put(prog.kw_width,    rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
166
         <rule>opts.put(prog.kw_width_c,  rw.cvt_lvl_none    | rw.rt_lvl_full)</rule> <!-- runtime without conversion support on attribute level -->
168
         <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 -->
167 169
         <rule>opts.put(prog.kw_width_p,  rw.cvt_lvl_none    | rw.rt_lvl_full)</rule> <!-- runtime without conversion support on attribute level -->
168 170
         <rule>opts.put(prog.kw_with,     rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
169 171
         
......
175 177
         
176 178
         <rule>opts.put(prog.at,          rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
177 179
         <rule>opts.put(prog.kw_3d,       rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- undocumented but found in customer source -->
178
         <rule>opts.put(prog.kw_assign,   rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- neither conversion none runtime support -->
180
         <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 -->
179 181
         <rule>opts.put(prog.kw_auto_ret, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
180 182
         <rule>opts.put(prog.kw_bgcolor,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
181 183
         <rule>opts.put(prog.kw_center,   rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- undocumented but found in customer source -->
......
244 246
         <rule>opts.put(prog.kw_view_as,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
245 247
         <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 -->
246 248
         <rule>opts.put(prog.kw_width,    rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
247
         <rule>opts.put(prog.kw_width_c,  rw.cvt_lvl_none    | rw.rt_lvl_full)</rule> <!-- runtime without conversion support on attribute level -->
249
         <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 -->
248 250
         <rule>opts.put(prog.kw_width_p,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
249 251
         
250 252
      </function>
......
263 265
         <rule>opts.put(prog.kw_auto_ret, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
264 266
         <rule>opts.put(prog.kw_bgcolor,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
265 267
         <rule>opts.put(prog.kw_blank,    rw.cvt_lvl_full    | rw.rt_lvl_full)</rule> <!-- runtime support for text and fill-in widgets only -->
266
         <rule>opts.put(prog.kw_case_sen, rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported and should not be -->
268
         <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 -->
267 269
         <rule>opts.put(prog.kw_col,      rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
268 270
         <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 -->
269
         <rule>opts.put(prog.kw_col_cp,   rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported -->
271
         <rule>opts.put(prog.kw_col_cp,   rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported; most likely dead, needs review -->
270 272
         <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 -->
271 273
         <rule>opts.put(prog.kw_col_fgc,  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- browse column fg color is not supported -->
272 274
         <rule>opts.put(prog.kw_col_font, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
308 310
         <rule>opts.put(prog.kw_marg_ex,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
309 311
         <rule>opts.put(prog.kw_menu_bar, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
310 312
         <rule>opts.put(prog.kw_menu_itm, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
311
         <rule>opts.put(prog.kw_mou_ptr,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
313
         <rule>opts.put(prog.kw_mou_ptr,  rw.cvt_lvl_none    | rw.rt_lvl_partial)</rule> <!-- runtime background is ready but conversion is not -->
312 314
         <rule>opts.put(prog.kw_no_attr,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
313 315
         <rule>opts.put(prog.kw_no_cv_3d, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
314 316
         <rule>opts.put(prog.kw_no_fill,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
315 317
         <rule>opts.put(prog.kw_no_focus, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
316 318
         <rule>opts.put(prog.kw_no_label, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
317 319
         <rule>opts.put(prog.kw_no_tab_s, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
318
         <rule>opts.put(prog.kw_no_undo,  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported -->
320
         <rule>opts.put(prog.kw_no_undo,  rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported; most likely dead, needs review -->
319 321
         <rule>opts.put(prog.kw_not,      rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
320 322
         <rule>opts.put(prog.kw_passwd_f, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
321 323
         <rule>opts.put(prog.kw_pfcolor,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
338 340
         <rule>opts.put(prog.kw_tooltip,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
339 341
         <rule>opts.put(prog.kw_transpar, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
340 342
         <rule>opts.put(prog.kw_triggers, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
341
         <rule>opts.put(prog.kw_ttcp,     rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported -->
343
         <rule>opts.put(prog.kw_ttcp,     rw.cvt_lvl_none    | rw.rt_lvl_none)</rule> <!-- not supported; most likely dead, needs review -->
342 344
         <rule>opts.put(prog.kw_validate, rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
343 345
         <rule>opts.put(prog.kw_view_as,  rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
344 346
         <rule>opts.put(prog.kw_when,     rw.cvt_lvl_full    | rw.rt_lvl_full)</rule>
......
397 399
         <!-- registered so that triggers using them convert, but no runtime exists for them;
398 400
              see the 20210121 history entry in ui/Keyboard.java -->
399 401
         <rule>uiEvents.put("DESELECT"           , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
400
         <rule>uiEvents.put("OFF-END"            , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
401
         <rule>uiEvents.put("OFF-HOME"           , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
402
         <rule>uiEvents.put("OFF-END"            , rw.cvt_lvl_full | rw.rt_lvl_full)</rule>
403
         <rule>uiEvents.put("OFF-HOME"           , rw.cvt_lvl_full | rw.rt_lvl_full)</rule>
402 404
         <rule>uiEvents.put("PARENT-WINDOW-CLOSE", rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
403 405

  
404 406
         <!-- COM/OCX drag and drop events; the native COM bridge has no connection point sink,
405 407
              so no COM event is ever delivered to converted code -->
406
         <rule>uiEvents.put("OLE-COMPLETE-DRAG"  , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
407
         <rule>uiEvents.put("OLE-DRAG-DROP"      , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
408
         <rule>uiEvents.put("OLE-DRAG-OVER"      , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
409
         <rule>uiEvents.put("OLE-GIVE-FEEDBACK"  , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
410
         <rule>uiEvents.put("OLE-SET-DATA"       , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
411
         <rule>uiEvents.put("OLE-START-DRAG"     , rw.cvt_lvl_full | rw.rt_lvl_none)</rule>
408
         <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>
409
         <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>
410
         <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>
411
         <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>
412
         <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>
413
         <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>
412 414

  
413 415
      </function>
414 416