Hi,

The Stack Trace is persistent if I try to )SAVE.
)DUMP, )LOAD, )SAVE does not reproduce the trace.

All Variables were )ERASEd

*    )FNS*
ANALYSE_READINGS_UPDATE     ANALYSE_REDINGS_UPDATE  BYTES DTSs    EDIT    H2D     H2I     H2N     H2T     ISK     LO PROCESS     RA  RAl     RAr     REC     REC_CHR REC_CHR_BYTES   RR  SAVE    SV  TEST    ∆∆

/⍝ The two functions //*ANALYSE_READINGS_UPDATE* and *ANALYSE_REDINGS_UPDATE*
⍝ have identical content.
⍝ //*ANALYSE_REDINGS_UPDATE* had A typo! After multiple updates I opened it
⍝ changed the function name to //*ANALYSE_READINGS_UPDATE*//and closed the function
⍝ then )SAVE the WS and getting the Stack Trace.

⍝ Next I )ERASEd /ANALYSE_READINGS_UPDATE - the newly created function./
⍝ Stack Trace again/
*)ERASE ANALYSE_READINGS_UPDATE*
*)DUMP*
2025-04-13  17:04:42 (GMT+2)
*)SAVE*
*** Sub-Value 0xa8d866f0 has two parents.
Child: vid=-1, _val=0x2000000200, _par=11217
Parent 2: vid=699, _val=0xa9bbc1b0_par=-1
Call stack:

----------------------------------------
-- Stack trace at Archive.cc:1129
----------------------------------------
0x7fc10352a30b __libc_start_main
0x7fc10352a248
0x403e80   main
0x5dc75b    Workspace::immediate_execution(bool)
0x46062b     Command::process_line()
0x460807      Command::process_line(UCS_string&, std::ostream*)
0x46164b       Command::do_APL_command(std::ostream&, UCS_string&)
0x4727f7        Command::cmd_SAVE(std::ostream&, UCS_string_vector const&)
0x5de93d         Workspace::save_WS(std::ostream&, LibRef, UCS_string const&, bool) 0x40f370 XML_Saving_Archive::XML_Saving_Archive(std::ostream&, std::ostream&, char const*)
0x4138f7           XML_Saving_Archive::save()
========================================
========================================

 Running )CHECK...
OK      - no stale functions
OK      - no stale values
OK      - no stale indices

==============================================================================
Assertion failed: vvp
in Function:      cmd_CHECK
in file:          Command.cc:797

C/C++ call stack:

----------------------------------------
-- Stack trace at Assert.cc:75
----------------------------------------
0x7fc10352a30b __libc_start_main
0x7fc10352a248
0x403e80   main
0x5dc75b    Workspace::immediate_execution(bool)
0x46062b     Command::process_line()
0x460807      Command::process_line(UCS_string&, std::ostream*)
0x46164b       Command::do_APL_command(std::ostream&, UCS_string&)
0x4727f7        Command::cmd_SAVE(std::ostream&, UCS_string_vector const&)
0x5de93d         Workspace::save_WS(std::ostream&, LibRef, UCS_string const&, bool) 0x40f370 XML_Saving_Archive::XML_Saving_Archive(std::ostream&, std::ostream&, char const*)
0x413955           XML_Saving_Archive::save()
0x46411c            Command::cmd_CHECK(std::ostream&, UCS_string const&)
0x423f1d             do_Assert(char const*, char const*, char const*, int)
========================================
========    ===============================   =

SI stack:


==============================================================================
*** immediate_execution() caught other exception ***

*)FNS*
ANALYSE_REDINGS_UPDATE  BYTES   DTSs    EDIT    H2D     H2I H2N     H2T     ISK     LO  PROCESS     RA  RAl     RAr     REC REC_CHR     REC_CHR_BYTES   RR  SAVE    SV  TEST    ∆∆

/⍝ After erasing the function with just the missing character *"A"* /
⍝ The )SAVE is OK!
*)ERASE ANALYSE_REDINGS_UPDATE
* *)save *
2025-04-13  17:08:21 (GMT+2)  MT631_EEEE

I hope the stack Trace has information to relate the cause to the function renaming.
Other than that I have no idea what else might have caused the stack trace.

The attached )DUMPed WS has both  ANALYSE_READINGS_UPDATE and ANALYSE_REDINGS_UPDATE included.  As I mentioned,  )LOAD, )SAVE  will not reproduce the bug. May be some of the content
pops up in the trace.

The attached )SAVEed WS ends in a nirvana.

Best Regards
Hans-Peter

#!/usr/local/bin/apl --script
 ⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝
⍝                                                                    ⍝
⍝ MT631_DDD                            2025-04-13  17:04:04 (GMT+2)  ⍝
⍝                                                                    ⍝
 ⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝

∇ANALYSE_READINGS_UPDATE;SV
 SV← (2↑¨102↓¨READINGS)≡¨⊂'62'
 READINGS_103_62 ← SV/READINGS
 (SV/READINGS)←READINGS_103_62
∇

∇ANALYSE_REDINGS_UPDATE;SV
 SV← (2↑¨102↓¨READINGS)≡¨⊂'62'
 READINGS_103_62 ← SV/READINGS
 (SV/READINGS)←READINGS_103_62
∇

∇R←BYTES DS;pv
 pv←+\(⍴DS)⍴1 0
 R←pv⊂DS
∇

∇Z←DTSs
 Z←∊'0000-' '00-' '00 ' '00:' '00:' '00' ⍕¨⎕TS[⍳6]
∇

∇r← EDIT arg; ws; cp; wp; q; o; chk_path; fn;fn_body;nl2;nl2_1;opt
 
 r←'arg:'  ('-',¨arg,¨'-')  '⍴arg:' (⍴arg) '⍴,arg:' (⍴,arg) '⍴⍴arg:' (⍴⍴arg)  
