End of a loop started with [blockstart=v|c]

End of a loop started with [blockstart], so will go through at least one loop
e.g. [blockrepif ^|a.a|=^|a.b|]

NOT version of blockrepif

Start of a loop. Can either be [blockstart] with the criteria for the loop at the end, or [blockstart=v|c] where all the records in a vector are sequenced. If the record is empty then no loops are done

UI method of input
[choose ^|a.b|=t|title o|opion1::option2::option3 F|value for freetext …
[choose ^|a.b|=t|title v|vector f|field value w|where field V|criteria value …

Options ~Q|option number q|match option with value p|(type)d(date)t(time)s(date stepper) c|Y case insensitive

[confirm=t|title c|comment text w|warning text l|left button title r|right button title (default left nil ,right ‘confirm’ ~f|Y (formatted)

Loads the clicked button title into ^|g.confrm|

[email=v|r] sends an email using the current record of v|
Fields used:

  • fromAddress – email address
  • fromName – display name
  • replyToAddress – email address
  • replyToName – display name
  • toAddresses – all addressees in patern ::email.com:Display Name::2email.co.uk:Another Name::
  • ccAddresses – all addressees in patern ::email.com:Display Name::2email.co.uk:Another Name::
  • bccAddresses – all addressees in patern ::email.com:Display Name::2email.co.uk:Another Name::
  • subject – subject line of email
  • body – html body of email
  • allBody – plain text alternate body
  • attachments – local path to attachments in patern ::file1.txt::file2.txt::

end of an if loop

[flags ^|q.flags|=V|^|q.oldFlags| s|set e.g. A  c|clear e.g.B]

[flags ^|q.text|=V|^|q.flags| t|field containing flag definitions e.g. A:On:Off::B:Card:nil  etc]

[filter v|d=v|D p|all] creates a copy of the records in D in d

[filter v|d=v|D p|list V|:tag1:tag2:tag3:] filters the records in D with tags in V into d

[filter v|d=v|D p|listNot V|:tag1:tag2:tag3:] NOT version of p|list

[filter v|d=v|D p|dates V|start date W|end date f|date field] returns all records with the date field value lying between V & W

[filter v|d=v|D p|between V|start number W|end number f|field name] returns all records with the date field name value lying between V & W

[filter v|d=v|D p|like f|field to check V|value ~c|Y] (exact) default [cd]

[filter v|d=v|D p|not f|field to check V|value]  NOT version of p|like

[filter v|d=v|D p|conatins f|field to check V|value  ~c|Y] (exact) default [cd]

[filter v|d=v|D p|free a|asset field b|bookings V|start date W|end date A|:tag1:tag2:]  returns all assets not assigned between dates V & W.  Expects booking vector to have fields ‘date’ and ‘duration’. Always returns assets in A|, which can be used for editing a current booking.  Assets are only available is between dates of ‘acquire’ & ‘dispose’.

[length ^|a.a|=^|a.b|] load the string length of ^|a.b| into ^|a.a|

[loadValue ^|a.b|=v|v f|f]

returns the value of the current record of vector v field f and loads it into ^|a.b|

adds the content of another coblet into the run.  [merge=coblet] or [$coblet]

[nextJob=cobletName] Sets the next coblet to run. Assumes part of the same job unless ~N|Y when it can be any main job

[printOutput] Takes the current text in ‘output’ and opens it in a new window to print

[reset=v|r] Clears the nominated vector on the firstpass of a coblet

or

[reset=system] restarts the whole programme

[saveFile=f|filename t|text v|vector ~t|type]

Save the text as filename.txt in download folder.  If a filename isn’t stated then it will be output.txt, if text isn’t stated then it will be the output of the current job.

If you include a v| rather than t| then the output will be a csv download of the nominated vector.  You should also change the ~t| to csv.

You can still create a csv from t|, but again include ~t|csv

[sms=p|01232123123 f|sender m|message] Send an sms to a mobile number

[UKA=k|key u|urn f|firstname l|lastname d|dateOfBirth v|vector r|result x|detail t|type]

types:

urn – just key & urn
Fn – key,firstname,lastname,DOB
Ln – key,urn,lastname

DOB format YYYY-MM-DDTHH:MM:SS

Loads the result of Valid or Not Valid into ^|v.result|

Load the JSON of detail into ^|v.detail| if a valid result

if ^|a.b|=^|a.c| true is values are equal

if ^|a.b|=.. true if the value in ^|a.b| has a length

if calOpen=d|date t|time p|minutes is true if within working hours

[if calFree=d|date t|time p|minutes c|column o|aTag] is true if no current booking for the nominated column in the time period, ignores ‘own tag’ to cope with editing a current booking.

if instr ^|a.b|=^|a.c| ~c|N true is ^|a.b| contains ^|a.c|

if ~c|N is included is an insensitive search

if isDate=^|a.date| true if ^|a.date| is an SQL date in format yyyy-mm-dd

if dates=d|date 1|date 2|date p|>

compares d| against 1| (+ optional 2|) p| can be ‘<‘,’>’,’><‘ or ‘=’

if flags ^|a.a|=ABc

Returns true if any of ABc are in ^|a.a|

if maths ^|a.b|=^|a.c| straight maths equals

or

if maths=^|a.b| > ^|a.c| if no dst then can check is > or <

or

if maths ^|a.a|=^|a.b| + ^|a.c|  calculates both sides, can be +,-,/,*,%

NOT version of if

NOT version of if calOpen

NOT version of if calFree

NOT version of if instr

NOT version of if maths

[if selected=v|c]

True if the current record of a database is one of the indexes to action