uname -a: Linux verdun 4.4.0-57-generic #78-Ubuntu SMP Fri Dec 9 23:50:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
To recreate this issue: 1. Move wslib1 directory some where safe. 2. mkdir wslib1 3. cd wslib1 4. tar xzf wslib1-0-0-8.tgz 5. save prompt.apl and time.apl to workspaces 6. )load time 7. check variable time∆prompt∆add_job[1;1] w
)clear
CLEAR WS
)copy time
DUMPED 2017-10-19 90:40:53 (GMT-5)
DUMPED 2016-12-19 80:20:41 (GMT-5)
DUMPED 2016-12-17 10:50:15 (GMT-5)
DUMPED 2016-11-13 80:46:53 (GMT-5)
DUMPED 2016-11-13 80:46:53 (GMT-5)
DUMPED 2017-10-40 90:34:38 (GMT-5)
DUMPED 2016-12-17 10:50:15 (GMT-5)
DUMPED 2016-11-13 80:46:53 (GMT-5)
'*',timeâpromptâadd_job[1;1]'*'
'*',timeâpromptâadd_job[1;1]'*'
* *
wslib1-0-0-8.tgz
Description: application/compressed-tar
#! /usr/local/bin/apl --script
⍝ ********************************************************************
⍝ $Id: $
⍝ $desc: prompt system $
⍝ ********************************************************************
)copy 1 util
)copy 1 lex
∇b←prompt∆ec∆date date;bv
⍝ Edit check for a prompt object whose target is a date
→(0=b←0<+/~bv←'/'≠date)/ed
'b←0' ⎕ea 'b←3=⍴⍎bv\bv/date'
ed:
→b/0
⍞←date,' is not a valid date. '
∇
∇new←level prompt∆loop prompt;test;ans;ok;nnext;pz
⍝ Subroutine to prompt for user input.
→(2=⎕nc 'level')/pt
level←0
pt:
level←level+1
new←prompt
st:
pz←new lex∆lookup 'prompt'
⍞←pz
ans←⍞
⍝test←(∧\ans≠' ')/ans
→(util∆numberp test←util∆∆keys ans)/kw
⍎'ok←',(new lex∆lookup 'edit_check'),' ans'
→(~ok)/st
new←new lex∆assign 'ans' ans
→(~new lex∆haskey 'next')/no_next
nnext←level prompt∆loop new lex∆lookup 'next'
new←new lex∆assign 'next' nnext
new←new lex∆assign 'keyword' test←nnext lex∆lookup 'keyword'
→(prompt∆∆back=test)/st
→((level=1)∧prompt∆∆quit≠test)/st
kw:
new←new lex∆assign 'keyword' test
→0
no_next:
→0
∇
∇b←prompt∆ec∆nul ans
⍝ Edit check for a prompt object that need not be checked
b←1
∇
∇b←prompt∆ec∆fns ans
⍝ edit check for a prompt object whose target is a function.
→(b←3=⎕nc ans)/0
⍞←ans,' is not a function in this workspace. '
∇
∇b←prompt∆ec∆var ans
⍝ Edit check for a prompt object whose target is a variable
→(b←2=⎕nc ans)/0
⍞←ans,' is not a variable in this workspace. '
∇
∇b←prompt∆∆ec∆next ans
⍝ Edit check for prompt object prompt∆dialog∆n, the next prompt object
→(b←0=⍴ans)/0 ⍝ No answer is good enough
→(~b←2=⎕nc ans)/er1
→(~⍎'b←lex∆is ',ans)/er2
→(~⍎'b←',ans,' lex∆haskey ''prompt''')/er2
→(~⍎'b←',ans,' lex∆haskey ''edit_check''')/er2
⍎'b←',ans,' lex∆haskey ''ans'''
→0
er1:⍞←ans,' does not exist in the workspace. '
→0
er2:⍞←ans,' is not a prompt object. '
→0
∇
∇po←prompt∆object;resp;pt;ec;nxt
⍝ Function to create a prompt object
po←lex∆init
resp←prompt∆loop prompt∆∆dialog∆p
→(prompt∆∆quit = resp lex∆lookup 'keyword')/0
pt←resp lex∆lookup 'ans'
⍎(':'=¯1↑pt)/'pt←pt,'' '''
⍎(~∧/': '=¯2↑pt)/'pt←pt,'': '''
po←po lex∆assign 'prompt' pt
resp←resp lex∆lookup 'next'
ec←resp lex∆lookup 'ans'
po←po lex∆assign 'edit_check' ec
resp←resp lex∆lookup 'next'
nxt←resp lex∆lookup 'ans'
⍎(0≠⍴nxt)/'po←po lex∆assign (⊂''next''),⊂',nxt
po←po lex∆assign 'ans' ''
po←po lex∆assign 'keyword' prompt∆∆nul
∇
⍝ Keyword constants
prompt∆∆keyword←4 4⍴'quittop doneback'
prompt∆∆nul←¯1
prompt∆∆quit←0
prompt∆∆top←1
prompt∆∆done←2
prompt∆∆back←3
inv∆date_prompt←(lex∆init)lex∆assign 'prompt' 'Enter statement date: '
inv∆date_prompt←inv∆date_prompt lex∆assign 'edit_check' 'prompt∆ec∆date'
inv∆date_prompt←inv∆date_prompt lex∆assign 'ans' ''
inv∆date_prompt←inv∆date_prompt lex∆assign 'keyword' prompt∆∆nul
inv∆type_prompt←(lex∆init)lex∆assign 'prompt' 'Enter BS for balance sheet or
IN for income statement: '
inv∆type_prompt←inv∆type_prompt lex∆assign 'edit_check' 'inv∆edit_check∆type'
inv∆type_prompt←inv∆type_prompt lex∆assign 'ans' ''
inv∆type_prompt←inv∆type_prompt lex∆assign 'keyword' prompt∆∆nul
inv∆type_prompt←inv∆type_prompt lex∆assign 'next' inv∆date_prompt
inv∆id_prompt←(lex∆init) lex∆assign 'prompt' 'Enter stock ticker: '
inv∆id_prompt←inv∆id_prompt lex∆assign 'edit_check' 'inv∆edit_check∆ticker'
inv∆id_prompt←inv∆id_prompt lex∆assign 'ans' ''
inv∆id_prompt←inv∆id_prompt lex∆assign 'keyword' prompt∆∆nul
inv∆id_prompt←inv∆id_prompt lex∆assign 'next' inv∆type_prompt
prompt∆∆dialog∆n←(lex∆init) lex∆assign 'prompt' 'Enter name of prompt object
for next imput prompt: '
prompt∆∆dialog∆n←prompt∆∆dialog∆n lex∆assign 'edit_check' 'prompt∆∆ec∆next'
prompt∆∆dialog∆n←prompt∆∆dialog∆n lex∆assign 'ans' ''
prompt∆∆dialog∆n←prompt∆∆dialog∆n lex∆assign 'keyword' prompt∆∆nul
prompt∆∆dialog∆e←(lex∆init)lex∆assign 'prompt' 'Enter function for edit
check: '
prompt∆∆dialog∆e←prompt∆∆dialog∆e lex∆assign 'edit_check' 'prompt∆ec∆fns'
prompt∆∆dialog∆e←prompt∆∆dialog∆e lex∆assign 'ans' ''
prompt∆∆dialog∆e←prompt∆∆dialog∆e lex∆assign 'next' prompt∆∆dialog∆n
prompt∆∆dialog∆e←prompt∆∆dialog∆e lex∆assign 'keyword' prompt∆∆nul
prompt∆∆dialog∆p←(lex∆init)lex∆assign 'prompt' 'Enter text of prompt with a
colon and a space: '
prompt∆∆dialog∆p←prompt∆∆dialog∆p lex∆assign 'edit_check' 'prompt∆ec∆nul'
prompt∆∆dialog∆p←prompt∆∆dialog∆p lex∆assign 'ans' ''
prompt∆∆dialog∆p←prompt∆∆dialog∆p lex∆assign 'next' prompt∆∆dialog∆e
prompt∆∆dialog∆p←prompt∆∆dialog∆p lex∆assign 'keyword' prompt∆∆nul
stocks←30 2⍴0 ⍝ prolog ≡1
(,stocks)[⍳21]←00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(,stocks)[21+⍳20]←00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(,stocks)[41+⍳19]←00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
((⎕IO+(⊂0 0))⊃stocks)←'MMM '
((⎕IO+(⊂0 1))⊃stocks)←'3M '
((⎕IO+(⊂1 0))⊃stocks)←'AXP '
((⎕IO+(⊂1 1))⊃stocks)←'American Express '
((⎕IO+(⊂2 0))⊃stocks)←'AAPL '
((⎕IO+(⊂2 1))⊃stocks)←'Apple '
((⎕IO+(⊂3 0))⊃stocks)←'BA '
((⎕IO+(⊂3 1))⊃stocks)←'Boeing '
((⎕IO+(⊂4 0))⊃stocks)←'CAT '
((⎕IO+(⊂4 1))⊃stocks)←'Caterpillar '
((⎕IO+(⊂5 0))⊃stocks)←'CVX '
((⎕IO+(⊂5 1))⊃stocks)←'Chevron '
((⎕IO+(⊂6 0))⊃stocks)←'CSCO '
((⎕IO+(⊂6 1))⊃stocks)←'Cisco '
((⎕IO+(⊂7 0))⊃stocks)←'KO '
((⎕IO+(⊂7 1))⊃stocks)←'Coca-Cola '
((⎕IO+(⊂8 0))⊃stocks)←'DIS '
((⎕IO+(⊂8 1))⊃stocks)←'Disney '
((⎕IO+(⊂9 0))⊃stocks)←'DD '
((⎕IO+(⊂9 1))⊃stocks)←'E I du Pont de Nemours and Co '
((⎕IO+(⊂10 0))⊃stocks)←'XOM '
((⎕IO+(⊂10 1))⊃stocks)←'Exxon Mobil '
((⎕IO+(⊂11 0))⊃stocks)←'GE '
((⎕IO+(⊂11 1))⊃stocks)←'General Electric '
((⎕IO+(⊂12 0))⊃stocks)←'GS '
((⎕IO+(⊂12 1))⊃stocks)←'Goldman Sachs '
((⎕IO+(⊂13 0))⊃stocks)←'HD '
((⎕IO+(⊂13 1))⊃stocks)←'Home Depot '
((⎕IO+(⊂14 0))⊃stocks)←'IBM '
((⎕IO+(⊂14 1))⊃stocks)←'IBM '
((⎕IO+(⊂15 0))⊃stocks)←'INTC '
((⎕IO+(⊂15 1))⊃stocks)←'Intel '
((⎕IO+(⊂16 0))⊃stocks)←'JNJ '
((⎕IO+(⊂16 1))⊃stocks)←'Johnson & Johnson '
((⎕IO+(⊂17 0))⊃stocks)←'JPM '
((⎕IO+(⊂17 1))⊃stocks)←'JPMorgan Chase '
((⎕IO+(⊂18 0))⊃stocks)←'MCD '
((⎕IO+(⊂18 1))⊃stocks)←'McDonald''s '
((⎕IO+(⊂19 0))⊃stocks)←'MRK '
((⎕IO+(⊂19 1))⊃stocks)←'Merck '
((⎕IO+(⊂20 0))⊃stocks)←'MSFT '
((⎕IO+(⊂20 1))⊃stocks)←'Microsoft '
((⎕IO+(⊂21 0))⊃stocks)←'NKE '
((⎕IO+(⊂21 1))⊃stocks)←'Nike '
((⎕IO+(⊂22 0))⊃stocks)←'PFE '
((⎕IO+(⊂22 1))⊃stocks)←'Pfizer '
((⎕IO+(⊂23 0))⊃stocks)←'PG '
((⎕IO+(⊂23 1))⊃stocks)←'Procter & Gamble '
((⎕IO+(⊂24 0))⊃stocks)←'TRV '
((⎕IO+(⊂24 1))⊃stocks)←'Travelers Companies Inc '
((⎕IO+(⊂25 0))⊃stocks)←'UTX '
((⎕IO+(⊂25 1))⊃stocks)←'United Technologies '
((⎕IO+(⊂26 0))⊃stocks)←'UNH '
((⎕IO+(⊂26 1))⊃stocks)←'UnitedHealth '
((⎕IO+(⊂27 0))⊃stocks)←'VZ '
((⎕IO+(⊂27 1))⊃stocks)←'Verizon '
((⎕IO+(⊂28 0))⊃stocks)←'V '
((⎕IO+(⊂28 1))⊃stocks)←'Visa '
((⎕IO+(⊂29 0))⊃stocks)←'WMT '
((⎕IO+(⊂29 1))⊃stocks)←'Wal-Mart '
⎕CT←1E¯13
⎕FC←(,⎕UCS 46 44 8902 48 95 175)
⎕IO←1
⎕L←0
⎕LX←' ' ⍝ prototype...
⎕LX←0⍴⎕LX
⎕PP←10
⎕PR←' '
⎕PS←0
⎕PW←80
⎕R←0
⎕RL←16807
⎕TZ←-5
⎕X←0
#!/usr/local/bin/apl --script
⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝
⍝
⍝ time 2017-01-19 09:29:35 (GMT-5)
⍝
⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝
)copy 1 date
)copy 1 lex
)copy prompt
∇time∆add_client;po;ln
⍝ Function to add a client
po←prompt∆loop time∆prompt∆add_client
ln←⊂po lex∆lookup 'ans'
ln←ln,⊂(po lex∆lookup 'next')lex∆lookup 'ans'
→(prompt∆∆done≠po lex∆lookup 'keyword')/0
time∆clients←time∆clients,[1]ln
∇
∇time∆add_jobs;po;ln;tmp
⍝ Function to add a job to the job table.
po←prompt∆loop time∆prompt∆add_job
→(prompt∆∆done≠po lex∆lookup 'keyword')/0
ln←⊂po lex∆lookup 'ans'
tmp←po lex∆lookup 'next'
ln←ln,⊂tmp lex∆lookup 'ans'
tmp←tmp lex∆lookup 'next'
ln←ln,⊂tmp lex∆lookup 'ans'
time∆jobs←time∆jobs,[1]ln
∇
∇b←time∆ec∆Add_Client_ID id
⍝ Prompt edit check for a client id duplication.
→(b←0=⍴time∆clients[;1] util∆stringSearch id)/0
⍞←id,' found in client table',⎕tc[3]
∇
∇b←time∆ec∆Add_Job_ID id
⍝ Edit check to see that we are adding a new jobs.
→(b←0=⍴time∆jobs[;1] util∆stringSearch id)/0
⍞←id,' found in Job table',⎕tc[3]
∇
∇b←time∆ec∆Client_ID id
⍝ Prompt edit check for a client id.
→(b←0≠⍴time∆clients[;1] util∆stringSearch id)/0
⍞←id,' not found in client table',⎕tc[3]
∇
∇sheet←time∆init_day date
⍝ Function to instantiate a time sheet for the given day.
⎕es(∧/'NOT'=3↑date∆US date∆parse date)/'Not a valid date.'
sheet←44 5⍴' '
sheet[1;1]←⊂date
sheet[1+4×0,⍳10;2]←⍕¨(6+⍳5),⍳6
sheet[;3]←44⍴ '00' '15' '30' '45'
sheet←'Day' 'Hour' 'Min' 'Job' 'Comment',[1]sheet
∇
time∆clients←3 2⍴00 00 00 00 00 00
((⎕IO+(⊂0 0))⊃time∆clients)←'Client ID'
((⎕IO+(⊂0 1))⊃time∆clients)←'Client'
((⎕IO+(⊂1 0))⊃time∆clients)←'DWE'
((⎕IO+(⊂1 1))⊃time∆clients)←'Daly Web and Edit, Inc.'
((⎕IO+(⊂2 0))⊃time∆clients)←'DWEA'
((⎕IO+(⊂2 1))⊃time∆clients)←'DWE Accounting'
time∆jobs←4 3⍴00 00 00 00 00 00 00 00 00 00 00 00
((⎕IO+(⊂0 0))⊃time∆jobs)←'Job ID'
((⎕IO+(⊂0 1))⊃time∆jobs)←'Client ID'
((⎕IO+(⊂0 2))⊃time∆jobs)←'Title'
((⎕IO+(⊂1 0))⊃time∆jobs)←'Admin'
((⎕IO+(⊂1 1))⊃time∆jobs)←'DWEA'
((⎕IO+(⊂1 2))⊃time∆jobs)←'Administrative tasks'
((⎕IO+(⊂2 0))⊃time∆jobs)←'Lunch'
((⎕IO+(⊂2 1))⊃time∆jobs)←'DWEA'
((⎕IO+(⊂2 2))⊃time∆jobs)←'Breaks'
((⎕IO+(⊂3 0))⊃time∆jobs)←'wld'
((⎕IO+(⊂3 1))⊃time∆jobs)←'DWEA'
((⎕IO+(⊂3 2))⊃time∆jobs)←'Working for my self'
time∆prompt∆add_client←5 2⍴00 00 00 00 00 00 00 00 00 ¯1
((⎕IO+(⊂0 0))⊃time∆prompt∆add_client)←'prompt'
((⎕IO+(⊂0 1))⊃time∆prompt∆add_client)←'Client ID: '
((⎕IO+(⊂1 0))⊃time∆prompt∆add_client)←'edit_check'
((⎕IO+(⊂1 1))⊃time∆prompt∆add_client)←⊂21⍴0 ⍝ prolog ≡2
(⊃((⎕IO+(⊂1 1))⊃time∆prompt∆add_client))[⍳8]←'time',(,⎕UCS 8710 101 99 8710)
(⊃((⎕IO+(⊂1 1))⊃time∆prompt∆add_client))[8+⍳13]←'Add_Client_ID'
((⎕IO+(⊂2 0))⊃time∆prompt∆add_client)←'next'
((⎕IO+(⊂2 1))⊃time∆prompt∆add_client)←4 2⍴00 00 00 00 00 00 00 ¯1
((⎕IO+(2 1) (0 0))⊃time∆prompt∆add_client)←'prompt'
((⎕IO+(2 1) (0 1))⊃time∆prompt∆add_client)←'Client Name: '
((⎕IO+(2 1) (1 0))⊃time∆prompt∆add_client)←'edit_check'
((⎕IO+(2 1) (1 1))⊃time∆prompt∆add_client)←⊂13⍴0 ⍝ prolog ≡3
(⊃((⎕IO+(2 1) (1 1))⊃time∆prompt∆add_client))[⍳7]←'prompt',(,⎕UCS 8710)
(⊃((⎕IO+(2 1) (1 1))⊃time∆prompt∆add_client))[7+⍳4]←(,⎕UCS 101 99
8710),'n'
(⊃((⎕IO+(2 1) (1 1))⊃time∆prompt∆add_client))[11+⍳2]←'ul'
((⎕IO+(2 1) (2 0))⊃time∆prompt∆add_client)←'ans'
((⎕IO+(2 1) (0 0))⊃time∆prompt∆add_client)←' ' ⍝ prototype...
((⎕IO+(2 1) (2 1))⊃time∆prompt∆add_client)←0⍴((⎕IO+(2 1) (2
1))⊃time∆prompt∆add_client)
((⎕IO+(2 1) (3 0))⊃time∆prompt∆add_client)←'keyword'
((⎕IO+(⊂3 0))⊃time∆prompt∆add_client)←'ans'
((⎕IO+(⊂0 0))⊃time∆prompt∆add_client)←' ' ⍝ prototype...
((⎕IO+(⊂3 1))⊃time∆prompt∆add_client)←0⍴((⎕IO+(⊂3 1))⊃time∆prompt∆add_client)
((⎕IO+(⊂4 0))⊃time∆prompt∆add_client)←'keyword'
time∆prompt∆add_job←5 2⍴00 00 00 00 00 00 00 00 00 ¯1
((⎕IO+(⊂0 0))⊃time∆prompt∆add_job)←'prompt'
((⎕IO+(⊂0 1))⊃time∆prompt∆add_job)←'Job ID: '
((⎕IO+(⊂1 0))⊃time∆prompt∆add_job)←'edit_check'
((⎕IO+(⊂1 1))⊃time∆prompt∆add_job)←⊂18⍴0 ⍝ prolog ≡2
(⊃((⎕IO+(⊂1 1))⊃time∆prompt∆add_job))[⍳9]←'time',(,⎕UCS 8710 101 99
8710),'A'
(⊃((⎕IO+(⊂1 1))⊃time∆prompt∆add_job))[9+⍳9]←'dd_Job_ID'
((⎕IO+(⊂2 0))⊃time∆prompt∆add_job)←'next'
((⎕IO+(⊂2 1))⊃time∆prompt∆add_job)←⊂5 2⍴0 ⍝ prolog ≡2
(,⊃((⎕IO+(⊂2 1))⊃time∆prompt∆add_job))[⍳10]←00 00 00 00 00 00 00 00 00 ¯1
((⎕IO+(2 1) (0 0))⊃time∆prompt∆add_job)←'prompt'
((⎕IO+(2 1) (0 1))⊃time∆prompt∆add_job)←'Client ID: '
((⎕IO+(2 1) (1 0))⊃time∆prompt∆add_job)←'edit_check'
((⎕IO+(2 1) (1 1))⊃time∆prompt∆add_job)←⊂17⍴0 ⍝ prolog ≡3
(⊃((⎕IO+(2 1) (1 1))⊃time∆prompt∆add_job))[⍳7]←'time',(,⎕UCS 8710 101 99)
(⊃((⎕IO+(2 1) (1 1))⊃time∆prompt∆add_job))[7+⍳10]←(,⎕UCS 8710),'Client_ID'
((⎕IO+(2 1) (2 0))⊃time∆prompt∆add_job)←'next'
((⎕IO+(2 1) (2 1))⊃time∆prompt∆add_job)←⊂4 2⍴0 ⍝ prolog ≡3
(,⊃((⎕IO+(2 1) (2 1))⊃time∆prompt∆add_job))[⍳8]←00 00 00 00 00 00 00 ¯1
((⎕IO+(2 1) (2 1) (0 0))⊃time∆prompt∆add_job)←'prompt'
((⎕IO+(2 1) (2 1) (0 1))⊃time∆prompt∆add_job)←'Job Title: '
((⎕IO+(2 1) (2 1) (1 0))⊃time∆prompt∆add_job)←'edit_check'
((⎕IO+(2 1) (2 1) (1 1))⊃time∆prompt∆add_job)←⊂13⍴0 ⍝ prolog ≡4
(⊃((⎕IO+(2 1) (2 1) (1 1))⊃time∆prompt∆add_job))[⍳7]←'prompt',(,⎕UCS
8710)
(⊃((⎕IO+(2 1) (2 1) (1 1))⊃time∆prompt∆add_job))[7+⍳2]←(,⎕UCS 101 99)
(⊃((⎕IO+(2 1) (2 1) (1 1))⊃time∆prompt∆add_job))[9+⍳2]←(,⎕UCS 8710),'n'
(⊃((⎕IO+(2 1) (2 1) (1 1))⊃time∆prompt∆add_job))[11+⍳2]←'ul'
((⎕IO+(2 1) (2 1) (2 0))⊃time∆prompt∆add_job)←'ans'
((⎕IO+(2 1) (2 1) (0 0))⊃time∆prompt∆add_job)←' ' ⍝ prototype...
((⎕IO+(2 1) (2 1) (2 1))⊃time∆prompt∆add_job)←0⍴((⎕IO+(2 1) (2 1) (2
1))⊃time∆prompt∆add_job)
((⎕IO+(2 1) (2 1) (3 0))⊃time∆prompt∆add_job)←'keyword'
((⎕IO+(2 1) (3 0))⊃time∆prompt∆add_job)←'ans'
((⎕IO+(2 1) (0 0))⊃time∆prompt∆add_job)←' ' ⍝ prototype...
((⎕IO+(2 1) (3 1))⊃time∆prompt∆add_job)←0⍴((⎕IO+(2 1) (3
1))⊃time∆prompt∆add_job)
((⎕IO+(2 1) (4 0))⊃time∆prompt∆add_job)←'keyword'
((⎕IO+(⊂3 0))⊃time∆prompt∆add_job)←'ans'
((⎕IO+(⊂0 0))⊃time∆prompt∆add_job)←' ' ⍝ prototype...
((⎕IO+(⊂3 1))⊃time∆prompt∆add_job)←0⍴((⎕IO+(⊂3 1))⊃time∆prompt∆add_job)
((⎕IO+(⊂4 0))⊃time∆prompt∆add_job)←'keyword'