'≡arg:' (≡arg)
 
 d_arg ← ≡arg
 r_arg ← ⍴arg
 rr_arg ← ⍴⍴arg
 
 ⍝ One character function name
 →arg_is_fn ×⍳ ∧/0= d_arg,rr_arg
 
 ⍝ Function name
 →arg_is_fn ×⍳ (1=d_arg) ∧(1<r_arg)
 
 ⍝ Help signature
 →arg_is_help ×⍳ ∧/1 0= d_arg,r_arg
 
 
 ⍝ Deal with depth 2
 
 r←r ,(⊂ '⍴¨arg:'  ( ⍴¨arg) )
 ⍝2 = d_arg
 
 
 → question_1 ×⍳   0= ⍴⍴1⊃arg
 
 → general_args ×⍳   0= 1⊃⍴¨arg
 
 
 → options_present ×⍳   1= 1⊃⍴¨arg
 
 → options_unknown ×⍳   1< 1⊃⍴¨arg
 
 
 r←r,  ('###' (C arg[1]) ( ⍴⍴1⊃arg))
 
 → 0
 
 ⍝ Backups
 general_args:
 
 r←r,  ⊂(2⊃arg)
 
 →((2⊃arg) ≡ 'l')/list_bu
 →((2⊃arg) ≡ 'L')/list_bu_fns_only
 →((2⊃arg) ≡ 'c')/clean_bu_this
 →((2⊃arg) ≡ 'C')/clean_bu_all
 →((2⊃arg) ≡ '')/help
 →((2⊃arg) ≡ 'h')/help
 
 question_2:
 q←'UNKNOWN ARGUMENT: ',(⍕'¨',¨arg,¨'¨')
 r←r, ⊂q
 →0
 
 question_1:
 q←'INVALID ARGUMENT: ',(⍕'¨',¨arg,¨'¨') ,'. DID YOU MEAN ¨,',(1⊃arg),'¨?'
 r←r, ⊂q
 →0
 
 options_present:
 o←'OPTION: ' (1⊃arg) (⍴ /1⊃arg) ('f' ≡ ∊/1⊃arg) '   file:',2⊃arg
 r←r, ⊂o
 fn←2⊃arg
 opt←∊/1⊃arg
 →( 'f' ≡ opt )/begin
 
 
 options_unknown:
 o←'OPTION UNKNOWN: ',opt
 r←r, ⊂o
 →0
 
 
 ⍝ Remove backups of this fn
 clean_bu_this:
 ⎕EX ( ∨/ ( '∆∆∆_',fn) ⍷ ⎕NL 2)⌿ ⎕NL 2
 →
 
 ⍝ Remove all backups from this workspace
 clean_bu_all:
 r ←⎕EX ev←( ∨/ '∆∆∆_' ⍷ ⎕NL 2)⌿ ⎕NL 2
 →0 ×⍳ 0=1↑r
 r ← ('ERASED:' ev)
 →0
 
 ⍝ Show the backups
 list_bu:
 ( ∨/( '∆∆∆_') ⍷ ⎕NL 2)⌿ ⎕NL 2
 →
 
 list_bu_fns_only:
 ⍝ names w/o prefix, mirror, vov
 nl2←⊂[2] ⌽ 4↓[2]( ∨/( '∆∆∆_') ⍷ ⎕NL 2)⌿ ⎕NL 2
 
 ⍝ search for "_" from end end, remove time stamp, reverse mirror
 nl2_1 ← ' ', ⌽¨(nl2⍳¨'_')↓¨nl2
 
 ⍝ get the names
 ⊃1↓(~nl2_1≡¨1⌽ nl2_1)/nl2_1
 
 →
 ⍝⍝DEBUG⍝⍝
 arg_is_help:
 r←r, '' 'REQUEST HELP'
 ⍝⍝DEBUG⍝⍝           →0
 
 help:
 
 'Usage: EDIT   ( '''' | ⍬ ) |  EDIT  ( '''' | ⍬ )  arg  |  EDIT  (,opt) fn | 
EDIT fn  .'
 '       ('''' | ⍬ ) : this help.'
 '       *('''' '''' ) : specific help.'
 ' '
 
 '       fn: new or existing function name.'
 '       fn location on disk: workspaces/WS_NAME/FN.APL'
 ' '
 ' '
 '       opt: '
 '       (,''f'') : force overwrite function on disk.'
 ' '
 '       ('''' | ⍬ )  a | l | L | c | C | *b | *B: '
 '       a : analyse arguments - using'
 '             ⊃EDIT¨  (''F'') (''XX'') (''name'') ('''' ''X'' )('''' ''asd'') 
