@portll/cobolwork 0.0.1 → 0.2.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/LICENSE +661 -0
  2. package/LICENSING.md +93 -0
  3. package/NOTICE +9 -0
  4. package/README.md +325 -3
  5. package/THIRD-PARTY-NOTICES.md +118 -0
  6. package/bin/cobolwork.mjs +354 -0
  7. package/lib/advisories.mjs +133 -0
  8. package/lib/baseline.mjs +154 -0
  9. package/lib/bms.mjs +453 -0
  10. package/lib/build.mjs +402 -0
  11. package/lib/capabilities.mjs +79 -0
  12. package/lib/cics-commands.mjs +281 -0
  13. package/lib/compliance.mjs +81 -0
  14. package/lib/consequence.mjs +139 -0
  15. package/lib/control.mjs +1515 -0
  16. package/lib/csd.mjs +77 -0
  17. package/lib/dataflow.mjs +1506 -0
  18. package/lib/diff.mjs +344 -0
  19. package/lib/explain.mjs +145 -0
  20. package/lib/gate.mjs +383 -0
  21. package/lib/index.mjs +6 -0
  22. package/lib/inventory.mjs +79 -0
  23. package/lib/jcl.mjs +478 -0
  24. package/lib/kernel/findings.mjs +94 -0
  25. package/lib/kernel/identity.mjs +216 -0
  26. package/lib/kernel/memory.mjs +217 -0
  27. package/lib/kernel/printable.mjs +6 -0
  28. package/lib/kernel/registry.mjs +79 -0
  29. package/lib/kernel/ruleset.mjs +72 -0
  30. package/lib/kernel/source-tree.mjs +159 -0
  31. package/lib/kev.mjs +27 -0
  32. package/lib/options.mjs +512 -0
  33. package/lib/packs.mjs +148 -0
  34. package/lib/parser.mjs +2055 -0
  35. package/lib/policy.mjs +163 -0
  36. package/lib/precompile-cics.mjs +169 -0
  37. package/lib/precompile.mjs +544 -0
  38. package/lib/reach.mjs +122 -0
  39. package/lib/revision.json +1 -0
  40. package/lib/revision.mjs +89 -0
  41. package/lib/sarif.mjs +222 -0
  42. package/lib/scan.mjs +272 -0
  43. package/lib/sets/build.mjs +234 -0
  44. package/lib/sets/cics.mjs +306 -0
  45. package/lib/sets/compile.mjs +187 -0
  46. package/lib/sets/copybook.mjs +174 -0
  47. package/lib/sets/flow.mjs +487 -0
  48. package/lib/sets/hidden.mjs +216 -0
  49. package/lib/sets/jcl.mjs +440 -0
  50. package/lib/sets/log.mjs +406 -0
  51. package/lib/sets/opaque.mjs +102 -0
  52. package/lib/sets/priv.mjs +322 -0
  53. package/lib/sets/recon.mjs +267 -0
  54. package/lib/sets/vendor.mjs +117 -0
  55. package/lib/sets/web.mjs +327 -0
  56. package/lib/site.mjs +164 -0
  57. package/lib/sources.mjs +156 -0
  58. package/lib/tui/app.mjs +325 -0
  59. package/lib/tui/keys.mjs +39 -0
  60. package/lib/tui/model.mjs +96 -0
  61. package/lib/tui/run.mjs +38 -0
  62. package/lib/tui/screen.mjs +59 -0
  63. package/lib/tui/terminal.mjs +46 -0
  64. package/lib/utilities.mjs +296 -0
  65. package/lib/version.mjs +15 -0
  66. package/lib/words.mjs +318 -0
  67. package/package.json +45 -6
  68. package/rules/advisories.json +264 -0
  69. package/rules/compliance-dora.json +2151 -0
  70. package/rules/compliance-ffiec.json +2134 -0
  71. package/rules/compliance-nist80053.json +2134 -0
  72. package/rules/gitleaks-mainframe.toml +57 -0
  73. package/rules/kev-ids.json +1729 -0
  74. package/rules/packs/broadcom.json +124 -0
  75. package/rules/packs/connectdirect.json +116 -0
  76. package/rules/packs/controlm.json +114 -0
  77. package/rules/system-layouts.json +28 -0
  78. package/schema/cobolwork-coverage.schema.json +65 -0
  79. package/schema/cobolwork.policy.schema.json +54 -0