(''Q'' '''') (''W'' ''X'' )(''E'' ''asd'') ((,''Q'') '''') ((,''W'') ''X'' 
)((,''E'') ''asd'') (''QQQ'' '''') (''WWW'' ''X'' )(''EEE'' ''asd'') ('''' 
'''') '
 '       l : list backups of functions edited with EDIT.'
 '       L : list Functionnames only of backups of functions edited with EDIT.'
 '       c : clear backup of this function.'
 '       C : clear backup of ALL fuctions.'
 '      *b : backup after reload from editor.'
 '      *B : backup after reload from editor. Remove older backups'
 ' '
 '      Use ¨∆¨ to copy the most recent <FUNCTION>.APL from edit path into WS.'
 ' '
 '      * = TODO'
 ''
 
 r←''
 → 0
 
 arg_is_fn:
 fn←arg
 r← ('EDITING' fn)
 
 
 begin:
 
 ⎕EX 'r'
 
 ⍝ Get the name of ws to store this FN in name scope
 ⍝ path only . remove fn name
 ws←3↓1⊃⍎')WSID'
 ws ← (~ ∨\ws ∊ '/') / ws
 
 ⍝
 ⍝ Check that we are within the proper working location
 ⍝ TODO - what if not?
 cp ← 1⊃⍎')HOST pwd'
 wp ← '/home/joy'
 ⍎(~(cp,'/workspaces') ≡ wp,'/workspaces')/'→0,0⍴⎕←''PWD NOT ',cp,'. Change to 
',wp,''''
 ws '-' cp '-'  wp
 
 ⍝
 ⍝ Create name space path if not yet done.  else go to check options
 ⍝⍝∆∆⍝⍝ SRG 2025-02-11
 chk_path ← ⍎ 2⊃ ⍎')HOST [ -d workspaces/',ws,' ]'
 → (chk_path = 0) / check_option
 
 ⍝ Create dir and store function in file
 ⍝ Because it is not there yet
 ⍎ ')HOST mkdir workspaces/',ws
 
 ⍝ Create fn in ws and as file if newly created
 ⍎(0 = ⎕NC fn)/'⎕FX fn'
 → make_dump
 
 check_option:
 ⍝ Option f[force] will force write FN to file
 ⍝⍝--⍝⍝ →(0 = ⎕NC 'opt')/start_edit
 →(0 = ⎕NC 'opt')/check_file_exits
 
 
 ⍎ (opt ≠ 'f')/next_opt
 ⍝ make  )DUMP equivalent
 make_dump:
 sign    ← ⊂'⍝','∆∆∆'
 fn_body ← ⊂[2]⎕CR fn
 edit_ts ← ⊂ '⍝ ', DTSs
 fn_body ←  ∊¨(  '#!/usr/local/bin/apl --script'  ('⎕FX ⎕INP ','''',sign,'''') 
), fn_body ,edit_ts, sign
 fn_body ⎕FIO[56] 'workspaces/',ws,'/',fn,'.APL'
 →start_edit
 
 ⍝ ⊃fn_body
 next_opt:
 →start_edit
 
 check_file_exits:
 rc ←     ⎕FIO[ 3] 'workspaces/',ws,'/',fn,'.APL'
 → (rc<0)/make_dump
 
 start_edit:
 
 ⍝ just one long series of digits
 ⍝⍝∆∆⍝⍝ SRG  2025-02-12_11:13:21
 ts←('5000 00 00 _ 00 00 00'⍕6↑⎕TS) ~ ' '
 
 ⍝ create backup name space
 bun←∊'∆∆∆_' fn '_' ts
 
 ⍝ canonical content backup function
 buf←⎕CR fn
 
 ⍝ Line numbers prefix.
 ln ← ⊃'[',¨(⍕¨¯1+⍳1↑⍴buf),¨⊂'] '
 
 ⍝ Save function as backup in current ws.
 ⍎ bun, '← ln,  buf'
 
 'EDITING  workspaces/',ws,'/',fn,'.APL'
 ⍎ ')HOST vs_apl workspaces/',ws,'/',fn,'.APL'
 
 'To load the most recent edited <',fn,'> execute ∆∆.'
 'To load the most recent saved <',fn,'> execute ∆.'
 ⍝ ⎕FX ⊃ '∆;wsid;fns_list'  'wsid←3↓ ∊ ⍎ '')wsid''' '⍝ Copy the most recend 
saved function from VS'   'fns_list← ⍎'')HOST ls -t '',wsid,''/*'''  '⍎ '')COPY 
'', 1⊃fns_list '
 ⍝ [0]   ∆;wsid;fns_list;lib;path
 ⍝ [1]   wsid←3↓ ∊ ⍎ ')wsid'
 ⍝ [2]   lib←∊ ⍎ ')libs 0 *'
 ⍝ [3]
 ⍝ [4]  ⍝ Copy the most recend saved function from VS
 ⍝ [5]   path←lib,'/',wsid
 ⍝ [6]   fns_list← ⍎')HOST ls -t ',path,'/*'
 ⍝ [7]   ⍎ ')COPY ', 1⊃fns_list
 
 ⎕FX ⊃ '∆∆'  (' ⍎ '')COPY ',ws,'/',fn,'.APL''')
 ⍝ TODO: compare WS-FN and FS-FN - which is older
 
 ⍝ 2020-12-22 22:13:35
 ⍝ 2021-08-31 16:25:17
 ⍝ 2021-08-31 16:29:55
 ⍝ 2021-08-31 16:33:06
 ⍝ 2021-08-31 16:34:09
 ⍝ 2021-08-31 19:18:05
 ⍝ 2021-08-31 23:21:51
 ⍝ 2025-02-12 21:29:43
 ⍝ 2025-02-13 15:01:57
 ⍝ 2025-02-27 19:20:59
 ⍝ 2025-03-14 12:16:17
∇

∇D←H2D X
 D←⎕AV[1+ 16 16⊥¯1+ '0123456789abcdef'⍳X]
∇

∇R←H2I X
 R←((⍴X)⍴16)⊥¯1+'0123456789abcdef'⍳X
∇

∇N←H2N X
 N←((⍴X)⍴16)⊥¯1+ '0123456789abcdef'⍳X
∇

∇D←H2T X
 D←⎕AV[1+16 16⊥¯1+ '0123456789abcdef'⍳X]
∇

∇ISK
 H2D¨BYTES ¯2↓REC_CHR
 'ISK' '<>' ( ⊂[1]'0123456789abcdef' [1+16 16 ⊤¯1+⎕av⍳'ISK'])
 id←'00 9428 4339'
 'ID:' id ( H2N '00059eaa33') '00059eaa33'
∇

∇R←LO ARG
 F1←'6200620072630101'
 F2←'76010105'
 F3←'007605'
 F4←'6200620072630701'
 F5←'0b0a0149534b'
 F6←'00059eaa33'
 F7←'010101010b0a05'
 F8←'010101010101'
 F9←'72620165'
 R←''
 →ERROR_HEAD×⍳~(16↑ARG)≡'1b1b1b1b01010101'
 →ERROR_LENGTH×⍳ ~(⍴ARG)∊425
 sv←F1 SV ARG
 sv←sv∨F2 SV ARG
 sv←sv∨F3 SV ARG
 sv←sv∨F4 SV ARG
 sv←sv∨F5 SV ARG
 sv←sv∨F6 SV ARG
 sv←sv∨F7 SV ARG
 sv←sv∨F8 SV ARG
 sv←sv∨F9 SV ARG
 pv←1↓+\1,sv
 Rec←pv⊂ARG
 R←Rec
 
 →0
 ERROR_HEAD:
 'ERROR HEAD' ARG
 →0
 ERROR_LENGTH:
 'ERROR LENGTH (425)' (⍴ARG) ARG
∇

∇PROCESS
 ⍝ RA ¨ (⊂'' 0 0 0),¨ ⊂¨REC_CHR 2
 ⊃⍉ ¨,[1.1]¨RAl ¨ (⊂'' 0 0 0),¨ ⊂¨REC_CHR 20
 
∇

∇R←RA ARG
 ⍝  RA - Record Analyser
 
 ⍝ TODO:
 ⍝ Return Values only  ( in order )
 ⍝ Return IDs and Values only
 ⍝ Return tree like Message decomposition (make INDENT Working.
 ⍝ Return a specific value
 ⍝ Analyse nonconforming records
 ⍝ CRC processing (last two bytes)
 
 (FLD_ID FLD_CNT FLD_NUM INDENT RAW)←ARG
 FLD_ID FLD_CNT FLD_NUM (2↑RAW)
 
 →HEAD×⍳(16↑RAW)≡'1b1b1b1b01010101'
 ⍝ '######' RAW
 →L_7×⍳ '7' ≡ 1⊃RAW
 ⍝→L_76×⍳(2↑RAW)≡'76'
 →L_00×⍳'00' ≡ 2↑RAW
 →L_01×⍳'01' ≡ 2↑RAW
 →L_01×⍳'01' ≡ 2↑RAW
 →L_07×⍳'07' ≡ 2↑RAW
 →L_04×⍳'04' ≡ 2↑RAW
 →L_05×⍳'05' ≡ 2↑RAW
 →L_52×⍳'52' ≡ 2↑RAW
 →L_62×⍳'62' ≡ 2↑RAW
 →L_63×⍳'63' ≡ 2↑RAW
 →L_65×⍳'65' ≡ 2↑RAW
 
 →L_6032×⍳'6032010101010101'      ≡ 16↑RAW
 →L_6001×⍳'600100ff010101010b0a01'≡ 22↑RAW
 
 ⍝→L_07×⍳'070100' ≡ 6↑RAW
 →L_08×⍳'0800ff' ≡ 6↑RAW
 →L_0B×⍳'0b0a01' ≡ (L←6)↑RAW  ⍝ ISK follows
 →L_1B×⍳'1b1b1b1b1a01' ≡ (L←12)↑RAW
 
 →L_FF×⍳'ffff'   ≡ 4↑RAW
 
 →ISK_SN×⍳ '49534b00059eaa33'≡ 16↑RAW
 →ISK×⍳ '49534b'             ≡  6↑RAW
 ⍝→L_72×⍳(2↑RAW)≡'72'
 
 →ERROR_NO_FIELD_ID
 
 HEAD:
 R←(⊂'#########################') (16↑RAW) ( RA '' 0 0 0 (16↓RAW ))
 → END
 
 L_7:
 CNT←⍎2⊃RAW
 R←(2↑RAW ) (RA '7' CNT (CNT-1) (INDENT+2) (2↓RAW) )
 
 →END
 
 
 L_00:
 R←'00' (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT ( 2↓RAW))
 →END
 
 L_01:
 R←'01' (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT ( 2↓RAW))
 →END
 
 L_04:
 VAL ←6↑(2↓RAW)
 R←'04' VAL (∊H2T¨ (2/⍳.5×⍴VAL)⊂ VAL) (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT ( 
8↓RAW))
 →END
 
 L_05:
 VAL ←8↑(2↓RAW)
 R←'05' VAL (H2I VAL) (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT (10↓RAW) )
 →END
 
 L_07:
 VAL ←12↑(2↓RAW)
 R← '07' VAL (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT (14↓RAW))
 →END
 
 L_08:
 VAL ←L↑RAW
 R← VAL (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT ( L↓RAW)                         )
 →END
 
 L_6032:
 R←(16↑RAW )(RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (16↓RAW))
 →END
 
 L_6001:
 R←(22↑RAW )(RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (22↓RAW))
 →END
 
 L_52:
 VAL ←2↑(2↓RAW)
 R←'52' VAL (RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (4↓RAW) )
 →END
 
 L_62:
 VAL ←2↑(2↓RAW)
 R←'62' VAL  (RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (4↓RAW))
 →END
 
 L_63:
 VAL ←4↑(2↓RAW)
 R←'63' VAL   (RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (6↓RAW))
 →END
 
 L_65:
 VAL ←8↑(2↓RAW)
 R←'65' VAL (H2I VAL) (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT (10↓RAW) )
 →END
 
 L_0B:
 VAL ←10↑(12↓RAW)
 R←(6↑RAW) 'ISK'  (H2I  VAL)  (RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (22↓RAW))
 →END
 
 ⍝ END OF RECORD + PARITY
 L_1B:
 R←(L↑RAW) (L↓RAW) (H2I  L↓RAW)
 #RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (L↓RAW)
 →END
 
 L_FF:
 R←(4↑RAW )(RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (4↓RAW))
 →END
 
 
 ISK_SN:
 VAL ←10↑(6↓RAW)
 R←'ISK'  ( H2I  VAL)
 R
 RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (16↓RAW)
 →END
 
 ISK:
 
 R←'ISK'
 R
 RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (6↓RAW)
 →END
 
 
 L_72:
 ERROR_HEAD:
 'ERROR HEAD' ARG
 →0
 
 ERROR_NO_FIELD_ID:
 R←'ERROR_NO_FIELD_ID' (2↑ARG) ARG
 →0
 
 END:
 →0
 ⍝ 2025-04-11 23:22:04
∇

∇R←RAl ARG ;RAW
 ⍝  RAl - Record Analyser loop
 
 ⍝ TODO:
 ⍝ Return Values only  ( in order )
 ⍝ Return IDs and Values only
 ⍝ Return tree like Message decomposition (make INDENT Working.
 ⍝ Return a specific value
 ⍝ Analyse nonconforming records
 ⍝ CRC processing (last two bytes)
 DATA←1
 
 (FLD_ID FLD_CNT FLD_NUM INDENT RAW)←ARG
 INDENT←⍴0
 
 E←''
 
 →START
 
 ⍝ Begin new analysis of remaining data
 BEG:
 
 ⍝ Collect data from previous cycle
 ATT ← ⊂ FLD_ID FLD_CNT FLD_NUM INDENT ((2×⍴,INDENT)⍴' ') R
 ⍎(DATA = 0)/ 'ATT←⍬'
 ⍎(DATA = 1)/ 'ATT←∊3⊃⊃R'
 E←E,ATT
 FLD_NUM  ← FLD_NUM  - 1
 
 ⍎(0<⍴INDENT)/'INDENT←INDENT- (-⍴INDENT)↑1'
 INDENT←(INDENT>0)/INDENT
 
 ⍝ If done leave loop
 → END ×⍳ 0=⍴RAW
 START:
 ⍎(DATA=1)/'DATA←0'
 
 
 →HEAD×⍳(16↑RAW)≡'1b1b1b1b01010101'
 ⍝ '######' RAW
 →L_7×⍳ '7' ≡ 1⊃RAW
 ⍝→L_76×⍳(2↑RAW)≡'76'
 →L_00×⍳'00' ≡ 2↑RAW
 →L_01×⍳'01' ≡ 2↑RAW
 →L_01×⍳'01' ≡ 2↑RAW
 →L_07×⍳'07' ≡ 2↑RAW
 →L_04×⍳'04' ≡ 2↑RAW
 →L_05×⍳'05' ≡ 2↑RAW
 →L_52×⍳'52' ≡ 2↑RAW
 →L_62×⍳'62' ≡ 2↑RAW
 →L_63×⍳'63' ≡ 2↑RAW
 →L_65×⍳'65' ≡ 2↑RAW
 
 →L_6032×⍳'6032010101010101'      ≡ 16↑RAW
 →L_6001×⍳'600100ff010101010b0a01'≡ 22↑RAW
 
 ⍝→L_07×⍳'070100' ≡ 6↑RAW
 →L_08×⍳'0800ff' ≡ 6↑RAW
 →L_0B×⍳'0b0a01' ≡ (L←6)↑RAW  ⍝ ISK follows
 →L_1B×⍳'1b1b1b1b1a01' ≡ (L←12)↑RAW
 
 →L_FF×⍳'ffff'   ≡ 4↑RAW
 
 →ISK_SN×⍳ '49534b00059eaa33'≡ 16↑RAW
 →ISK×⍳ '49534b'             ≡  6↑RAW
 ⍝→L_72×⍳(2↑RAW)≡'72'
 
 →ERROR_NO_FIELD_ID
 
 HEAD:
 R←⊂(⊂'#########################') (16↑RAW)  ⋄ RAW ←  16↓RAW
 →BEG
 
 L_7:
 CNT←⍎2⊃RAW
 FLD_CNT ← CNT
 FLD_NUM ← CNT
 INDENT←INDENT,CNT+1
 R←(2↑RAW)                                    ⋄  RAW ←  2↓RAW   ⍝ (RA '7' CNT 
(CNT-1) (INDENT+2)          ( 2↓RAW))
 →BEG
 
 
 L_00:
 R←,⊂2↑RAW                                     ⋄  RAW ←  2↓RAW   ⍝ (RA  FLD_ID 
FLD_CNT  (FLD_NUM-1) INDENT ( 2↓RAW))
 ⍝INDENT←INDENT +(-⍴INDENT)↑1
 →BEG
 
 L_01:
 R← ,⊂2↑RAW                                     ⋄  RAW ←  2↓RAW   ⍝ (RA  FLD_ID 
FLD_CNT  (FLD_NUM-1) INDENT ( 2↓RAW))
 ⍝INDENT←INDENT +(-⍴INDENT)↑1
 →BEG
 
 L_04:
 VAL ←6↑(2↓RAW)
 R←(⊂(2↑RAW) VAL (∊H2T¨ (2/⍳.5×⍴VAL)⊂ VAL) )        ⋄  RAW ←  8↓RAW   ⍝ (RA  
FLD_ID FLD_CNT  (FLD_NUM-1) INDENT ( 8↓RAW))
 →BEG
 
 L_05:
 VAL ←8↑(2↓RAW)
 R←⊂(2↑RAW) VAL (H2I VAL)                         ⋄  RAW ← 10↓RAW   ⍝ (RA  
FLD_ID FLD_CNT  (FLD_NUM-1) INDENT (10↓RAW))
 ⍎(DATA=0)/'DATA←1'
 →BEG
 
 L_07:
 VAL ←12↑(2↓RAW)
 R←⊂(2↑RAW) VAL                                  ⋄  RAW ← 14↓RAW   ⍝ (RA  
FLD_ID FLD_CNT  (FLD_NUM-1) INDENT (14↓RAW))
 →BEG
 
 L_08:
 VAL ←L↑RAW
 R← ⊂VAL                                       ⋄  RAW ←  L↓RAW   ⍝ (RA  FLD_ID 
FLD_CNT  (FLD_NUM-1) INDENT ( L↓RAW))
 →BEG
 
 L_6032:
 R←(16↑RAW )                                  ⋄  RAW ← 16↓RAW   ⍝ (RA  FLD_ID 
FLD_CNT (FLD_NUM-1) INDENT  (16↓RAW))
 →BEG
 
 L_6001:
 R←(22↑RAW )                                  ⋄  RAW ← 22↓RAW   ⍝ (RA  FLD_ID 
FLD_CNT (FLD_NUM-1) INDENT  (22↓RAW))
 →BEG
 
 L_52:
 VAL ←2↑(2↓RAW)
 R←⊂(2↑RAW) VAL                                   ⋄  RAW ←  4↓RAW   ⍝ (RA  
FLD_ID FLD_CNT (FLD_NUM-1) INDENT  ( 4↓RAW))
 →BEG
 
 L_62:
 VAL ←2↑(2↓RAW)
 R←⊂(2↑RAW) VAL                                   ⋄  RAW ←  4↓RAW   ⍝ (RA  
FLD_ID FLD_CNT (FLD_NUM-1) INDENT  ( 4↓RAW))
 →BEG
 
 L_63:
 VAL ←4↑(2↓RAW)
 R←⊂(2↑RAW) VAL                                   ⋄  RAW ←  6↓RAW   ⍝ (RA  
FLD_ID FLD_CNT (FLD_NUM-1) INDENT  ( 6↓RAW))
 →BEG
 
 L_65:
 VAL ←8↑(2↓RAW)
 R←⊂(2↑RAW) VAL (H2I VAL)                         ⋄  RAW ← 10↓RAW   ⍝ (RA  
FLD_ID FLD_CNT  (FLD_NUM-1) INDENT (10↓RAW))
 ⍎(DATA=0)/'DATA←1'
 →BEG
 
 L_0B:
 VAL ←10↑(12↓RAW)
 R←⊂(6↑RAW) 'ISK'  (H2I  VAL)                  ⋄  RAW ← 22↓RAW   ⍝ (RA  FLD_ID 
FLD_CNT (FLD_NUM-1) INDENT  (22↓RAW))
 ⍝INDENT←INDENT +(-⍴INDENT)↑1
 →BEG
 
 ⍝ END OF RECORD + PARITY
 L_1B:
 R←⊂(L↑RAW) (L↓RAW) (H2I  L↓RAW)
 RAW ←  L↓RAW   #  RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT  ( L↓RAW)
 →END
 
 L_FF:
 R←⊂(4↑RAW )                                   ⋄  RAW ←  4↓RAW   ⍝ (RA  FLD_ID 
FLD_CNT (FLD_NUM-1) INDENT  ( 4↓RAW))
 →BEG
 
 ⍝⍝ Obsolete
 ISK_SN:
 VAL ←10↑(6↓RAW)
 R←'ISK'  ( H2I  VAL)
 R
 RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (16↓RAW)
 →BEG
 
 ⍝⍝ Obsolete
 ISK:
 R←'ISK'
 R
 RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (6↓RAW)
 →BEG
 
 
 L_72:
 ERROR_HEAD:
 'ERROR HEAD' RAW
 →0
 
 ERROR_NO_FIELD_ID:
 R←'ERROR_NO_FIELD_ID' (2↑RAW) RAW
 →0
 
 END:
 ⍝ Return collection
 ⍝ 1109310 369770 184335 1109311 184335 1835268 1109312
 R←E[1 2 3 6]
 →0
 ⍝ 2025-04-11 23:22:04
 ⍝ 2025-04-12 14:53:43
∇

∇R←RAr ARG
 ⍝  RAr - Record Analyser recursive
 
 ⍝ TODO:
 ⍝ Return Values only  ( in order )
 ⍝ Return IDs and Values only
 ⍝ Return tree like Message decomposition (make INDENT Working.
 ⍝ Return a specific value
 ⍝ Analyse nonconforming records
 ⍝ CRC processing (last two bytes)
 
 (FLD_ID FLD_CNT FLD_NUM INDENT RAW)←ARG
 FLD_ID FLD_CNT FLD_NUM (2↑RAW)
 
 →HEAD×⍳(16↑RAW)≡'1b1b1b1b01010101'
 ⍝ '######' RAW
 →L_7×⍳ '7' ≡ 1⊃RAW
 ⍝→L_76×⍳(2↑RAW)≡'76'
 →L_00×⍳'00' ≡ 2↑RAW
 →L_01×⍳'01' ≡ 2↑RAW
 →L_01×⍳'01' ≡ 2↑RAW
 →L_07×⍳'07' ≡ 2↑RAW
 →L_04×⍳'04' ≡ 2↑RAW
 →L_05×⍳'05' ≡ 2↑RAW
 →L_52×⍳'52' ≡ 2↑RAW
 →L_62×⍳'62' ≡ 2↑RAW
 →L_63×⍳'63' ≡ 2↑RAW
 →L_65×⍳'65' ≡ 2↑RAW
 
 →L_6032×⍳'6032010101010101'      ≡ 16↑RAW
 →L_6001×⍳'600100ff010101010b0a01'≡ 22↑RAW
 
 ⍝→L_07×⍳'070100' ≡ 6↑RAW
 →L_08×⍳'0800ff' ≡ 6↑RAW
 →L_0B×⍳'0b0a01' ≡ (L←6)↑RAW  ⍝ ISK follows
 →L_1B×⍳'1b1b1b1b1a01' ≡ (L←12)↑RAW
 
 →L_FF×⍳'ffff'   ≡ 4↑RAW
 
 →ISK_SN×⍳ '49534b00059eaa33'≡ 16↑RAW
 →ISK×⍳ '49534b'             ≡  6↑RAW
 ⍝→L_72×⍳(2↑RAW)≡'72'
 
 →ERROR_NO_FIELD_ID
 
 HEAD:
 R←(⊂'#########################') (16↑RAW) ( RA '' 0 0 0 (16↓RAW ))
 → END
 
 L_7:
 CNT←⍎2⊃RAW
 R←(2↑RAW ) (RA '7' CNT (CNT-1) (INDENT+2) (2↓RAW) )
 
 →END
 
 
 L_00:
 R←'00' (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT ( 2↓RAW))
 →END
 
 L_01:
 R←'01' (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT ( 2↓RAW))
 →END
 
 L_04:
 VAL ←6↑(2↓RAW)
 R←'04' VAL (∊H2T¨ (2/⍳.5×⍴VAL)⊂ VAL) (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT ( 
8↓RAW))
 →END
 
 L_05:
 VAL ←8↑(2↓RAW)
 R←'05' VAL (H2I VAL) (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT (10↓RAW) )
 →END
 
 L_07:
 VAL ←12↑(2↓RAW)
 R← '07' VAL (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT (14↓RAW))
 →END
 
 L_08:
 VAL ←L↑RAW
 R← VAL (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT ( L↓RAW)                         )
 →END
 
 L_6032:
 R←(16↑RAW )(RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (16↓RAW))
 →END
 
 L_6001:
 R←(22↑RAW )(RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (22↓RAW))
 →END
 
 L_52:
 VAL ←2↑(2↓RAW)
 R←'52' VAL (RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (4↓RAW) )
 →END
 
 L_62:
 VAL ←2↑(2↓RAW)
 R←'62' VAL  (RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (4↓RAW))
 →END
 
 L_63:
 VAL ←4↑(2↓RAW)
 R←'63' VAL   (RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (6↓RAW))
 →END
 
 L_65:
 VAL ←8↑(2↓RAW)
 R←'65' VAL (H2I VAL) (RA FLD_ID FLD_CNT (FLD_NUM-1) INDENT (10↓RAW) )
 →END
 
 L_0B:
 VAL ←10↑(12↓RAW)
 R←(6↑RAW) 'ISK'  (H2I  VAL)  (RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (22↓RAW))
 →END
 
 ⍝ END OF RECORD + PARITY
 L_1B:
 R←(L↑RAW) (L↓RAW) (H2I  L↓RAW)
 #RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (L↓RAW)
 →END
 
 L_FF:
 R←(4↑RAW )(RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (4↓RAW))
 →END
 
 
 ISK_SN:
 VAL ←10↑(6↓RAW)
 R←'ISK'  ( H2I  VAL)
 R
 RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (16↓RAW)
 →END
 
 ISK:
 
 R←'ISK'
 R
 RA  FLD_ID FLD_CNT (FLD_NUM-1) INDENT (6↓RAW)
 →END
 
 
 L_72:
 ERROR_HEAD:
 'ERROR HEAD' ARG
 →0
 
 ERROR_NO_FIELD_ID:
 R←'ERROR_NO_FIELD_ID' (2↑ARG) ARG
 →0
 
 END:
 →0
 ⍝ 2025-04-11 23:22:04
∇

∇R←REC
 R←426 ⎕FIO[ 8] ⎕FIO[ 3] 'YYYY'
∇

∇R←REC_CHR N;H;Rec
 ⍝ Setup
 H←⎕FIO[3] 'YYYY'
 R←''
 
 
 ⍝ Read multiple records if N≠1
 READ:
 Rec←426 ⎕FIO[8] H
 
 ⍝ In case - skip now - FIXME later
 ⍝  426  above includes NL. NL will be discarded. We are left with 425 chars
 →END×⍳425 >⍴Rec
 
 ⍝  Collect records.
 R←R,⊂ ⎕AV[1+Rec]
 →READ ×⍳ N≡''
 
 ⍝  Else take N as number of records to be read.
 →READ ×⍳ 0 < N←N-1
 
 END:
 H ← ⎕FIO[4] H
∇

∇R←REC_CHR_BYTES N;H;Rec
 ⍝ Setup
 H←⎕FIO[3] 'YYYY'
 R←''
 
 
 ⍝ Read multiple records if N≠1
 READ:
 Rec←426 ⎕FIO[8] H
 
 ⍝ In case - skip now - FIXME later
 ⍝  426  above includes NL. NL will be discarded. We are left with 425 chars
 →END×⍳425 >⍴Rec
 
 ⍝  Collect records.
 R←R,⊂ ⎕AV[1+Rec]
 →READ ×⍳ N≡''
 
 ⍝  Else take N as number of records to be read.
 →READ ×⍳ 0 < N←N-1
 
 END:
 H ← ⎕FIO[4] H
∇

∇RR;Rec;Hy;Hz
 ⍝ Raw Reader
 Hy←⎕FIO[ 3] 'YYYY'
 Hz←⎕FIO[ 3] 'ZZZZ'
 NEXT: →END ×⍳ 10 < N←N+1
 ⍝  426 Includes NewLine
 Rec←426 ⎕FIO[ 8] Hy
 ⍝  424 NewLine removed
 →ERL×⍳(⍴Rec)<424
 LO ⎕AV[1+Rec]
 →NEXT
 
 ERL:
 ⍝ Error Record Lenght
 'ERROR RECORD LENGTH' (⍴Rec) Rec
 →END×⍳ 0=⍴Rec
 →NEXT
 
 END:
 ⎕FIO[4] Hy
 ⍎ (Hz > 0)/'⎕FIO[4] Hz'
∇

∇SAVE  ;name_of_WS ;apl ;act
 name_of_WS ← NAME_OF_WS
 
 act← 3↓ ∊ ⍎ ')WSID '
 → no_ws_name_change ×⍳ act ≡  name_of_WS
 
 ⍎ ')WSID ',name_of_WS
 
 no_ws_name_change:
 
 0↑EDIT '' 'C'
 →save
 apl←(¯4↓name_of_WS),'.apl'
 ⍎')DUMP ',apl
 'DUMPED' apl
 
 save:
 ⍎')SAVE '
 'SAVED' name_of_WS
 
 ⍝ 2025-02-27 19:07:27
∇

∇R←Filter SV ARG;sv
 sv←Filter⍷ARG
 sv[(⍴Filter)+sv/(⍳⍴sv)]←1
 R←sv
∇

∇TEST
 ')RESET'
 ∆∆
 SAVE
 PROCESS
∇

∇∆∆
 ⍎ ')COPY MT631/RAl.APL'
∇

⎕CT←1E¯13

⎕FC←".,⋆0_¯"

⎕IO←1

⎕L←0

⎕LX←""

⎕PP←10

⎕PR←' '

⎕PS←0 0

⎕PW←1024

⎕R←0

⎕RL←16807

⎕TZ←2

⎕X←0







<?xml version='1.0' encoding='UTF-8' standalone='yes'?>

<!DOCTYPE Workspace
[
    <!ELEMENT Workspace (Function*, Value*, Ravel*, SymbolTable,
                         Symbol*, Commands?, StateIndicator)>
    <!ATTLIST Workspace  wsid       CDATA #REQUIRED>
    <!ATTLIST Workspace  year       CDATA #REQUIRED>
    <!ATTLIST Workspace  month      CDATA #REQUIRED>
    <!ATTLIST Workspace  day        CDATA #REQUIRED>
    <!ATTLIST Workspace  hour       CDATA #REQUIRED>
    <!ATTLIST Workspace  minute     CDATA #REQUIRED>
    <!ATTLIST Workspace  second     CDATA #REQUIRED>
    <!ATTLIST Workspace  timezone   CDATA #REQUIRED>
    <!ATTLIST Workspace  saving_SVN CDATA #REQUIRED>
    <!ATTLIST Workspace  syntax     CDATA #IMPLIED>

        <!ELEMENT Value (#PCDATA)>
        <!ATTLIST Value flg    CDATA #REQUIRED>
        <!ATTLIST Value vid    CDATA #REQUIRED>
        <!ATTLIST Value parent CDATA #IMPLIED>
        <!ATTLIST Value rk     CDATA #REQUIRED>
        <!ATTLIST Value sh-0   CDATA #IMPLIED>
        <!ATTLIST Value sh-1   CDATA #IMPLIED>
        <!ATTLIST Value sh-2   CDATA #IMPLIED>
        <!ATTLIST Value sh-3   CDATA #IMPLIED>
        <!ATTLIST Value sh-4   CDATA #IMPLIED>
        <!ATTLIST Value sh-5   CDATA #IMPLIED>
        <!ATTLIST Value sh-6   CDATA #IMPLIED>
        <!ATTLIST Value sh-7   CDATA #IMPLIED>

        <!ELEMENT Ravel (#PCDATA)>
        <!ATTLIST Ravel vid    CDATA #REQUIRED>
        <!ATTLIST Ravel bytes  CDATA #IMPLIED>
        <!ATTLIST Ravel cells  CDATA #IMPLIED>
        <!ATTLIST Ravel depth  CDATA #IMPLIED>

        <!ELEMENT SymbolTable (Symbol*)>
        <!ATTLIST SymbolTable size CDATA #REQUIRED>

            <!ELEMENT Symbol (unused-name | Variable | Function|
                              Label       | Shared-Variable)*>
            <!ATTLIST Symbol name       CDATA #REQUIRED>
            <!ATTLIST Symbol stack-size CDATA #REQUIRED>

                <!ELEMENT unused-name EMPTY>

                <!ELEMENT Variable (#PCDATA)>
                <!ATTLIST Variable vid CDATA #REQUIRED>

                <!ELEMENT Function (UCS*)>
                <!ATTLIST Function fid             CDATA #REQUIRED>
                <!ATTLIST Function creation-time   CDATA #IMPLIED>
                <!ATTLIST Function LO-fid          CDATA #IMPLIED>
                <!ATTLIST Function OPER-fid        CDATA #IMPLIED>
                <!ATTLIST Function RO-fid          CDATA #IMPLIED>
                <!ATTLIST Function AXIS-vid        CDATA #IMPLIED>
                <!ATTLIST Function exec-properties CDATA #IMPLIED>
                <!ATTLIST Function macro           CDATA #IMPLIED>
                <!ATTLIST Function tag             CDATA #IMPLIED>

                <!ELEMENT Label (#PCDATA)>
                <!ATTLIST Label value CDATA #REQUIRED>

                <!ELEMENT Shared-Variable (#PCDATA)>
                <!ATTLIST Shared-Variable key CDATA #REQUIRED>

        <!ELEMENT UCS (#PCDATA)>
        <!ATTLIST UCS uni CDATA #REQUIRED>

        <!ELEMENT Commands (Command*)>
        <!ATTLIST Commands size CDATA #REQUIRED>

            <!ELEMENT Command (#PCDATA)>
            <!ATTLIST Command name       CDATA #REQUIRED>
            <!ATTLIST Command mode       CDATA #REQUIRED>
            <!ATTLIST Command fun        CDATA #REQUIRED>

        <!ELEMENT StateIndicator (SI-entry*)>
        <!ATTLIST StateIndicator levels CDATA #REQUIRED>

            <!ELEMENT SI-entry ((Execute | Statements | UserFunction),
                                Parser+)>
            <!ATTLIST SI-entry level     CDATA #REQUIRED>
            <!ATTLIST SI-entry pc        CDATA #REQUIRED>
            <!ATTLIST SI-entry line      CDATA #REQUIRED>

                <!ELEMENT Statements (UCS)>

                <!ELEMENT Execute (UCS)>

                <!ELEMENT UserFunction (#PCDATA)>
                <!ATTLIST UserFunction ufun-name       CDATA #IMPLIED>
                <!ATTLIST UserFunction macro-num       CDATA #IMPLIED>
                <!ATTLIST UserFunction lambda-name     CDATA #IMPLIED>
                <!ATTLIST UserFunction symbol-level    CDATA #IMPLIED>

                <!ELEMENT Parser (Token*, Function*)>
                <!ATTLIST Parser size           CDATA #REQUIRED>
                <!ATTLIST Parser assign-pending CDATA #REQUIRED>
                <!ATTLIST Parser lookahead-high CDATA #REQUIRED>
                <!ATTLIST Parser action         CDATA #REQUIRED>
                    <!ELEMENT Token (#PCDATA)>
                    <!ATTLIST Token pc           CDATA #REQUIRED>
                    <!ATTLIST Token tag          CDATA #REQUIRED>
                    <!ATTLIST Token char         CDATA #IMPLIED>
                    <!ATTLIST Token int          CDATA #IMPLIED>
                    <!ATTLIST Token float        CDATA #IMPLIED>
                    <!ATTLIST Token real         CDATA #IMPLIED>
                    <!ATTLIST Token imag         CDATA #IMPLIED>
                    <!ATTLIST Token sym          CDATA #IMPLIED>
                    <!ATTLIST Token line         CDATA #IMPLIED>
                    <!ATTLIST Token vid          CDATA #IMPLIED>
                    <!ATTLIST Token index        CDATA #IMPLIED>
                    <!ATTLIST Token fun-id       CDATA #IMPLIED>
                    <!ATTLIST Token ufun-name    CDATA #IMPLIED>
                    <!ATTLIST Token symbol-level CDATA #IMPLIED>
                    <!ATTLIST Token comment      CDATA #IMPLIED>

]>

    <!-- hour/minute/second is )SAVE time in UTC (aka. GMT).
         timezone is +/- offset to UTC in seconds.
         local time is UTC + offset -->

<Workspace wsid="MT631_DDD" year="2025" month="4" day="13"
           hour="15" minute="4" second="6" timezone="7200"
           saving_SVN=" 1860" syntax="1.9.1">

  <!-- system functions and primitives... -->
  <Function fid="0x7BCCE0" tag="0x41010907"/>   <!-- primitive: ⎕AF -->
  <Function fid="0x7BCD20" tag="0x41090907"/>   <!-- primitive: ⎕AT -->
  <Function fid="0x840200" tag="0x43080907"/>   <!-- primitive: ⎕CR -->
  <Function fid="0x7BCD60" tag="0x44040907"/>   <!-- primitive: ⎕DL -->
  <Function fid="0x7BD1E0" tag="0x44070907"/>   <!-- primitive: ⎕DLX -->
  <Function fid="0x7BCDA0" tag="0x45010907"/>   <!-- primitive: ⎕EA -->
  <Function fid="0x7BCDE0" tag="0x45130907"/>   <!-- primitive: ⎕EB -->
  <Function fid="0x840260" tag="0x45030907"/>   <!-- primitive: ⎕EC -->
  <Function fid="0x7BCE20" tag="0x45090907"/>   <!-- primitive: ⎕ENV -->
  <Function fid="0x8402C0" tag="0x450D0907"/>   <!-- primitive: ⎕ES -->
  <Function fid="0x7BCE60" tag="0x45100907"/>   <!-- primitive: ⎕EX -->
  <Function fid="0x7BD220" tag="0x46070907"/>   <!-- primitive: ⎕FFT -->
  <Function fid="0x7BD2C0" tag="0x46060907"/>   <!-- primitive: ⎕FIO -->
  <Function fid="0x7BD300" tag="0x46050907"/>   <!-- primitive: ⎕FX -->
  <Function fid="0x7BD340" tag="0x47020907"/>   <!-- primitive: ⎕GTK -->
  <Function fid="0x7BD400" tag="0x4D040907"/>   <!-- primitive: ⎕MAP -->
  <Function fid="0x7BD440" tag="0x4D050907"/>   <!-- primitive: ⎕MX -->
  <Function fid="0x7BCEA0" tag="0x49060907"/>   <!-- primitive: ⎕INP -->
  <Function fid="0x7BCEE0" tag="0x4E010907"/>   <!-- primitive: ⎕NA -->
  <Function fid="0x7BCF20" tag="0x4E030907"/>   <!-- primitive: ⎕NC -->
  <Function fid="0x7BCF60" tag="0x4E040907"/>   <!-- primitive: ⎕NL -->
  <Function fid="0x7BD480" tag="0x500B0907"/>   <!-- primitive: ⎕PLOT -->
  <Function fid="0x7BD540" tag="0x500C0907"/>   <!-- primitive: ⎕PNG -->
  <Function fid="0x7BD600" tag="0x53130907"/>   <!-- primitive: ⎕RE -->
  <Function fid="0x7BD820" tag="0x52160907"/>   <!-- primitive: ⎕RVAL -->
  <Function fid="0x7BCFA0" tag="0x53040907"/>   <!-- primitive: ⎕SI -->
  <Function fid="0x7BD860" tag="0x53160907"/>   <!-- primitive: ⎕SQL -->
  <Function fid="0x7BD8E0" tag="0x530B0907"/>   <!-- primitive: ⎕SVC -->
  <Function fid="0x7BD920" tag="0x530D0907"/>   <!-- primitive: ⎕SVO -->
  <Function fid="0x7BD960" tag="0x530E0907"/>   <!-- primitive: ⎕SVQ -->
  <Function fid="0x7BD9A0" tag="0x530F0907"/>   <!-- primitive: ⎕SVR -->
  <Function fid="0x7BD9E0" tag="0x53100907"/>   <!-- primitive: ⎕SVS -->
  <Function fid="0x7BD020" tag="0x53150907"/>   <!-- primitive: ⎕STOP -->
  <Function fid="0x7BDA40" tag="0x54030907"/>   <!-- primitive: ⎕TF -->
  <Function fid="0x7BD3C0" tag="0x4A020907"/>   <!-- primitive: ⎕JSON -->
  <Function fid="0x7BDAC0" tag="0x58020907"/>   <!-- primitive: ⎕XML -->
  <Function fid="0x7BD060" tag="0x54080907"/>   <!-- primitive: ⎕TRACE -->
  <Function fid="0x7BCFE0" tag="0x55010907"/>   <!-- primitive: ⎕UCS -->
  <Function fid="0x7AF980" tag="0x43040907"/>   <!-- primitive: , -->
  <Function fid="0x7AF9C0" tag="0x43050907"/>   <!-- primitive: ⍪ -->
  <Function fid="0x7AFA00" tag="0x44050907"/>   <!-- primitive: ⌹ -->
  <Function fid="0x7AFAC0" tag="0x46040907"/>   <!-- primitive: ⍕ -->
  <Function fid="0x7AFA40" tag="0x49020907"/>   <!-- primitive: ⍳ -->
  <Function fid="0x7AFB00" tag="0x50010907"/>   <!-- primitive: ⊂ -->
  <Function fid="0x7AFB40" tag="0x50020907"/>   <!-- primitive: ⊃ -->
  <Function fid="0x7AFB80" tag="0x53070907"/>   <!-- primitive: ⍋ -->
  <Function fid="0x7AFBC0" tag="0x53080907"/>   <!-- primitive: ⍒ -->
  <Function fid="0x7AFC00" tag="0x54010907"/>   <!-- primitive: ↑ -->
  <Function fid="0x7AFC40" tag="0x44060907"/>   <!-- primitive: ↓ -->
  <Function fid="0x7AFC80" tag="0x43060909"/>   <!-- primitive: ⍨ -->
  <Function fid="0x7AFCC0" tag="0x45020909"/>   <!-- primitive: ¨ -->
  <Function fid="0x7AFF20" tag="0x52080909"/>   <!-- primitive: / -->
  <Function fid="0x7AFF60" tag="0x52090909"/>   <!-- primitive: ⌿ -->
  <Function fid="0x7AFFA0" tag="0x53010909"/>   <!-- primitive: \ -->
  <Function fid="0x7AFFE0" tag="0x53020909"/>   <!-- primitive: ⍀ -->
  <Function fid="0x7AFD40" tag="0x4908090A"/>   <!-- primitive: . -->
  <Function fid="0x7AFE00" tag="0x4A010907"/>   <!-- primitive: ∘ -->
  <Function fid="0x7AFE40" tag="0x4F05090A"/>   <!-- primitive: ∘. -->
  <Function fid="0x7AFD00" tag="0x500A090A"/>   <!-- primitive: ⍣ -->
  <Function fid="0x7AFEE0" tag="0x5206090A"/>   <!-- primitive: ⍤ -->
  <Function fid="0x7BCC80" tag="0x5A010906"/>   <!-- primitive: ⍬ -->
  <Function fid="0x7BC9C0" tag="0x45110907"/>   <!-- primitive: ⍎ -->
  <Function fid="0x7BCA00" tag="0x49010907"/>   <!-- primitive: ⌷ -->
  <Function fid="0x7BC900" tag="0x45040907"/>   <!-- primitive: ϵ -->
  <Function fid="0x7BC980" tag="0x450B0907"/>   <!-- primitive: ≡ -->
  <Function fid="0x7BCAC0" tag="0x4E080907"/>   <!-- primitive: ≢ -->
  <Function fid="0x7BC940" tag="0x45060907"/>   <!-- primitive: ⊤ -->
  <Function fid="0x7BC8C0" tag="0x44010907"/>   <!-- primitive: ⊥ -->
  <Function fid="0x7BCB80" tag="0x52140907"/>   <!-- primitive: ⌽ -->
  <Function fid="0x7BCBC0" tag="0x52150907"/>   <!-- primitive: ⊖ -->
  <Function fid="0x7BCC00" tag="0x54050907"/>   <!-- primitive: ⍉ -->
  <Function fid="0x7BCB40" tag="0x520E0907"/>   <!-- primitive: ⍴ -->
  <Function fid="0x7BCC40" tag="0x55040907"/>   <!-- primitive: ∪ -->
  <Function fid="0x7BCA40" tag="0x49070907"/>   <!-- primitive: ∩ -->
  <Function fid="0x7BCA80" tag="0x4C060907"/>   <!-- primitive: ⊣ -->
  <Function fid="0x7BCB00" tag="0x520F0907"/>   <!-- primitive: ⊢ -->
  <Function fid="0x7BDB80" tag="0x42010907"/>   <!-- primitive: ! -->
  <Function fid="0x7BDE00" tag="0x4C080907"/>   <!-- primitive: < -->
  <Function fid="0x7BDCC0" tag="0x450A0907"/>   <!-- primitive: = -->
  <Function fid="0x7BDD00" tag="0x45140907"/>   <!-- primitive: ⊤= -->
  <Function fid="0x7BE380" tag="0x55060907"/>   <!-- primitive: ⊤≠ -->
  <Function fid="0x7BDB00" tag="0x41040907"/>   <!-- primitive: ∧ -->
  <Function fid="0x7BDB40" tag="0x410E0907"/>   <!-- primitive: ⊤∧ -->
  <Function fid="0x7BE000" tag="0x4F020907"/>   <!-- primitive: ∨ -->
  <Function fid="0x7BE040" tag="0x4F060907"/>   <!-- primitive: ⊤∨ -->
  <Function fid="0x7BDDC0" tag="0x4C070907"/>   <!-- primitive: ≤ -->
  <Function fid="0x7BDE80" tag="0x4D010907"/>   <!-- primitive: ≥ -->
  <Function fid="0x7BE340" tag="0x55030907"/>   <!-- primitive: ≠ -->
  <Function fid="0x7BDD40" tag="0x46020907"/>   <!-- primitive: ⍷ -->
  <Function fid="0x7BDF80" tag="0x4E070907"/>   <!-- primitive: ⍱ -->
  <Function fid="0x7BDFC0" tag="0x4E0A0907"/>   <!-- primitive: ⊤⍱ -->
  <Function fid="0x7BDF00" tag="0x4E020907"/>   <!-- primitive: ⍲ -->
  <Function fid="0x7BDF40" tag="0x4E090907"/>   <!-- primitive: ⊤⍲ -->
  <Function fid="0x7BE140" tag="0x50040907"/>   <!-- primitive: ⋆ -->
  <Function fid="0x7BE080" tag="0x50030907"/>   <!-- primitive: + -->
  <Function fid="0x7BDEC0" tag="0x4D020907"/>   <!-- primitive: - -->
  <Function fid="0x7BE200" tag="0x52130907"/>   <!-- primitive: ? -->
  <Function fid="0x7BE3C0" tag="0x57020907"/>   <!-- primitive: ∼ -->
  <Function fid="0x7BE280" tag="0x54040907"/>   <!-- primitive: × -->
  <Function fid="0x7BDC80" tag="0x44030907"/>   <!-- primitive: ÷ -->
  <Function fid="0x7BDBC0" tag="0x43020907"/>   <!-- primitive: ○ -->
  <Function fid="0x7BE180" tag="0x52120907"/>   <!-- primitive: ⌈ -->
  <Function fid="0x7BE1C0" tag="0x52110907"/>   <!-- primitive: ⌊ -->
  <Function fid="0x7BE240" tag="0x530A0907"/>   <!-- primitive: ∣ -->
  <Function fid="0x7BDE40" tag="0x4C090907"/>   <!-- primitive: ⍟ -->

Reply via email to