@@ -0,0 +1,281 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later
2
+ // The CICS commands lib/precompile.mjs translates, with the direction each option's data moves, and
3
+ // the numbers DFHRESP and DFHVALUE stand for.
4
+ //
5
+ // GENERATED - do not edit by hand. Run `node diag/generate-precompile.mjs` to rebuild it from
6
+ // provenance/precompile.json, which names the IBM document and page behind each entry, and from
7
+ // provenance/words.json for the DFHAID and DFHBMSCA names.
8
+
9
+ // Per command: the option words that tell it from a namesake (identify), whether it is the one meant
10
+ // when none of them is written (default), each option's direction, and the record an omitted option
11
+ // defaults to, named from another option's argument (defaults).
12
+ export const CICS_COMMANDS = {
13
+ "ABEND": {"options":{"ABCODE":"sends"}},
14
+ "ADDRESS": {"options":{"ACEE":"receives","COMMAREA":"receives","CWA":"receives","EIB":"receives","TCTUA":"receives","TWA":"receives"}},
15
+ "ADDRESS SET": {"identify":["SET"],"options":{"SET":"receives","USING":"sends"}},
16
+ "ASKTIME": {"options":{"ABSTIME":"receives"}},
17
+ "ASSIGN": {"options":{"ABCODE":"receives","MAPLINE":"receives","ABDUMP":"receives","MAPWIDTH":"receives","ABOFFSET":"receives","MICROVERSION":"receives","ABPROGRAM":"receives","MINORVERSION":"receives","ACTIVITY":"receives","MSRCONTROL":"receives","ACTIVITYID":"receives","NATLANGINUSE":"receives","ALTSCRNHT":"receives","NETNAME":"receives","ALTSCRNWD":"receives","NEXTTRANSID":"receives","APLKYBD":"receives","NUMTAB":"receives","APLTEXT":"receives","OPCLASS":"receives","APPLICATION":"receives","OPERATION":"receives","APPLID":"receives","OPERKEYS":"receives","ASRAINTRPT":"receives","OPID":"receives","ASRAKEY":"receives","OPSECURITY":"receives","ASRAPSW":"receives","ORGABCODE":"receives","ASRAPSW16":"receives","OUTLINE":"receives","ASRAREGS":"receives","PAGENUM":"receives","ASRAREGS64":"receives","PARTNPAGE":"receives","ASRASPC":"receives","PARTNS":"receives","ASRASTG":"receives","PARTNSET":"receives","BRIDGE":"receives","PLATFORM":"receives","BTRANS":"receives","PRINSYSID":"receives","CHANNEL":"receives","PROCESS":"receives","CMDSEC":"receives","PROCESSTYPE":"receives","COLOR":"receives","PROGRAM":"receives","CWALENG":"receives","PS":"receives","DEFSCRNHT":"receives","QNAME":"receives","DEFSCRNWD":"receives","RESSEC":"receives","DELIMITER":"receives","RESTART":"receives","DESTCOUNT":"receives","RETURNPROG":"receives","DESTID":"receives","SCRNHT":"receives","DESTIDLENG":"receives","SCRNWD":"receives","DSSCS":"receives","SIGDATA":"receives","DS3270":"receives","SOSI":"receives","ERRORMSG":"receives","STARTCODE":"receives","ERRORMSGLEN":"receives","STATIONID":"receives","EWASUPP":"receives","SYSID":"receives","EXTDS":"receives","TASKPRIORITY":"receives","FACILITY":"receives","TCTUALENG":"receives","FCI":"receives","TELLERID":"receives","GCHARS":"receives","TERMCODE":"receives","GCODES":"receives","TERMPRIORITY":"receives","GMMI":"receives","TEXTKYBD":"receives","HILIGHT":"receives","TEXTPRINT":"receives","INITPARM":"receives","TRANPRIORITY":"receives","INITPARMLEN":"receives","TWALENG":"receives","INPARTN":"receives","UNATTEND":"receives","INPUTMSGLEN":"receives","USERID":"receives","INVOKINGPROG":"receives","USERNAME":"receives","KATAKANA":"receives","USERPRIORITY":"receives","LANGINUSE":"receives","VALIDATION":"receives","LDCMNEM":"receives","LDCNUM":"receives","LINKLEVEL":"receives","MAJORVERSION":"receives","MAPCOLUMN":"receives","MAPHEIGHT":"receives"}},
18
+ "BIF DEEDIT": {"identify":["DEEDIT"],"options":{"FIELD":"both","LENGTH":"sends"}},
19
+ "CANCEL": {"options":{"REQID":"sends","SYSID":"sends","TRANSID":"sends"}},
20
+ "DEFINE COUNTER": {"identify":["COUNTER","DCOUNTER"],"options":{"COUNTER":"sends","POOL":"sends","VALUE":"sends","MINIMUM":"sends","MAXIMUM":"sends"}},
21
+ "DELAY": {"options":{"INTERVAL":"sends","TIME":"sends","REQID":"sends","HOURS":"sends","MINUTES":"sends","SECONDS":"sends","MILLISECS":"sends"}},
22
+ "DELETE": {"options":{"FILE":"sends","TOKEN":"sends","RIDFLD":"sends","KEYLENGTH":"sends","NUMREC":"receives","SYSID":"sends"}},
23
+ "DELETE CONTAINER": {"identify":["CONTAINER"],"options":{"CONTAINER":"sends","CHANNEL":"sends"}},
24
+ "DELETE COUNTER": {"identify":["COUNTER","DCOUNTER"],"options":{"COUNTER":"sends","POOL":"sends"}},
25
+ "DELETEQ TD": {"identify":["TD"],"options":{"QUEUE":"sends","SYSID":"sends"}},
26
+ "DELETEQ TS": {"identify":["TS"],"default":true,"options":{"QUEUE":"sends","QNAME":"sends","SYSID":"sends"}},
27
+ "DEQ": {"options":{"RESOURCE":"sends","LENGTH":"sends","MAXLIFETIME":"sends"}},
28
+ "DUMP TRANSACTION": {"identify":["TRANSACTION"],"options":{"DUMPCODE":"sends","FROM":"sends","LENGTH":"sends","FLENGTH":"sends","SEGMENTLIST":"sends","LENGTHLIST":"sends","NUMSEGMENTS":"sends","DUMPID":"receives"}},
29
+ "ENDBR": {"options":{"FILE":"sends","REQID":"sends","SYSID":"sends"}},
30
+ "ENQ": {"options":{"RESOURCE":"sends","LENGTH":"sends","MAXLIFETIME":"sends"}},
31
+ "ENTER TRACENUM": {"identify":["TRACENUM"],"options":{"TRACENUM":"sends","FROM":"sends","RESOURCE":"sends","FROMLENGTH":"sends"}},
32
+ "FORMATTIME": {"options":{"DATESTRING":"receives","ABSTIME":"sends","DATE":"receives","FULLDATE":"receives","DATEFORM":"receives","DATESEP":"sends","DAYCOUNT":"receives","STRINGZONE":"sends","DAYOFMONTH":"receives","DAYOFWEEK":"receives","DDMMYY":"receives","DDMMYYYY":"receives","MILLISECONDS":"receives","MMDDYY":"receives","MMDDYYYY":"receives","MONTHOFYEAR":"receives","STRINGFORMAT":"sends","TIME":"receives","YEAR":"receives","YYDDD":"receives","TIMESEP":"sends","YYDDMM":"receives","YYMMDD":"receives","YYYYDDD":"receives","YYYYDDMM":"receives","YYYYMMDD":"receives"}},
33
+ "FREEMAIN": {"options":{"DATA":"sends","DATAPOINTER":"sends"}},
34
+ "GET CONTAINER": {"identify":["CONTAINER"],"options":{"CONTAINER":"sends","CHANNEL":"sends","INTO":"receives","FLENGTH":"both","SET":"receives","BYTEOFFSET":"sends","INTOCCSID":"sends","INTOCODEPAGE":"sends","CONVERTST":"sends","CCSID":"receives"}},
35
+ "GET COUNTER": {"identify":["COUNTER","DCOUNTER"],"options":{"COUNTER":"sends","VALUE":"receives","POOL":"sends","INCREMENT":"sends","COMPAREMIN":"sends","COMPAREMAX":"sends"}},
36
+ "GETMAIN": {"options":{"SET":"receives","FLENGTH":"sends","LENGTH":"sends","INITIMG":"sends"}},
37
+ "HANDLE ABEND": {"identify":["ABEND"],"options":{"PROGRAM":"sends","LABEL":"label"}},
38
+ "HANDLE AID": {"identify":["AID"],"anyOption":"label","options":{}},
39
+ "HANDLE CONDITION": {"identify":["CONDITION"],"anyOption":"label","options":{}},
40
+ "IGNORE CONDITION": {"identify":["CONDITION"],"anyOption":"none","options":{}},
41
+ "LINK": {"options":{"PROGRAM":"sends","COMMAREA":"both","CHANNEL":"sends","LENGTH":"sends","DATALENGTH":"sends","INPUTMSG":"sends","INPUTMSGLEN":"sends","SYSID":"sends","TRANSID":"sends"}},
42
+ "LOAD": {"options":{"PROGRAM":"sends","SET":"receives","LENGTH":"receives","FLENGTH":"receives","ENTRY":"receives"}},
43
+ "POP HANDLE": {"identify":["HANDLE"],"options":{}},
44
+ "PURGE MESSAGE": {"identify":["MESSAGE"],"options":{}},
45
+ "PUSH HANDLE": {"identify":["HANDLE"],"options":{}},
46
+ "PUT CONTAINER": {"identify":["CONTAINER"],"options":{"CONTAINER":"sends","FROM":"sends","CHANNEL":"sends","FLENGTH":"sends","DATATYPE":"sends","FROMCCSID":"sends","FROMCODEPAGE":"sends"}},
47
+ "QUERY COUNTER": {"identify":["COUNTER","DCOUNTER"],"options":{"COUNTER":"sends","POOL":"sends","VALUE":"receives","MINIMUM":"receives","MAXIMUM":"receives"}},
48
+ "READ": {"options":{"FILE":"sends","INTO":"receives","SET":"receives","TOKEN":"receives","RIDFLD":"both","KEYLENGTH":"sends","SYSID":"sends","LENGTH":"both"}},
49
+ "READNEXT": {"options":{"FILE":"sends","INTO":"receives","SET":"receives","TOKEN":"receives","RIDFLD":"both","KEYLENGTH":"sends","REQID":"sends","SYSID":"sends","LENGTH":"both"}},
50
+ "READPREV": {"options":{"FILE":"sends","INTO":"receives","SET":"receives","TOKEN":"receives","RIDFLD":"both","KEYLENGTH":"sends","REQID":"sends","LENGTH":"both","SYSID":"sends"}},
51
+ "READQ TD": {"identify":["TD"],"options":{"QUEUE":"sends","INTO":"receives","SET":"receives","LENGTH":"both","SYSID":"sends"}},
52
+ "READQ TS": {"identify":["TS"],"default":true,"options":{"QUEUE":"sends","QNAME":"sends","INTO":"receives","SET":"receives","LENGTH":"both","NUMITEMS":"receives","ITEM":"sends","SYSID":"sends"}},
53
+ "RECEIVE": {"options":{"INTO":"receives","SET":"receives","LENGTH":"both","FLENGTH":"both","MAXLENGTH":"sends","MAXFLENGTH":"sends"}},
54
+ "RECEIVE MAP": {"identify":["MAP"],"options":{"MAP":"sends","MAPSET":"sends","INTO":"receives","SET":"receives","FROM":"sends","LENGTH":"sends","INPARTN":"sends"},"defaults":{"INTO":{"name":"MAP","suffix":"I","unless":["SET"]}}},
55
+ "RELEASE": {"options":{"PROGRAM":"sends"}},
56
+ "RESETBR": {"options":{"FILE":"sends","RIDFLD":"sends","KEYLENGTH":"sends","REQID":"sends","SYSID":"sends"}},
57
+ "RETRIEVE": {"options":{"INTO":"receives","SET":"receives","LENGTH":"both","RTRANSID":"receives","RTERMID":"receives","QUEUE":"receives"}},
58
+ "RETURN": {"options":{"TRANSID":"sends","COMMAREA":"sends","LENGTH":"sends","CHANNEL":"sends","INPUTMSG":"sends","INPUTMSGLEN":"sends"}},
59
+ "REWIND COUNTER": {"identify":["COUNTER","DCOUNTER"],"options":{"COUNTER":"sends","POOL":"sends","INCREMENT":"sends"}},
60
+ "REWRITE": {"options":{"FILE":"sends","FROM":"sends","TOKEN":"sends","SYSID":"sends","LENGTH":"sends"}},
61
+ "SEND": {"options":{"FROM":"sends","LENGTH":"sends","FLENGTH":"sends"}},
62
+ "SEND CONTROL": {"identify":["CONTROL"],"options":{"CURSOR":"sends","MSR":"sends","OUTPARTN":"sends","ACTPARTN":"sends","LDC":"sends","SET":"receives","REQID":"sends"}},
63
+ "SEND MAP": {"identify":["MAP"],"options":{"MAP":"sends","MAPSET":"sends","FROM":"sends","LENGTH":"sends","MSR":"sends","FMHPARM":"sends","OUTPARTN":"sends","ACTPARTN":"sends","LDC":"sends","SET":"receives","REQID":"sends","CURSOR":"sends"},"defaults":{"FROM":{"name":"MAP","suffix":"O","unless":["MAPONLY"]}}},
64
+ "SEND PAGE": {"identify":["PAGE"],"options":{"TRANSID":"sends","TRAILER":"sends","SET":"receives","FMHPARM":"sends"}},
65
+ "SEND TEXT": {"identify":["TEXT"],"options":{"FROM":"sends","LENGTH":"sends","CURSOR":"sends","FMHPARM":"sends","OUTPARTN":"sends","ACTPARTN":"sends","MSR":"sends","LDC":"sends","SET":"receives","REQID":"sends","HEADER":"sends","TRAILER":"sends","JUSTIFY":"sends"}},
66
+ "SIGNOFF": {"options":{}},
67
+ "SIGNON": {"options":{"USERID":"sends","ESMREASON":"receives","ESMRESP":"receives","GROUPID":"sends","LANGUAGECODE":"sends","NATLANG":"sends","LANGINUSE":"receives","NATLANGINUSE":"receives","PASSWORD":"sends","NEWPASSWORD":"sends","PHRASE":"sends","PHRASELEN":"sends","NEWPHRASE":"sends","NEWPHRASELEN":"sends","OIDCARD":"sends"}},
68
+ "START": {"options":{"TRANSID":"sends","INTERVAL":"sends","TIME":"sends","REQID":"sends","HOURS":"sends","MINUTES":"sends","SECONDS":"sends","FROM":"sends","LENGTH":"sends","TERMID":"sends","USERID":"sends","SYSID":"sends","RTRANSID":"sends","RTERMID":"sends","QUEUE":"sends"}},
69
+ "STARTBR": {"options":{"FILE":"sends","RIDFLD":"sends","KEYLENGTH":"sends","REQID":"sends","SYSID":"sends"}},
70
+ "SYNCPOINT": {"options":{}},
71
+ "SYNCPOINT ROLLBACK": {"identify":["ROLLBACK"],"options":{}},
72
+ "UNLOCK": {"options":{"FILE":"sends","TOKEN":"sends","SYSID":"sends"}},
73
+ "UPDATE COUNTER": {"identify":["COUNTER","DCOUNTER"],"options":{"COUNTER":"sends","VALUE":"sends","POOL":"sends","COMPAREMIN":"sends","COMPAREMAX":"sends"}},
74
+ "WRITE": {"options":{"FILE":"sends","FROM":"sends","RIDFLD":"both","KEYLENGTH":"sends","SYSID":"sends","LENGTH":"sends"}},
75
+ "WRITE JOURNALNAME": {"identify":["JOURNALNAME"],"options":{"JOURNALNAME":"sends","JTYPEID":"sends","FROM":"sends","FLENGTH":"sends","REQID":"receives","PREFIX":"sends","PFXLENG":"sends"}},
76
+ "WRITE OPERATOR": {"identify":["OPERATOR"],"options":{"TEXT":"sends","TEXTLENGTH":"sends","ROUTECODES":"sends","NUMROUTES":"sends","ACTION":"sends","REPLY":"receives","MAXLENGTH":"sends","REPLYLENGTH":"receives","TIMEOUT":"sends"}},
77
+ "WRITEQ TD": {"identify":["TD"],"options":{"QUEUE":"sends","FROM":"sends","LENGTH":"sends","SYSID":"sends"}},
78
+ "WRITEQ TS": {"identify":["TS"],"default":true,"options":{"QUEUE":"sends","QNAME":"sends","FROM":"sends","LENGTH":"sends","NUMITEMS":"receives","ITEM":"both","SYSID":"sends"}},
79
+ "XCTL": {"options":{"PROGRAM":"sends","COMMAREA":"sends","CHANNEL":"sends","LENGTH":"sends","INPUTMSG":"sends","INPUTMSGLEN":"sends"}},
80
+ };
81
+
82
+ // Options any command may carry.
83
+ export const CICS_EVERY_COMMAND = {"RESP":"receives","RESP2":"receives"};
84
+
85
+ export const DFHRESP = {
86
+ NORMAL: 0, ERROR: 1, RDATT: 2, WRBRK: 3, EOF: 4, EODS: 5, EOC: 6, INBFMH: 7, ENDINPT: 8,
87
+ NONVAL: 9, NOSTART: 10, TERMIDERR: 11, FILENOTFOUND: 12, NOTFND: 13, DUPREC: 14, DUPKEY: 15,
88
+ INVREQ: 16, IOERR: 17, NOSPACE: 18, NOTOPEN: 19, ENDFILE: 20, ILLOGIC: 21, LENGERR: 22, QZERO: 23,
89
+ SIGNAL: 24, QBUSY: 25, ITEMERR: 26, PGMIDERR: 27, TRANSIDERR: 28, ENDDATA: 29, INVTSREQ: 30,
90
+ EXPIRED: 31, RETPAGE: 32, RTEFAIL: 33, RTESOME: 34, TSIOERR: 35, MAPFAIL: 36, INVERRTERM: 37,
91
+ INVMPSZ: 38, IGREQID: 39, OVERFLOW: 40, INVLDC: 41, NOSTG: 42, JIDERR: 43, QIDERR: 44,
92
+ NOJBUFSP: 45, DSSTAT: 46, SELNERR: 47, FUNCERR: 48, UNEXPIN: 49, NOPASSBKRD: 50, NOPASSBKWR: 51,
93
+ SEGIDERR: 52, SYSIDERR: 53, ISCINVREQ: 54, ENQBUSY: 55, ENVDEFERR: 56, IGREQCD: 57,
94
+ SESSIONERR: 58, SYSBUSY: 59, SESSBUSY: 60, NOTALLOC: 61, CBIDERR: 62, INVEXITREQ: 63,
95
+ INVPARTNSET: 64, INVPARTN: 65, PARTNFAIL: 66, USERIDERR: 69, NOTAUTH: 70, VOLIDERR: 71,
96
+ SUPPRESSED: 72, RESIDERR: 75, NOSPOOL: 80, TERMERR: 81, ROLLEDBACK: 82, END: 83, DISABLED: 84,
97
+ ALLOCERR: 85, STRELERR: 86, OPENERR: 87, SPOLBUSY: 88, SPOLERR: 89, NODEIDERR: 90, TASKIDERR: 91,
98
+ TCIDERR: 92, DSNNOTFOUND: 93, LOADING: 94, MODELIDERR: 95, OUTDESCRERR: 96, PARTNERIDERR: 97,
99
+ PROFILEIDERR: 98, NETNAMEIDERR: 99, LOCKED: 100, RECORDBUSY: 101, UOWNOTFOUND: 102,
100
+ UOWLNOTFOUND: 103, LINKABEND: 104, CHANGED: 105, PROCESSBUSY: 106, ACTIVITYBUSY: 107,
101
+ PROCESSERR: 108, ACTIVITYERR: 109, CONTAINERERR: 110, EVENTERR: 111, TOKENERR: 112,
102
+ NOTFINISHED: 113, POOLERR: 114, TIMERERR: 115, SYMBOLERR: 116, TEMPLATERR: 117, NOTSUPERUSER: 118,
103
+ CSDERR: 119, DUPRES: 120, RESUNAVAIL: 121, CHANNELERR: 122, CCSIDERR: 123, TIMEDOUT: 124,
104
+ CODEPAGEERR: 125, INCOMPLETE: 126, APPNOTFOUND: 127, BUSY: 128,
105
+ };
106
+
107
+ export const DFHVALUE = {
108
+ ABEND: 900, ACQFAIL: 515, ACQUIRED: 69, ACQUIRING: 71, ACTIVE: 181, ACTIVITY: 1002, ADD: 291,
109
+ ADDABLE: 41, ADDFAIL: 519, ADVANCE: 265, AINIT: 282, ALARM: 501, ALL: 856, ALLCONN: 169,
110
+ ALLOCATD: 81, ALLOCATED: 81, ALLQUERY: 431, ALLVALUES: 860, ALTERABLE: 52, ALTERNATE: 197,
111
+ ALTPRTCOPY: 446, ANALYZER: 1126, AND: 1005, ANY: 158, APLKYBD: 391, APLTEXT: 393, APPC: 124,
112
+ APPCPARALLEL: 374, APPCSINGLE: 373, APPEND: 1036, APPLICATION: 559, APPLID: 303, APPLNAME: 338,
113
+ ASACTL: 224, ASCII7: 616, ASCII8: 617, ASSEMBLER: 150, ASSERTED: 1104, ASYNCHRONOUS: 570, ATI: 75,
114
+ ATOM: 1119, ATOMSERVICE: 1179, ATTACH: 576, ATTENTION: 524, ATTLSAWARE: 1205, AUDALARM: 395,
115
+ AUTOACTIVE: 630, AUTOARCH: 262, AUTOAUTH: 1095, AUTOCONN: 170, AUTOINACTIVE: 631, AUTOINIT: 284,
116
+ AUTOINSTALL: 1140, AUTOPAGE: 80, AUTOPAGEABLE: 80, AUTOREGISTER: 1094, AUTOSTART: 618,
117
+ AUTOTERMID: 1120, AUXILIARY: 247, AUXPAUSE: 313, AUXSTART: 312, AUXSTOP: 314, AVAILABLE: 95,
118
+ BACKOUT: 192, BACKTRANS: 397, BACKUPNONBWO: 800, BASE: 10, BASE64: 50, BASEAPI: 1052,
119
+ BASESPACE: 664, BASICAUTH: 1092, BDAM: 2, BEGINSESSION: 510, BELOW: 159, BGAM: 63, BINARY: 1038,
120
+ BINIT: 283, BIT: 1020, BLK: 47, BLOCKED: 16, BOTH: 1100, BRIDGE: 935, BROWSABLE: 39, BSAM: 61,
121
+ BTAM: 62, BUNDLE: 1180, BUSY: 612, C: 149, CACHE: 791, CANCEL: 526, CANCELLED: 624,
122
+ CANCELLING: 1025, CAPTURESPEC: 1195, CATEGORY: 474, CBE: 582, CBER: 581, CCE: 583, CD: 491,
123
+ CEDF: 370, CERTIFICAUTH: 1093, CERTUSER: 1061, CFE: 584, CFTABLE: 833, CGROUP: 902, CHANNEL: 1047,
124
+ CHAR: 1019, CHUNKEND: 737, CHUNKNO: 735, CHUNKYES: 736, CICS: 660, CICSAPI: 1052,
125
+ CICSDATAKEY: 379, CICSECURITY: 195, CICSEXECKEY: 381, CICSTABLE: 101, CKOPEN: 1055,
126
+ CLASSCACHE: 1075, CLEAR: 640, CLICONVERT: 743, CLIENT: 1122, CLIENTAUTH: 1032, CLIENTCERT: 1087,
127
+ CLOSE: 741, CLOSED: 19, CLOSEFAILED: 349, CLOSELEAVE: 261, CLOSEREQ: 22, CLOSEREQUEST: 22,
128
+ CLOSING: 21, CLOUD: 848, CMDPROT: 673, CMDSECEXT: 207, CMDSECNO: 205, CMDSECYES: 207, COBOL: 151,
129
+ COBOLII: 375, COLD: 788, COLDACQ: 72, COLDQUERY: 433, COLDSTART: 266, COLLECTION: 473, COLOR: 399,
130
+ COMMAREA: 1048, COMMIT: 208, COMMITFAIL: 792, COMPAT: 107, COMPLETE: 1026, COMPOSITE: 1003,
131
+ COMPRESS: 1130, CONFFREE: 82, CONFRECEIVE: 83, CONFRECV: 83, CONFSEND: 84, CONNECT: 903,
132
+ CONNECTED: 690, CONNECTING: 904, CONNECTION: 755, CONSISTENT: 723, CONSOLE: 66, CONTAINER: 869,
133
+ CONTENTION: 836, CONTEXT: 574, CONTROLSHUT: 623, CONVERSE: 600, CONVIDLE: 518, COORDINATOR: 770,
134
+ COPID: 908, COPY: 401, CORBA: 1101, CORBASERVER: 1141, CPLUSPLUS: 148, CREATE: 67, CREATESPI: 844,
135
+ CRITICAL: 11, CSDAPI: 840, CSDBATCH: 841, CSIGN: 905, CTERM: 906, CTLGALL: 632, CTLGMODIFY: 633,
136
+ CTLGNONE: 634, CTRLABLE: 56, CTX: 907, CURRENT: 260, CURRENTPGM: 870, CUSERID: 909, CUSTOM: 579,
137
+ DAE: 684, DAEOPT: 684, DATA: 508, DATASET: 756, DATASETFULL: 793, DATASTREAM: 543, DB2CONN: 1142,
138
+ DB2ENTRY: 1143, DB2TRAN: 1184, DBTRAN: 1184, DEADLOCK: 794, DEBUG: 1082, DEC: 46, DEFAULT: 198,
139
+ DEFAULTUSER: 1070, DEFINITION: 990, DEFRESP1: 497, DEFRESP1OR2: 528, DEFRESP2: 498, DEFRESP3: 499,
140
+ DELAY: 637, DELETABLE: 43, DELETE: 292, DELETEFAIL: 520, DELEXITERROR: 795, DEREGERROR: 679,
141
+ DEREGISTERED: 678, DEST: 235, DISABLED: 24, DISABLEDHOST: 1125, DISABLING: 25, DISCARDFAIL: 513,
142
+ DISCARDING: 1118, DISCONNING: 910, DISCREQ: 444, DISK1: 252, DISK2: 253, DISK2PAUSE: 254,
143
+ DISPATCHABLE: 228, DISPATCHER: 1144, DJAR: 1189, DOCDELETE: 295, DOCTEMPLATE: 1145,
144
+ DOESNOTEQUAL: 861, DOESNOTEXIST: 872, DOESNOTSTART: 862, DORMANT: 1024, DPLSUBSET: 383,
145
+ DRAINING: 619, DREPAPI: 843, DREPBATCH: 845, DS3270: 615, DUALCASE: 403, DUMMY: 781,
146
+ DUPERROR: 106, DUPNOREPLACE: 105, DUPREPLACE: 104, DYNAMIC: 178, EB: 490, EBCDIC: 1039, ECI: 1098,
147
+ EJB: 1102, EMERGENCY: 268, EMPTY: 210, EMPTYREQ: 31, ENABLED: 23, ENABLING: 51, ENDAFFINITY: 790,
148
+ ENQMODEL: 1188, ENQUEUE: 1146, ENTRYPOINT: 993, EPADAPTER: 1196, EPADAPTERSET: 1200, EQUAL: 911,
149
+ EQUALS: 863, ESDS: 5, EVENT: 334, EVENTBINDING: 1191, EVENTPROCESS: 1192, EVENTUAL: 3,
150
+ EXCEPT: 332, EXCEPTRESP: 523, EXCI: 650, EXCTL: 48, EXECENQ: 751, EXECENQADDR: 752,
151
+ EXECINSTALL: 846, EXISTS: 871, EXIT: 912, EXITTRACE: 362, EXPECT: 747, EXPIRED: 1017, EXPORT: 991,
152
+ EXTENDED: 1128, EXTENDEDDS: 405, EXTRA: 221, EXTSECURITY: 194, FAILED: 782, FAILEDBKOUT: 357,
153
+ FAILINGBKOUT: 358, FAULTTOEPR: 853, FCLOSE: 273, FEED: 472, FILE: 238, FINALQ: 183,
154
+ FINALQUIESCE: 183, FINPUT: 270, FIRED: 1001, FIRSTINIT: 625, FIRSTQ: 182, FIRSTQUIESCE: 182,
155
+ FIXED: 12, FLUSH: 783, FMH: 502, FMHPARM: 385, FOPEN: 272, FORCE: 342, FORCECANCEL: 655,
156
+ FORCECLOSE: 351, FORCECLOSING: 353, FORCED: 1013, FORCEPURGE: 237, FORCLOSING: 353,
157
+ FORMATEDF: 606, FORMATTED: 542, FORMFEED: 407, FOUTPUT: 271, FREE: 85, FREEING: 94, FROMEPR: 850,
158
+ FULL: 212, FULLAPI: 384, FULLAUTO: 1073, FWDRECOVABLE: 354, GENERIC: 651, GET: 748, GMT: 604,
159
+ GOHIGHERTHAN: 873, GOINGOUT: 172, GOLOWERTHAN: 874, GREATERTHAN: 864, GROUP: 913,
160
+ GROUPRESYNC: 947, GRPLIST: 842, GTFSTART: 317, GTFSTOP: 318, HEAD: 750, HEURBACKOUT: 758,
161
+ HEURCOMMIT: 757, HEX: 45, HFORM: 409, HFSFILE: 1040, HIGH: 914, HILIGHT: 413, HOLD: 163,
162
+ HOME: 1103, HOSTNAME: 302, HTTP: 1096, HTTPNO: 1034, HTTPS: 1029, HTTPYES: 1033, IDENTIFY: 1074,
163
+ IDNTY: 328, IGNORE: 1, IGNORERR: 816, IIOP: 1097, IMMCLOSE: 350, IMMCLOSING: 352, IMMEDIATE: 2,
164
+ IMMQUIESCED: 706, IMPORT: 992, INACTIVE: 378, INBOUND: 547, INCOMPLETE: 1014, INDEXRECFULL: 796,
165
+ INDIRECT: 122, INDOUBT: 620, INFLIGHT: 621, INITCOMPLETE: 628, INITIAL: 789, INITING: 1112,
166
+ INOUT: 532, INPUT: 226, INSERVICE: 73, INSTALLED: 550, INSTALLFAIL: 512, INTERNAL: 1058,
167
+ INTRA: 222, INTSTART: 310, INTSTOP: 311, INVALID: 359, IOERROR: 797, IPCONN: 1176, IPECI: 936,
168
+ IPIC: 1089, IPV4: 300, IPV6: 301, IRC: 121, ISNOTGREATER: 865, ISNOTLESS: 866, ISOLATE: 658,
169
+ JAVA: 147, JOURNALMODEL: 1185, JOURNALNAME: 1147, JOURNALNUM: 1148, JVM: 1080, JVMPOOL: 1149,
170
+ JVMPROFILE: 1150, JVMPROGRAM: 1151, JVMSERVER: 1193, KATAKANA: 415, KEEP: 786, KERBEROS: 1105,
171
+ KEYED: 8, KILL: 232, KSDS: 6, LCKSTRUCFULL: 832, LE370: 377, LEAVE: 811, LESSTHAN: 867,
172
+ LIBRARY: 1177, LIC: 493, LIGHTPEN: 417, LINK: 577, LOAD: 834, LOC24: 159, LOC31: 158, LOCAL: 605,
173
+ LOCKING: 837, LOG: 54, LOGICAL: 216, LOGREPLICATE: 1198, LOGTERM: 269, LOSE: 544, LOW: 915,
174
+ LPA: 165, LSRPOOL: 1152, LU61: 125, LUP: 541, LUSTAT: 525, LUW: 246, MAIN: 248, MAP: 155,
175
+ MAPSET: 155, MCHCTL: 241, MDT: 506, MESSAGEID: 1197, METADATA: 857, MIXED: 403, MNPS: 999,
176
+ MOD: 813, MODE24: 190, MODE31: 191, MODEANY: 189, MODEL: 370, MONITOR: 1153, MORE: 492,
177
+ MQCONN: 1175, MRO: 938, MSRCONTROL: 419, MTOM: 460, MTOMNOXOP: 469, MVS: 780, MVSTCB: 1154,
178
+ N906: 931, N906D: 921, NEGATIVE: 530, NEW: 28, NEWCOPY: 167, NEWSESSION: 485, NOALARM: 500,
179
+ NOALTPRTCOPY: 447, NOANALYZER: 1127, NOAPLKYBD: 392, NOAPLTEXT: 394, NOAPPEND: 1037,
180
+ NOAPPLNAME: 339, NOATI: 76, NOAUDALARM: 396, NOAUTHENTIC: 1091, NOAUTO: 1071, NOAUTOARCH: 263,
181
+ NOBACKOUT: 193, NOBACKTRANS: 398, NOCEDF: 371, NOCLASSCACHE: 1076, NOCLEAR: 641,
182
+ NOCLICONVERT: 744, NOCLOSE: 742, NOCMDPROT: 674, NOCOLOR: 400, NOCOMPAT: 108, NOCOMPRESS: 1131,
183
+ NOCONNECT: 916, NOCONV: 556, NOCONVERSE: 601, NOCONVERT: 734, NOCOPY: 402, NOCREATE: 68,
184
+ NOCTL: 223, NODAE: 685, NODAEOPT: 685, NODE: 1155, NODEBUG: 1083, NODISCREQ: 445,
185
+ NODOCDELETE: 296, NODUALCASE: 404, NOEMPTYREQ: 32, NOEVENT: 335, NOEXCEPT: 333, NOEXCTL: 49,
186
+ NOEXIT: 917, NOEXITTRACE: 363, NOEXTENDEDDS: 406, NOFMH: 503, NOFMHPARM: 386, NOFORCE: 1054,
187
+ NOFORMATEDF: 607, NOFORMFEED: 408, NOHFORM: 410, NOHILIGHT: 414, NOHOLD: 164, NOIDNTY: 329,
188
+ NOINCONVERT: 745, NOISOLATE: 657, NOJVM: 1081, NOKATAKANA: 416, NOKEEP: 787, NOLIGHTPEN: 418,
189
+ NOLOAD: 835, NOLOG: 55, NOLOGREPLICA: 1199, NOLOSTLOCKS: 710, NOMDT: 507, NOMSGJRNL: 531,
190
+ NOMSRCONTROL: 420, NOMTOM: 461, NOMTOMNOXOP: 470, NONAUTOCONN: 171, NONCICS: 661,
191
+ NONCRITICAL: 1090, NONE: 496, NONLE370: 1084, NONRESIDENT: 1202, NONTRANS: 572, NOOBFORMAT: 422,
192
+ NOOBOPERID: 388, NOOUTCONVERT: 746, NOOUTLINE: 424, NOPARTITIONS: 426, NOPERF: 331,
193
+ NOPHASEOUT: 1110, NOPRESETSEC: 243, NOPRINTADAPT: 428, NOPROGSYMBOL: 430, NOPRTCOPY: 449,
194
+ NOPS: 997, NOQUERY: 432, NORECOVDATA: 700, NOREENTPROT: 681, NORELEASE: 918, NORELREQ: 443,
195
+ NORESRCE: 337, NORESYNC: 934, NORETAINED: 711, NOREUSE: 294, NORMAL: 1016, NORMALBKOUT: 356,
196
+ NORMALRESP: 522, NORMI: 775, NOROLLBACK: 919, NOSECURITY: 196, NOSENDMTOM: 464, NOSHUTDOWN: 289,
197
+ NOSOSI: 435, NOSPI: 694, NOSRVCONVERT: 739, NOSSL: 1031, NOSTSN: 487, NOSWITCH: 285,
198
+ NOSYNCPOINT: 603, NOSYSDUMP: 185, NOSYSLOG: 784, NOTADDABLE: 42, NOTALLOWED: 327,
199
+ NOTALTERABLE: 53, NOTAPPLIC: 1, NOTASKSTART: 608, NOTBROWSABLE: 40, NOTBRWBLE: 40, NOTBUSY: 613,
200
+ NOTCDEB: 495, NOTCONNECTED: 691, NOTCTRLABLE: 57, NOTDEFINED: 659, NOTDELBLE: 44,
201
+ NOTDELETABLE: 44, NOTDYNAMIC: 1021, NOTEMPTY: 211, NOTERMINAL: 214, NOTEXTENDED: 1129,
202
+ NOTEXTKYBD: 437, NOTEXTPRINT: 439, NOTFIRED: 1000, NOTFWDRCVBLE: 361, NOTHOTPOOL: 1066,
203
+ NOTINBOUND: 546, NOTINIT: 376, NOTINSTALLED: 551, NOTKEYED: 9, NOTLPA: 166, NOTPENDING: 127,
204
+ NOTPURGEABLE: 161, NOTRANDUMP: 187, NOTREADABLE: 36, NOTREADY: 259, NOTRECOVABLE: 30,
205
+ NOTREQUIRED: 667, NOTRLS: 721, NOTROUTABLE: 1022, NOTSOS: 669, NOTSUPPORTED: 15,
206
+ NOTSUSPENDED: 1027, NOTTABLE: 100, NOTTI: 78, NOTUPDATABLE: 38, NOTUPDBLE: 38, NOTWAIT: 920,
207
+ NOUCTRAN: 451, NOUSER: 1011, NOVALIDATION: 441, NOVFORM: 412, NOWAIT: 341, NOWRITE: 275,
208
+ NOXOPDIRECT: 466, NOXOPSUPPORT: 468, NOZCPTRACE: 365, NRS: 774, OBFORMAT: 421, OBOPERID: 387,
209
+ OBTAINING: 96, OFF: 200, OK: 274, OLD: 26, OLDCOPY: 162, OLDSESSION: 486, ON: 201, OPEN: 18,
210
+ OPENAPI: 1053, OPENERROR: 798, OPENING: 20, OPENINPUT: 256, OPENOUTPUT: 257, OPID: 933,
211
+ OPTIONAL: 326, OPTIONS: 759, OR: 1006, OTS: 1107, OUTLINE: 423, OUTPUT: 227, OUTSERVICE: 74,
212
+ OWNER: 753, PAGEABLE: 79, PARTITIONS: 425, PARTITIONSET: 156, PARTNER: 1182, PATH: 11,
213
+ PDSMEMBER: 1035, PENDBEGIN: 558, PENDDATA: 560, PENDFREE: 86, PENDING: 126, PENDINIT: 1113,
214
+ PENDPASS: 565, PENDRECEIVE: 87, PENDRELEASE: 562, PENDRESOLVE: 1114, PENDSTART: 561,
215
+ PENDSTSN: 557, PENDUNSOL: 564, PERF: 330, PERMANENT: 484, PHASEIN: 168, PHASEOUT: 1111,
216
+ PHYSICAL: 215, PIPELINE: 1124, PL1: 152, PLI: 152, POLICYSCOPE: 994, POOL: 922, POSITIVE: 529,
217
+ POST: 636, POSTCOMMAND: 697, PRECOMMAND: 696, PRESETSEC: 242, PRIMARY: 110, PRINCIPAL: 199,
218
+ PRINTADAPT: 427, PRIVATE: 174, PROCESS: 1010, PROCESSTYPE: 1190, PROFILE: 157, PROGAUTO: 1072,
219
+ PROGRAM: 154, PROGRAMDEF: 1178, PROGRAMINIT: 698, PROGSYMBOL: 429, PROTECTED: 504, PROVIDER: 1041,
220
+ PRTCOPY: 448, PUBLISH: 1085, PURGE: 236, PURGEABLE: 160, PUT: 749, QR: 1057, QUASIRENT: 1050,
221
+ QUEUE: 814, QUIESCED: 707, QUIESCING: 708, READABLE: 35, READBACK: 209, READONLY: 275, READY: 258,
222
+ REBUILD: 923, RECEIVE: 88, RECEIVER: 1046, RECONNECT: 924, RECOVDATA: 701, RECOVERABLE: 29,
223
+ RECOVERED: 277, RECOVERLOCKS: 712, RECOVERY: 1156, REENTPROT: 680, REFPARMS: 858, REGERROR: 677,
224
+ REGION: 575, REGISTERED: 670, REJECT: 815, RELATED: 675, RELEASE: 563, RELEASED: 70,
225
+ RELEASING: 549, RELOAD: 1078, RELOADING: 1079, RELREQ: 442, REMLOSTLOCKS: 713, REMOTE: 4,
226
+ REMOVE: 276, REMSESSION: 740, REMTABLE: 103, REPEATABLE: 724, REPLYTOEPR: 852, REQCONTEXT: 854,
227
+ REQUEST: 249, REQUESTER: 1042, REQUESTMODEL: 1157, REQUIRED: 666, REREAD: 812, RESET: 290,
228
+ RESETLOCKS: 714, RESIDENT: 1201, RESOLVED: 347, RESOLVING: 1115, RESPCONTEXT: 855,
229
+ RESPECTED: 1109, RESRCE: 336, RESSECEXT: 204, RESSECINT: 203, RESSECNO: 202, RESSECYES: 204,
230
+ RESYNC: 702, RETAINED: 715, RETRACT: 1086, RETRY: 716, REUSE: 293, REVERTED: 264, RFC1123: 646,
231
+ RFC3339: 647, RLS: 720, RLSACTIVE: 730, RLSGONE: 799, RLSINACTIVE: 731, RLSSERVER: 761, RMI: 771,
232
+ ROLLBACK: 89, ROUTABLE: 1023, ROUTE: 638, RPG: 153, RRCOMMITFAIL: 830, RRDS: 7, RRINDOUBT: 831,
233
+ RRMS: 1063, RRSUR: 939, RTR: 527, RU: 494, RUNNING: 229, RZINSTOR: 940, SAMESENDMTOM: 462,
234
+ SCAN: 1088, SCHEDULER: 941, SCS: 614, SECONDINIT: 626, SECUSER: 1060, SEND: 90, SENDER: 1045,
235
+ SENDMTOM: 463, SERVER: 1123, SERVICE: 475, SESSION: 372, SESSIONFAIL: 517, SESSIONLOST: 516,
236
+ SESSIONS: 1187, SETFAIL: 514, SHARE: 27, SHARED: 173, SHUNTED: 762, SHUTDISABLED: 645,
237
+ SHUTDOWN: 288, SHUTENABLED: 644, SIGN: 925, SIGNEDOFF: 245, SIGNEDON: 244, SINGLEOFF: 324,
238
+ SINGLEON: 323, SKIP: 810, SMF: 255, SNPS: 998, SOAP: 1044, SOCKET: 942, SOMEAVAIL: 1204, SOS: 668,
239
+ SOSABOVE: 683, SOSBELOW: 682, SOSI: 434, SPECIAL: 98, SPECIFIC: 652, SPECTRACE: 177, SPI: 693,
240
+ SPRSTRACE: 175, SQLCODE: 926, SRVCONVERT: 738, SSL: 1030, STANDARD: 97, STANDBY: 629,
241
+ STANTRACE: 176, START: 635, STARTED: 609, STARTING: 772, STARTSWITH: 868, STARTTERM: 943,
242
+ STARTUP: 180, STATIC: 179, STATS: 1158, STOPPED: 610, STOPPING: 348, STORAGE: 1159,
243
+ STREAMNAME: 1160, STSN: 509, STSNSET: 488, STSNTEST: 489, SUBORDINATE: 773, SUBPOOL: 1161,
244
+ SUBSPACE: 663, SUMMUNLIKE: 566, SUPPORTED: 1106, SURROGATE: 371, SUSPENDED: 231, SWITCH: 188,
245
+ SWITCHALL: 287, SWITCHING: 225, SWITCHNEXT: 286, SYNCFREE: 91, SYNCHRONOUS: 571, SYNCPOINT: 602,
246
+ SYNCRECEIVE: 92, SYNCRECV: 92, SYNCSEND: 93, SYSCONNECT: 653, SYSDUMP: 184, SYSDUMPCODE: 1162,
247
+ SYSLOG: 785, SYSPLEX: 656, SYSTEM: 643, SYSTEMOFF: 320, SYSTEMON: 319, T3278M2: 533, T3278M3: 534,
248
+ T3278M4: 535, T3278M5: 536, T3279M2: 537, T3279M3: 538, T3279M4: 539, T3279M5: 540, TABLE: 847,
249
+ TABLEMGR: 1163, TAKEOVER: 111, TAPE1: 250, TAPE2: 251, TASK: 233, TASKSTART: 611,
250
+ TASKSUBPOOL: 1164, TCAM: 64, TCAMSNA: 65, TCEXITALL: 366, TCEXITALLOFF: 369, TCEXITNONE: 368,
251
+ TCEXITSYSTEM: 367, TCLASS: 239, TCPIP: 802, TCPIPSERVICE: 1166, TDQ: 767, TDQUEUE: 767,
252
+ TEMPLATENAME: 1168, TEMPORARY: 483, TERM: 234, TERMINAL: 213, TERMINATE: 1077, TEXTKYBD: 436,
253
+ TEXTPRINT: 438, THIRDINIT: 627, THREADSAFE: 1051, TIME: 240, TIMEOUT: 511, TIMER: 1004,
254
+ TOEPR: 851, TPOOL: 932, TPS55M2: 552, TPS55M3: 553, TPS55M4: 554, TPS55M5: 555, TRACE: 760,
255
+ TRANCLASS: 1169, TRANDATA: 944, TRANDUMP: 186, TRANDUMPCODE: 1170, TRANIDONLY: 452, TRANS: 573,
256
+ TRANSACTION: 1171, TRANSTART: 580, TSMODEL: 1183, TSQ: 768, TSQUEUE: 768, TTI: 77, TWAIT: 927,
257
+ TX: 929, TXID: 928, TYPETERM: 1186, UCTRAN: 450, UKOPEN: 1056, UNATTEMPTED: 820, UNAVAILABLE: 672,
258
+ UNBLOCKED: 17, UNCOMMITTED: 722, UNCONNECTED: 703, UNDEFINED: 14, UNDETERMINED: 355,
259
+ UNENABLED: 33, UNENABLING: 34, UNEXPECTED: 1015, UNEXPIRED: 1018, UNINSTALLED: 548, UNKNOWN: 774,
260
+ UNPROTECTED: 505, UNQUIESCED: 709, UNREGISTERED: 671, UNRESOLVED: 1116, UNSOLDATA: 521,
261
+ UNUSABLE: 1117, UOW: 246, UPDATABLE: 37, UPDATING: 1049, URIMAP: 1173, URMTERMID: 1121, USER: 642,
262
+ USERDATAKEY: 380, USEREXECKEY: 382, USERID: 930, USEROFF: 322, USERON: 321, USERTABLE: 102,
263
+ UTC: 1203, VALID: 360, VALIDATION: 440, VARIABLE: 13, VERIFY: 1099, VFORM: 411, VRRDS: 732,
264
+ VSAM: 3, VTAM: 60, WAIT: 340, WAITCOMMIT: 763, WAITER: 754, WAITFORGET: 622, WAITING: 765,
265
+ WAITRMI: 766, WAITRRMS: 1063, WARMSTART: 267, WBE: 585, WEB: 945, WEBSERVICE: 1174, WIN: 545,
266
+ WMQ: 578, XCF: 665, XM: 123, XMLTRANSFORM: 1194, XMRUNTRAN: 946, XNOTDONE: 144, XOK: 143,
267
+ XOPDIRECT: 465, XOPSUPPORT: 467, XPLINK: 1068, ZCPTRACE: 364,
268
+ };
269
+
270
+ export const DFHAID_NAMES = `
271
+ DFHENTER DFHCLEAR DFHPA1 DFHPA2 DFHPA3 DFHPF1 DFHPF2 DFHPF3 DFHPF4 DFHPF5 DFHPF6 DFHPF7 DFHPF8
272
+ DFHPF9 DFHPF10 DFHPF11 DFHPF12 DFHPF13 DFHPF14 DFHPF15 DFHPF16 DFHPF17 DFHPF18 DFHPF19 DFHPF20
273
+ DFHPF21 DFHPF22 DFHPF23 DFHPF24 DFHOPID DFHMSRE DFHTRIG DFHPEN DFHCLRP DFHSTRF`.split(/\s+/).filter(Boolean);
274
+ export const DFHBMSCA_NAMES = `
275
+ DFHBMPEM DFHBMPNL DFHBMPFF DFHBMPCR DFHBMASK DFHBMUNP DFHBMUNN DFHBMPRO DFHBMBRY DFHBMDAR DFHBMFSE
276
+ DFHBMPRF DFHBMASF DFHBMASB DFHBMPSO DFHBMPSI DFHBMEOF DFHBMCUR DFHBMEC DFHBMFLG DFHBMDET DFHSA
277
+ DFHERROR DFHCOLOR DFHPS DFHHLT DFH3270 DFHVAL DFHOUTLN DFHBKTRN DFHALL DFHDFT DFHDFCOL DFHBLUE
278
+ DFHRED DFHPINK DFHGREEN DFHTURQ DFHYELLO DFHNEUTR DFHBASE DFHDFHI DFHBLINK DFHREVRS DFHUNDLN
279
+ DFHMFIL DFHMENT DFHMFE DFHMT DFHMFT DFHMET DFHMFET DFHUNNOD DFHUNIMD DFHUNNUM DFHUNNUB DFHUNINT
280
+ DFHUNNON DFHPROTI DFHPROTN DFHDFFR DFHUNDER DFHRIGHT DFHOVER DFHLEFT DFHBOX DFHSOSI DFHTRANS
281
+ DFHOPAQ`.split(/\s+/).filter(Boolean);
@@ -0,0 +1,81 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later
2
+ // Which clause of which framework makes a finding someone's obligation.
3
+ //
4
+ // A scanner's output is a list of defects. An audit exhibit is a list of obligations with evidence
5
+ // against each. The difference between them is this file, and it is the difference between a
6
+ // tooling budget and a compliance budget.
7
+ //
8
+ // DORA, NIST SP 800-53 and the FFIEC IT Examination Handbook ship here because their instruments
9
+ // may be reproduced: one is EU law, the other two US Government works. PCI DSS and the COBIT-derived SOX material may not be
10
+ // redistributed, so those mappings belong in the licensed feed rather than in an AGPL repository.
11
+ // The split is a licensing fact before it is a product decision.
12
+ //
13
+ // A framework may decline to cover a rule. Neither NIST nor FFIEC has a control that genuinely
14
+ // covers committing an LPAR name to a repository, and that is recorded as an unmapped rule with a
15
+ // reason rather than mapped to the nearest thing that reads plausibly.
16
+ import { readFileSync, existsSync } from 'node:fs';
17
+
18
+ const FRAMEWORKS = [
19
+ { id: 'dora', file: '../rules/compliance-dora.json' },
20
+ { id: 'nist-800-53r5', file: '../rules/compliance-nist80053.json' },
21
+ { id: 'ffiec', file: '../rules/compliance-ffiec.json' },
22
+ ];
23
+
24
+ // A framework that will not parse is a framework this scan cannot map against, which is the same
25
+ // claim as one that is absent, and is recorded the same way. It is not a reason for the tool to
26
+ // stop: these three files are generated, they are committed, and a half-written one used to take
27
+ // `--help` down with a raw SyntaxError before it printed a line.
28
+ //
29
+ // The readers are arguments so this is testable without truncating a committed file, which on a
30
+ // tree several people share is a worse idea than the bug.
31
+ export function readFrameworks(entries, read = (u) => readFileSync(u, 'utf8'), exists = existsSync) {
32
+ const ok = [];
33
+ const bad = [];
34
+ for (const f of entries) {
35
+ const url = new URL(f.file, import.meta.url);
36
+ if (!exists(url)) { bad.push({ id: f.id, why: 'the file is not present' }); continue; }
37
+ try {
38
+ ok.push(JSON.parse(read(url)));
39
+ } catch (e) {
40
+ bad.push({ id: f.id, why: `the file did not parse: ${e.message}` });
41
+ }
42
+ }
43
+ return { loaded: ok, unloaded: bad };
44
+ }
45
+
46
+ const { loaded, unloaded } = readFrameworks(FRAMEWORKS);
47
+ // Which of the three this scan could not map against. A compliance matrix produced with one of
48
+ // them missing is not a matrix with nothing to say about it; it is a matrix nobody could build.
49
+ export const FRAMEWORKS_UNLOADED = unloaded;
50
+
51
+ export const FRAMEWORKS_LOADED = loaded.map((d) => ({
52
+ framework: d.framework, instrument: d.instrument, retrieved: d.retrieved,
53
+ // What the mapping does not claim travels with it. A matrix that does not say where it stops
54
+ // invites a reader to assume it stops nowhere.
55
+ coverage: d.coverage, verified: d.verified, appliesToTool: d.appliesToTool || [],
56
+ unmapped: d.unmapped || [],
57
+ }));
58
+
59
+ // Rules a framework deliberately does not cover, so a reader can tell "no obligation" from
60
+ // "nobody looked".
61
+ export const unmappedBy = Object.fromEntries(loaded.map((d) => [d.framework, (d.unmapped || []).map((u) => u.ruleId)]));
62
+
63
+ const byRule = new Map();
64
+ for (const d of loaded) {
65
+ for (const r of d.rows) {
66
+ if (!byRule.has(r.ruleId)) byRule.set(r.ruleId, []);
67
+ byRule.get(r.ruleId).push({ framework: r.framework, clause: r.clause, title: r.title });
68
+ }
69
+ }
70
+
71
+ export const clausesFor = (ruleId) => byRule.get(ruleId) || [];
72
+
73
+ // The whole map, in the shape the report's other rule maps use.
74
+ export function complianceMap(ruleIds) {
75
+ const out = {};
76
+ for (const id of ruleIds) {
77
+ const c = clausesFor(id);
78
+ if (c.length) out[id] = c;
79
+ }
80
+ return out;
81
+ }
@@ -0,0 +1,139 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later
2
+ // What a finding would let someone do, in the two classes a build refuses whatever the severity -
3
+ // gaining authority the input's author did not have, and changing data - and the tier a report
4
+ // ranks it in: docs/spec/build-gate.md §5a. Every defect rule is classified here or named as
5
+ // having neither consequence, and a test holds the registry to that, so a new rule cannot reach a
6
+ // build unclassified.
7
+ import { ALL_RULES } from './kernel/registry.mjs';
8
+ import { SOURCE_KINDS, SINK_KINDS } from './dataflow.mjs';
9
+
10
+ export const CLASSES = ['privilege-escalation', 'data-mutation'];
11
+ export const TIERS = ['info', 'low', 'med', 'high', 'crit', 'known-exploitable'];
12
+ export const TIER_RANK = Object.fromEntries(TIERS.map((t, i) => [t, i]));
13
+
14
+ const ESCALATES = 'privilege-escalation';
15
+ const MUTATES = 'data-mutation';
16
+
17
+ // Input that chooses a command, a program, a statement, a file or a job runs with the program's
18
+ // authority rather than its author's. Input that chooses which record is changed, or where in
19
+ // storage a write lands, changes data.
20
+ const SINK_CLASSES = {
21
+ 'os-command': [ESCALATES, MUTATES],
22
+ 'dynamic-sql': [ESCALATES, MUTATES],
23
+ 'internal-reader': [ESCALATES, MUTATES],
24
+ 'dynamic-program-load': [ESCALATES],
25
+ 'cics-dynamic-transfer': [ESCALATES],
26
+ 'dynamic-file-path': [ESCALATES],
27
+ 'record-update': [MUTATES],
28
+ 'queue-name': [MUTATES],
29
+ 'subscript': [MUTATES],
30
+ 'reference-modification': [MUTATES],
31
+ 'occurs-depending-count': [MUTATES],
32
+ 'loop-bound': [MUTATES],
33
+ 'outbound-http': [],
34
+ 'socket-send': [],
35
+ 'message-queue': [],
36
+ 'extrapartition-queue': [],
37
+ 'web-response': [],
38
+ 'http-header': [],
39
+ 'outbound-host': [],
40
+ 'arithmetic': [],
41
+ 'record-key': [],
42
+ 'log': [],
43
+ };
44
+
45
+ // Past a table or a reference with SSRANGE abending, a bad index stops the program instead of
46
+ // writing into the storage after it.
47
+ const BOUNDED_BY_SSRANGE = new Set(['subscript', 'reference-modification', 'occurs-depending-count', 'loop-bound']);
48
+
49
+ const RULE_CLASSES = {
50
+ // A variable names the program, and nothing says input reaches it: over the 500-repository corpus
51
+ // every one read held a literal. Input that does reach it is *-to-cics-dynamic-transfer.
52
+ 'cics-transfer-to-variable-program': [],
53
+ 'cics-signon-bypassed': [ESCALATES],
54
+ 'csd-defines-diagnostic-transaction': [ESCALATES],
55
+ 'csd-transaction-without-command-security': [ESCALATES],
56
+ 'job-loads-from-an-authorised-library': [ESCALATES],
57
+ 'vendor-privileged-command': [ESCALATES],
58
+ 'jcl-instream-security-command': [ESCALATES],
59
+ 'jcl-instream-credential': [ESCALATES],
60
+ 'web-uri-carries-a-credential': [ESCALATES],
61
+ 'log-writes-a-credential': [ESCALATES],
62
+ // A crafted source file compiled by an affected cobc runs in the build, with the build's authority.
63
+ 'build-pins-vulnerable-compiler': [ESCALATES],
64
+ 'build-pins-exploited-compiler': [ESCALATES],
65
+ 'call-parameter-exceeds-caller-record': [MUTATES],
66
+ 'call-parameter-exceeds-argument': [MUTATES],
67
+ 'cics-commarea-without-length-check': [MUTATES],
68
+ 'cics-commarea-length-exceeds-area': [MUTATES],
69
+ 'cics-commarea-length-exceeds-callee': [MUTATES],
70
+ 'jcl-instream-destructive': [MUTATES],
71
+ 'recon-nonproduction-job-writes-production-dataset': [MUTATES],
72
+ 'web-request-changes-state-without-a-token': [MUTATES],
73
+ // Disclosure, exposure, denial of service, or a consequence that depends on which advisory it is;
74
+ // severity and the known-exploited tier decide these.
75
+ 'cics-signon-says-which-half-failed': [],
76
+ 'jcl-ftp-cleartext': [],
77
+ 'jcl-ftp-sends-production-dataset': [],
78
+ 'build-pins-vulnerable-component': [],
79
+ 'build-pins-exploited-component': [],
80
+ 'site-declares-vulnerable-runtime': [],
81
+ 'recon-production-name-outside-production': [],
82
+ 'recon-routable-address-committed': [],
83
+ 'recon-nonproduction-job-reads-production-dataset': [],
84
+ 'web-cookie-without-secure-attributes': [],
85
+ 'web-response-without-protective-headers': [],
86
+ 'web-response-tells-the-caller-what-it-runs': [],
87
+ 'web-link-opens-without-noopener': [],
88
+ 'cics-listener-accepts-cleartext': [],
89
+ 'compile-undefined-name': [],
90
+ 'log-writes-personal-data': [],
91
+ 'display-echoes-a-credential': [],
92
+ };
93
+
94
+ // Coverage and context assert no defect, so they carry no consequence.
95
+ const NOT_DEFECTS = new Set(['coverage', 'context']);
96
+ // Two copybooks sharing a name in one repository are separate projects or starter and solution
97
+ // copies far more often than a planted layout; copybook-shadows-system is the planted case.
98
+ const TAMPERING_WITHOUT_CONSEQUENCE = new Set(['copybook-shadowed']);
99
+
100
+ // The source and sink a path rule's id spells, or null.
101
+ export function kindsOf(rule) {
102
+ for (const source of Object.keys(SOURCE_KINDS)) {
103
+ if (!rule.startsWith(`${source}-to-`)) continue;
104
+ const sink = rule.slice(source.length + 4);
105
+ if (Object.hasOwn(SINK_KINDS, sink)) return { source, sink };
106
+ }
107
+ return null;
108
+ }
109
+
110
+ // Whether the tables above decide `rule`: undefined for a rule nobody classified.
111
+ export function classesOfRule(rule) {
112
+ const meta = ALL_RULES[rule];
113
+ if (!meta || NOT_DEFECTS.has(meta.evidence)) return [];
114
+ // Text arranged so the compiled program is not the one a reviewer read gives its author control
115
+ // of what runs with the program's authority.
116
+ if (meta.evidence === 'tampering') return TAMPERING_WITHOUT_CONSEQUENCE.has(rule) ? [] : [ESCALATES];
117
+ if (meta.evidence === 'path') {
118
+ const kinds = kindsOf(rule);
119
+ return kinds ? SINK_CLASSES[kinds.sink] : undefined;
120
+ }
121
+ return RULE_CLASSES[rule];
122
+ }
123
+
124
+ export function classesOf(finding) {
125
+ // A finding its own rule rates info asserts no defect: a clear-down before a rebuild, say.
126
+ if (finding.sev === 'info') return [];
127
+ // A vendored copy laid out exactly as the system's changes nothing a program compiles against.
128
+ if (finding.rule === 'copybook-shadows-system' && finding.layoutMatchesSystem) return [];
129
+ let classes = classesOfRule(finding.rule) || [];
130
+ // Input a program's own user gives it acts with that user's authority, unless the estate says the
131
+ // entry that starts the program runs with more.
132
+ if (ALL_RULES[finding.rule]?.whenPrivileged && finding.effect !== 'privileged') classes = classes.filter((c) => c !== ESCALATES);
133
+ if (!finding.ssrange) return classes;
134
+ const kinds = kindsOf(finding.rule);
135
+ return kinds && BOUNDED_BY_SSRANGE.has(kinds.sink) ? classes.filter((c) => c !== MUTATES) : classes;
136
+ }
137
+
138
+ // A published vulnerability CISA lists as exploited outranks any severity the tool assigns.
139
+ export const tierOf = (finding) => (finding.knownExploited && finding.knownExploited.length ? 'known-exploitable' : finding.sev);