Oracle MICROS Simphony: System Interface Module (SIM) Manual Release 19.1
Oracle MICROS Simphony: System Interface Module (SIM) Manual Release 19.1
Oracle MICROS Simphony: System Interface Module (SIM) Manual Release 19.1
March 2022
Copyright © 2007, 2022, Oracle and/or its affiliates. All rights reserved.
This software and related documentation are provided under a license agreement containing
restrictions on use and disclosure and are protected by intellectual property laws. Except as
expressly permitted in your license agreement or allowed by law, you may not use, copy,
reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or
display any part, in any form, or by any means. Reverse engineering, disassembly, or
decompilation of this software, unless required by law for interoperability, is prohibited.
The information contained herein is subject to change without notice and is not warranted to be
error-free. If you find any errors, please report them to us in writing.
If this software or related documentation is delivered to the U.S. Government or anyone licensing it
on behalf of the U.S. Government, then the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated
software, any programs installed on the hardware, and/or documentation, delivered to U.S.
Government end users are "commercial computer software" pursuant to the applicable Federal
Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication,
disclosure, modification, and adaptation of the programs, including any operating system,
integrated software, any programs installed on the hardware, and/or documentation, shall be
subject to license terms and license restrictions applicable to the programs. No other rights are
granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management
applications. It is not developed or intended for use in any inherently dangerous applications,
including applications that may create a risk of personal injury. If you use this software or
hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe,
backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its
affiliates disclaim any liability for any damages caused by use of this software or hardware in
dangerous applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be
trademarks of their respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC
trademarks are used under license and are trademarks or registered trademarks of SPARC
International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open
Group.
This software or hardware and documentation may provide access to or information about content,
products, and services from third parties. Oracle Corporation and its affiliates are not responsible
for and expressly disclaim all warranties of any kind with respect to third-party content, products,
and services unless otherwise set forth in an applicable agreement between you and Oracle. Oracle
Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to
your access to or use of third-party content, products, or services, except as set forth in an
applicable agreement between you and Oracle.
2
Contents
Tables ...................................................................................................... 21
Figures..................................................................................................... 25
Preface ..................................................................................................... 26
Audience ................................................................................................................................ 26
Customer Support ................................................................................................................. 26
Documentation ...................................................................................................................... 26
Revision History.................................................................................................................... 26
Contents 3
Message Formats.......................................................................................................... 3-1
Interface Methods ........................................................................................................ 3-4
4 Contents
ISL Print Commands and System Variables ............................................................ 6-1
Starting an ISL Print Job ..................................................................................................... 6-1
ISL StartPrint Commands ........................................................................................... 6-1
Specifying an ISL Printer ............................................................................................ 6-2
Using Print Directives ........................................................................................................ 6-3
The Printline Command.............................................................................................. 6-4
Print Type System Variables ...................................................................................... 6-4
Print Directives and Subroutines ............................................................................... 6-5
Backup Printing ................................................................................................................... 6-5
Considerations ............................................................................................................. 6-5
Reference Strings ................................................................................................................. 6-6
Contents 5
CENTER ...................................................................................................................... 7-20
CHANGE .................................................................................................................... 7-20
CHECKDATA ............................................................................................................ 7-21
CHGTIP ....................................................................................................................... 7-21
CHK ............................................................................................................................. 7-22
CHKINFOKEY ........................................................................................................... 7-22
CHK_OPEN_TIME .................................................................................................... 7-23
CHK_OPEN_TIME_T................................................................................................ 7-23
CHK_PAYMNT_TTL ................................................................................................ 7-23
CHK_TTL .................................................................................................................... 7-23
CKCSHR...................................................................................................................... 7-24
CKCSHR_NAME ....................................................................................................... 7-24
CKEMP ........................................................................................................................ 7-24
CKEMP_CHKNAME ................................................................................................ 7-25
CKEMP_FNAME ....................................................................................................... 7-25
CKEMP_CHKNAME ................................................................................................ 7-26
CKEMP_TYPEDEF .................................................................................................... 7-26
CKID ............................................................................................................................ 7-26
CKNUM ...................................................................................................................... 7-27
CLIENT_ONLINE ..................................................................................................... 7-27
DAY ............................................................................................................................. 7-28
DAYOFWEEK ............................................................................................................ 7-29
DBVERSION ............................................................................................................... 7-29
DEBUGTRACE ........................................................................................................... 7-29
DETAILSORTED........................................................................................................ 7-30
DSC .............................................................................................................................. 7-30
DSC_OVERRIDE........................................................................................................ 7-30
DSCI ............................................................................................................................. 7-31
DTLCHILDSELECTED ............................................................................................. 7-31
DTL_DEFSEQ ............................................................................................................. 7-31
DTL_DETAILLINK ................................................................................................... 7-32
DTL_DSC_EMPL ....................................................................................................... 7-32
DTL_DSCI ................................................................................................................... 7-33
DTL_FAMGRP ........................................................................................................... 7-33
DTL_INDEX ............................................................................................................... 7-33
DTL_IS_COMBO........................................................................................................ 7-34
DTL_IS_COMBO_MAIN .......................................................................................... 7-34
DTL_IS_COMBO_SIDE ............................................................................................. 7-35
DTL_IS_COMBO_PARENT ..................................................................................... 7-35
6 Contents
DTL_IS_COND[i] ....................................................................................................... 7-35
DTL_IS_ON_HOLD .................................................................................................. 7-36
DTL_IS_VOID[i]......................................................................................................... 7-36
DTL_MAJGRP ............................................................................................................ 7-36
DTL_MLVL ................................................................................................................. 7-37
DTL_NAME................................................................................................................ 7-37
DTL_OBJNUM ........................................................................................................... 7-38
DTL_PLVL .................................................................................................................. 7-38
DTL_PMSLINK .......................................................................................................... 7-39
DTL_PRICESEQ ......................................................................................................... 7-39
DTL_QTY .................................................................................................................... 7-39
DTL_SEAT .................................................................................................................. 7-40
DTLSELECTED .......................................................................................................... 7-40
DTL_SLSI .................................................................................................................... 7-41
DTL_SLVL .................................................................................................................. 7-41
DTL_STATUS ............................................................................................................. 7-41
DTL_SVC_LINK ........................................................................................................ 7-42
DTL_SVC_TYPE......................................................................................................... 7-42
DTL_SVCI ................................................................................................................... 7-43
Dtl_TaxTtl ................................................................................................................... 7-43
DTL_TAXTYPE .......................................................................................................... 7-43
DTL_TIMED_FIRE_TIME......................................................................................... 7-44
DTL_TTL ..................................................................................................................... 7-44
DTL_TYPE .................................................................................................................. 7-45
DTL_TYPEDEF........................................................................................................... 7-46
DWOFF........................................................................................................................ 7-47
DWON......................................................................................................................... 7-48
EMPLDISCOUNT ...................................................................................................... 7-48
EMPLDISCOUNTEMPL ........................................................................................... 7-49
EMPLOPT ................................................................................................................... 7-49
EPOCH ........................................................................................................................ 7-50
ERRORMESSAGE ...................................................................................................... 7-50
EVENTARGUMENTS ............................................................................................... 7-50
EVENTID .................................................................................................................... 7-51
EVENTNAME ............................................................................................................ 7-51
EVENTTYPE ............................................................................................................... 7-51
FIELDSTATUS ........................................................................................................... 7-51
FILE .............................................................................................................................. 7-52
FILELINEMARKER ................................................................................................... 7-53
Contents 7
FILE_BFRSIZE ............................................................................................................ 7-53
FILE_ERRNO.............................................................................................................. 7-54
FILE_ERRSTR ............................................................................................................. 7-55
FILE_SEPARATOR .................................................................................................... 7-56
FILTER_ACTIVE ........................................................................................................ 7-56
FILTER_MASK ........................................................................................................... 7-57
GRPNUM .................................................................................................................... 7-57
GST............................................................................................................................... 7-57
GSTRMNG .................................................................................................................. 7-58
GSTTHISTENDER ..................................................................................................... 7-59
GUID............................................................................................................................ 7-60
HEADER ..................................................................................................................... 7-60
HOUR .......................................................................................................................... 7-60
IGNORE_PRMT ......................................................................................................... 7-61
INEDITCLOSEDCHECK .......................................................................................... 7-61
INPUTSTATUS .......................................................................................................... 7-61
INREOPENCLOSEDCHECK ................................................................................... 7-62
INSTANDALONEMODE ......................................................................................... 7-62
ISJOURNALPRINT.................................................................................................... 7-63
ISUNICODE................................................................................................................ 7-63
JNL ............................................................................................................................... 7-63
KEY_CANCEL ........................................................................................................... 7-64
KEY_CLEAR ............................................................................................................... 7-65
KEY_DOWN_ARROW ............................................................................................. 7-65
KEY_ENTER ............................................................................................................... 7-66
KEY_EXIT ................................................................................................................... 7-66
KEY_HOME................................................................................................................ 7-67
KEY_LEFT_ARROW ................................................................................................. 7-67
KEY_PAGE_DOWN .................................................................................................. 7-67
KEY_PAGE_UP .......................................................................................................... 7-68
KEY_RIGHT_ARROW .............................................................................................. 7-68
KEY_UP_ARROW ..................................................................................................... 7-69
LANG_ID .................................................................................................................... 7-69
LANG_NAME ............................................................................................................ 7-69
LASTCKNUM ............................................................................................................ 7-70
LINE............................................................................................................................. 7-70
LINE_EXECUTED ..................................................................................................... 7-70
MAGSTATUS ............................................................................................................. 7-71
MAXDTLR .................................................................................................................. 7-72
8 Contents
MAXDTLT .................................................................................................................. 7-72
MAXKYBDMACRO .................................................................................................. 7-73
MAX_LINES_TO_RUN............................................................................................. 7-73
MINUTE ...................................................................................................................... 7-73
MONTH ...................................................................................................................... 7-74
NEXTMYOPENCHECKGUID ................................................................................. 7-74
NUL ............................................................................................................................. 7-74
NULL ........................................................................................................................... 7-75
NUMDSC .................................................................................................................... 7-75
NUMDTLR ................................................................................................................. 7-75
NUMDTLT.................................................................................................................. 7-76
NUMLANGS .............................................................................................................. 7-76
NUMOPENCHK ........................................................................................................ 7-76
NUMSI......................................................................................................................... 7-77
NUMSVC .................................................................................................................... 7-77
NUMTAX .................................................................................................................... 7-77
OBJ ............................................................................................................................... 7-78
OFFLINE LINK .......................................................................................................... 7-78
OPNCHK_CKNUM .................................................................................................. 7-78
OPNCHK_TREMPID ................................................................................................ 7-79
OPNCHK_TREMPNUM........................................................................................... 7-79
OPNCHK_WSID ........................................................................................................ 7-79
OPNCHK_WSNUM .................................................................................................. 7-80
OPSCONTEXT ........................................................................................................... 7-80
ORDERTYPE .............................................................................................................. 7-80
OrderType_Name ...................................................................................................... 7-81
ORDR........................................................................................................................... 7-81
OS_PLATFORM ......................................................................................................... 7-82
PICKUPLOAN ........................................................................................................... 7-82
PLATFORM ................................................................................................................ 7-83
PMSBUFFER ............................................................................................................... 7-83
PMSLINK .................................................................................................................... 7-83
PMSNUMBER ............................................................................................................ 7-84
PREVPAY.................................................................................................................... 7-85
PRINTSTATUS ........................................................................................................... 7-85
PROPERTY ................................................................................................................. 7-86
QTY .............................................................................................................................. 7-86
RANDOM ................................................................................................................... 7-87
RCPT ............................................................................................................................ 7-87
Contents 9
REDOFF ...................................................................................................................... 7-87
REDON........................................................................................................................ 7-88
RETURNSTATUS ...................................................................................................... 7-89
RUNNINGDIRECTORY ........................................................................................... 7-89
RVC .............................................................................................................................. 7-89
RVC_NAME ............................................................................................................... 7-90
RXMSG ........................................................................................................................ 7-90
SEAT ............................................................................................................................ 7-91
SECOND ..................................................................................................................... 7-91
SI ................................................................................................................................... 7-91
SI_DSC ......................................................................................................................... 7-92
SIMDBLINK ............................................................................................................... 7-92
SRVPRD ...................................................................................................................... 7-92
STACKFRAMETEXT ................................................................................................. 7-93
STRINGARGS ............................................................................................................ 7-93
SVC .............................................................................................................................. 7-93
SVCI ............................................................................................................................. 7-94
SYSLOGTRACE ......................................................................................................... 7-94
SYSTEM_STATUS ..................................................................................................... 7-94
TAX .............................................................................................................................. 7-95
TAXRATE ................................................................................................................... 7-95
TAXVAT...................................................................................................................... 7-96
TBLID .......................................................................................................................... 7-96
TBLNUM ..................................................................................................................... 7-96
TICKCOUNT .............................................................................................................. 7-97
TMDNUM ................................................................................................................... 7-97
TNDTTL ...................................................................................................................... 7-97
TOTALMEMORY ...................................................................................................... 7-98
TRACE ......................................................................................................................... 7-99
TRAILER ..................................................................................................................... 7-99
TRAININGMODE ..................................................................................................... 7-99
TRCSHR .................................................................................................................... 7-100
TRDTLR .................................................................................................................... 7-100
TRDTLT..................................................................................................................... 7-101
TREMP ...................................................................................................................... 7-102
TREMP_CHKNAME ............................................................................................... 7-103
TREMP_FNAME ...................................................................................................... 7-103
TREMP_LNAME ..................................................................................................... 7-103
TTL ............................................................................................................................. 7-104
10 Contents
TTLDUE .................................................................................................................... 7-104
TXBL .......................................................................................................................... 7-104
TXEX_ACTIVE ......................................................................................................... 7-105
USEDMEMORY ....................................................................................................... 7-105
USERENTRY ............................................................................................................ 7-105
VALD......................................................................................................................... 7-106
VARIABLEFRAMETEXT ........................................................................................ 7-106
VERSION .................................................................................................................. 7-106
VOIDSTATUS .......................................................................................................... 7-107
WARNINGS_ARE_FATAL .................................................................................... 7-107
WCOLS ...................................................................................................................... 7-108
WEEKDAY................................................................................................................ 7-108
WROWS .................................................................................................................... 7-109
WSID.......................................................................................................................... 7-109
WSNUM .................................................................................................................... 7-109
WSSUBTYPE............................................................................................................. 7-109
WSTYPE .................................................................................................................... 7-110
YEAR ......................................................................................................................... 7-110
YEARDAY ................................................................................................................ 7-111
Contents 11
ClearArray .................................................................................................................. 8-19
ClearChkInfo .............................................................................................................. 8-20
ClearIslTs .................................................................................................................... 8-21
ClearKybdMacro ........................................................................................................ 8-22
ClearRearArea ............................................................................................................ 8-22
ContinueOnCancel .................................................................................................... 8-23
Display ........................................................................................................................ 8-23
DisplayInput ............................................................................................................... 8-24
DisplayInverse............................................................................................................ 8-26
Description.................................................................................................................. 8-26
DisplayIslTs ................................................................................................................ 8-28
DisplayMSInput ......................................................................................................... 8-28
DisplayRearArea ........................................................................................................ 8-30
DLLCall ....................................................................................................................... 8-31
DLLCall_cdecl ............................................................................................................ 8-31
DLLCall_STDCall ...................................................................................................... 8-31
DLLCallW ................................................................................................................... 8-31
DLLFree....................................................................................................................... 8-32
DLLLoad ..................................................................................................................... 8-32
ErrorBeep .................................................................................................................... 8-32
ErrorMessage .............................................................................................................. 8-33
Event...EndEvent........................................................................................................ 8-34
ExitCancel ................................................................................................................... 8-39
ExitContinue ............................................................................................................... 8-40
ExitOnCancel .............................................................................................................. 8-41
ExitWithError ............................................................................................................. 8-41
FClose .......................................................................................................................... 8-42
FGetFile ....................................................................................................................... 8-43
FLock ........................................................................................................................... 8-43
FOpen .......................................................................................................................... 8-46
For...EndFor ................................................................................................................ 8-47
ForEver...EndFor ........................................................................................................ 8-49
Format ......................................................................................................................... 8-50
FormatBuffer .............................................................................................................. 8-51
FormatQ ...................................................................................................................... 8-52
FPutFile ....................................................................................................................... 8-53
FRead ........................................................................................................................... 8-53
FReadBfr...................................................................................................................... 8-55
FReadLn ...................................................................................................................... 8-56
12 Contents
FSeek ............................................................................................................................ 8-56
FWrite .......................................................................................................................... 8-59
FWriteBfr ..................................................................................................................... 8-60
FWriteLn ..................................................................................................................... 8-61
GetEnterOrClear ........................................................................................................ 8-62
GetRxMsg.................................................................................................................... 8-63
GetTime ....................................................................................................................... 8-63
If...Else[If]...EndIf ....................................................................................................... 8-64
Input ............................................................................................................................ 8-66
InputKey ..................................................................................................................... 8-68
InfoMessage ................................................................................................................ 8-69
LineFeed ...................................................................................................................... 8-70
ListDisplay .................................................................................................................. 8-71
ListInput ...................................................................................................................... 8-72
ListInputEx ................................................................................................................. 8-74
ListPrint ....................................................................................................................... 8-75
LoadDbKybdMacro ................................................................................................... 8-76
LoadKybdMacro ........................................................................................................ 8-77
LowerCase .................................................................................................................. 8-79
MakeAscii ................................................................................................................... 8-79
MakeUnicode ............................................................................................................. 8-80
Mid ............................................................................................................................... 8-81
MSleep ......................................................................................................................... 8-82
PopUpIslTs ................................................................................................................. 8-82
PrintLine...................................................................................................................... 8-83
PrintSimFeatures ........................................................................................................ 8-85
Prompt ......................................................................................................................... 8-85
ProRate ........................................................................................................................ 8-86
[Retain/Discard]GlobalVar ....................................................................................... 8-88
Return .......................................................................................................................... 8-89
ReTxMsg ..................................................................................................................... 8-90
RxMsg .......................................................................................................................... 8-90
SaveChkInfo ............................................................................................................... 8-92
SaveRefInfo ................................................................................................................. 8-94
SaveRefInfox ............................................................................................................... 8-96
SetIslTsKey.................................................................................................................. 8-97
SetReRead ................................................................................................................... 8-99
SetSignOn[Left/Right] ............................................................................................... 8-99
SetString .................................................................................................................... 8-100
Contents 13
Split ............................................................................................................................ 8-101
SplitQ ......................................................................................................................... 8-102
StartPrint...EndPrint[FF/NOFF] ............................................................................. 8-103
Sub... EndSub............................................................................................................ 8-105
TimerSet, TimerReset, TimerResetAll ................................................................... 8-108
TxMsg ........................................................................................................................ 8-109
TxMsgOnly ............................................................................................................... 8-110
UpperCase ................................................................................................................ 8-111
UseBackupTender .................................................................................................... 8-111
Use[Compat/ISL]Format ......................................................................................... 8-111
Use[ISL/STD]TimeOuts........................................................................................... 8-112
UseSortedDetail ....................................................................................................... 8-112
UseStdDetail ............................................................................................................. 8-113
Var .............................................................................................................................. 8-113
WaitForClear ............................................................................................................ 8-115
WaitForConfirm ....................................................................................................... 8-116
WaitForEnter ............................................................................................................ 8-117
WaitForRxMsg ......................................................................................................... 8-118
WaitPrompt/ClearWaitPrompt .............................................................................. 8-119
While...EndWhile ..................................................................................................... 8-120
Window ..................................................................................................................... 8-121
WindowClose ........................................................................................................... 8-122
Window[Edit/Input][WithSave] ............................................................................ 8-123
14 Contents
FormatStr Function ...................................................................................................... 9-8
FormatValue Function ................................................................................................ 9-9
FTell Function ............................................................................................................... 9-9
FunctionExists ............................................................................................................ 9-10
GetHex Function ........................................................................................................ 9-10
GetValue Function ..................................................................................................... 9-11
Instr Function ............................................................................................................. 9-12
Key Function............................................................................................................... 9-12
KeyNumber Function................................................................................................ 9-13
KeyType Function...................................................................................................... 9-13
Len Function ............................................................................................................... 9-14
Mid Function .............................................................................................................. 9-15
SplitString Function ................................................................................................... 9-16
Str Function................................................................................................................. 9-16
SystemVariableExists Function ................................................................................ 9-17
ToInteger Function .................................................................................................... 9-17
Trim Function ............................................................................................................. 9-17
TypeOf Function ........................................................................................................ 9-18
VarExists Function ..................................................................................................... 9-18
VarSize Function ........................................................................................................ 9-19
Contents 15
Divide by Zero ............................................................................................................ A-4
Duplicate variable Def................................................................................................ A-4
Encountered Non-Hex Data ...................................................................................... A-4
Endsub Nesting Mismatch ........................................................................................ A-5
Evaluation Nesting ..................................................................................................... A-5
Event Inside Procedure .............................................................................................. A-5
Event Type Must Be Word ........................................................................................ A-5
Exceeded Max Array or Variable Size ..................................................................... A-5
Expected Array in Call ............................................................................................... A-5
Expected ..., Encountered........................................................................................... A-5
A-Expected Decimal ................................................................................................... A-6
Expected End of Line.................................................................................................. A-6
Expected Format Token ............................................................................................. A-6
Expected Operand ...................................................................................................... A-6
Expected String ........................................................................................................... A-6
File Buffer Overflow ................................................................................................... A-6
File is Read Only ......................................................................................................... A-6
File is Write Only ........................................................................................................ A-7
File Name Too Long ................................................................................................... A-7
Format Needs String................................................................................................... A-7
Format Too Long ........................................................................................................ A-7
Integer Overflow ......................................................................................................... A-7
Invalid Decimal Operation ........................................................................................ A-7
Invalid File Buffer Size ............................................................................................... A-7
Invalid File Mode ........................................................................................................ A-7
Invalid File Number ................................................................................................... A-8
Invalid First Token...................................................................................................... A-8
Invalid Input fmt Spec................................................................................................ A-8
Invalid List Size ........................................................................................................... A-8
Invalid Locking Mode ................................................................................................ A-8
Invalid Output Format ............................................................................................... A-8
Invalid PMS SEND ..................................................................................................... A-8
Length Invalid ............................................................................................................. A-8
List Value Too Big ....................................................................................................... A-8
Loop Variable Constant ............................................................................................. A-9
Loop Variable Not INT .............................................................................................. A-9
Max Files Open ........................................................................................................... A-9
Max Include Nesting .................................................................................................. A-9
Max Lines Executed .................................................................................................... A-9
16 Contents
Max Macro Keys ......................................................................................................... A-9
Max Ref Info ................................................................................................................ A-9
Max Window Input Entries ....................................................................................... A-9
Memory Allocation ..................................................................................................... A-9
Must Have List Var................................................................................................... A-10
Name is a Reserved Word ....................................................................................... A-10
New TNDTTL Exceeds Original ............................................................................. A-10
No Arrays in Sub Var ............................................................................................... A-10
No ISL File ................................................................................................................. A-10
No Match for EndFor ............................................................................................... A-10
No Match for EndWhile ........................................................................................... A-10
No Match for Event .................................................................................................. A-11
No Number in Sys Var ............................................................................................. A-11
No Ops on Strings ..................................................................................................... A-11
No PMS Message Received ..................................................................................... A-11
No Touchscreen Keys Defined ................................................................................ A-11
Not a Variable............................................................................................................ A-11
Not Enough Input Data ........................................................................................... A-11
Not Enough List Data ............................................................................................... A-12
Not Enough Variables .............................................................................................. A-12
NUMERIC ENTRY REQUIRED.............................................................................. A-12
Print Already Started ............................................................................................... A-12
Print Not Started ....................................................................................................... A-12
Reading Ord Dvc Table............................................................................................ A-12
Reading Tbl Def ........................................................................................................ A-13
Require Array for List .............................................................................................. A-13
Script Memory Allocation Error ............................................................................. A-13
Start Position Invalid ................................................................................................ A-13
String Overflow ......................................................................................................... A-13
Sub Array Ref Invalid............................................................................................... A-13
Sub Has No Arguments ........................................................................................... A-13
Sub Statement in Procedure .................................................................................... A-13
System Variable Declaration ................................................................................... A-14
Sys Var Not Assignable............................................................................................ A-14
Too Few Args in Call ................................................................................................ A-14
Too Few Arguments ................................................................................................. A-14
Too many Args in Call ............................................................................................. A-14
Too Many Arguments .............................................................................................. A-14
Too Many Nested Calls ............................................................................................ A-14
Contents 17
Too Many Touchscreen Keys .................................................................................. A-14
Too Many PMS Definitions Active. Start New Transaction................................ A-15
Undefined Call .......................................................................................................... A-15
Undefined Function .................................................................................................. A-15
Undisplayable Variable ............................................................................................ A-15
Unexpected Data after Call...................................................................................... A-15
Unexpected Data after Sub ...................................................................................... A-15
Unexpected Data in Sub........................................................................................... A-15
Unexpected End of Line........................................................................................... A-15
Unexpected Token Type .......................................................................................... A-15
Unknown Command ................................................................................................ A-16
Unknown System Variable ...................................................................................... A-16
Unmatched Endevent ............................................................................................... A-16
Unmatched EndFor .................................................................................................. A-16
Unmatched If ............................................................................................................. A-16
Value Not Key Definition ........................................................................................ A-16
Variable Undefined .................................................................................................. A-16
Window Columns Out of Range ............................................................................ A-16
Window Has Not Been Defined ............................................................................. A-16
Window Rows Out of Range................................................................................... A-16
18 Contents
What is a DLL? ............................................................................................................ D-1
Using DLLs .................................................................................................................. D-2
Simphony SIM DLL Support..................................................................................... D-2
Using Simphony SIM DLL Commands ................................................................... D-3
Parameter Passing....................................................................................................... D-4
Integers ......................................................................................................................... D-6
Strings ........................................................................................................................... D-7
Monetary Data............................................................................................................. D-8
Array References ......................................................................................................... D-9
DLL Error Messages .......................................................................................................... D-9
General Error Messages ............................................................................................. D-9
DLLCall Error Messages .......................................................................................... D-10
DLLFree Error Messages.......................................................................................... D-11
Contents 19
Interface Script Language (ISL) ........................................................................................ H-3
ISL ........................................................................................................................................ H-3
Language Element ............................................................................................................. H-3
Local Command ................................................................................................................. H-4
Local Variable ..................................................................................................................... H-4
Nesting ................................................................................................................................ H-4
Null String........................................................................................................................... H-4
Number of Records ............................................................................................................ H-4
Numeric Expression .......................................................................................................... H-4
Offset.................................................................................................................................... H-4
Operator .............................................................................................................................. H-5
Script .................................................................................................................................... H-5
SIM ....................................................................................................................................... H-5
String.................................................................................................................................... H-5
String Expression ............................................................................................................... H-5
Subexpression ..................................................................................................................... H-5
Subroutine ........................................................................................................................... H-5
Syntax .................................................................................................................................. H-5
System Interface Module .................................................................................................. H-5
System Variable .................................................................................................................. H-6
Token ................................................................................................................................... H-6
Token Error ......................................................................................................................... H-6
TTY ....................................................................................................................................... H-6
User Variable ...................................................................................................................... H-6
Variable ............................................................................................................................... H-6
20 Contents
Tables
Table 1 Abbreviations ................................................................................................................ 1-1
Table 2 Conventions .................................................................................................................. 1-1
Table 3 Language Element Chapter Navigation .................................................................... 2-2
Table 4 POS Source ID Format ................................................................................................. 3-2
Table 5 Application_Sequence Format .................................................................................... 3-3
Table 6 Checksum Format ........................................................................................................ 3-4
Table 7 Correct and Incorrect Use of Whitespaces ................................................................ 4-6
Table 8 Examples of Where Whitespaces Increase Program Readability........................... 4-7
Table 9 Data Types and Corresponding Abbreviations........................................................ 5-2
Table 10 Unary Operators ......................................................................................................... 5-4
Table 11 Binary Operators ........................................................................................................ 5-4
Table 12 Example Variable Assignment ............................................................................... 5-15
Table 13 ISL StartPrint Commands.......................................................................................... 6-2
Table 14 Printer System Variables ........................................................................................... 6-3
Table 15 Print Type System Variables ..................................................................................... 6-4
Table 16 System Variable Summary ........................................................................................ 7-4
Table 17 Item Detail Types...................................................................................................... 7-45
Table 18 Detail Types and Corresponding Sizes ................................................................. 7-46
Table 19 Input Status Flags ..................................................................................................... 7-52
Table 20 Common Non-Zero Error Codes Returned by ISL File I/O Commands .......... 7-54
Table 21 Possible Errors Received by the File I/O Commands .......................................... 7-54
Table 22 User Input Status Flags ............................................................................................ 7-62
Table 23 Magnetic Card Entry Status Flag............................................................................ 7-71
Table 24 Values Corresponding to the Operating System Platform ................................. 7-82
Table 25 Print Status Flags ...................................................................................................... 7-85
Table 26 Training Mode Status ............................................................................................. 7-100
Table 27 Transaction Detail Fields ....................................................................................... 7-101
Table 28 Input Specifier Placement Order .............................................................................. 8-3
Table 29 M Input Specifier Format Fields ............................................................................... 8-4
Table 30 Track 1 Field Positions of Credit Cards ................................................................... 8-5
Table 31 Track 2 Field Positions of Credit Cards ................................................................... 8-5
Table 32 Standard Field Position for MICROS Employee Card .......................................... 8-6
Table 33 Commands for Output Types ................................................................................... 8-6
Table 34 Output Specifier Placement Order ........................................................................... 8-6
Table 35 Examples for Justification Specifiers ........................................................................ 8-7
Table 36 Examples for *Specifier .............................................................................................. 8-8
Table 37 Examples for + Specifier ............................................................................................ 8-8
Table 38 Examples for 0 Specifier ............................................................................................ 8-8
Table 39 Examples for 0 Specifier ............................................................................................ 8-9
Table 40 Examples for D, X, O, and B Specifiers .................................................................... 8-9
Table 41 Example 1 for :format_string Specifier .................................................................. 8-10
Table 42 Example 2 for :format_string Specifier .................................................................. 8-10
Table 43 Commands that Require a StartPrint or a Window Command ......................... 8-11
Table 44 Call Command Arguments ..................................................................................... 8-18
Tables 21
Table 45 ClearArray Command Arguments ........................................................................ 8-19
Table 46 Display Command Arguments .............................................................................. 8-23
Table 47 DisplayInput Command Arguments ..................................................................... 8-25
Table 48 Display Inverse Command Arguments................................................................. 8-27
Table 49 DisplayMSInout Command Arguments ............................................................... 8-28
Table 50 Error Message Command Arguments ................................................................... 8-33
Table 51 Event Inq Command Arguments ........................................................................... 8-34
Table 52 Event Tmed Command Arguments ....................................................................... 8-35
Table 53 Event RxMsg Command Arguments..................................................................... 8-35
Table 54 Event Print_Header and Event Print_Trailer Command Arguments ............... 8-38
Table 55 ExitWithError Command Arguments ................................................................... 8-42
Table 56 FClose Command Arguments ................................................................................ 8-42
Table 57 FGetFile Command Arguments ............................................................................. 8-43
Table 58 Flock Command Arguments................................................................................... 8-44
Table 59 FOpen Command Arguments ................................................................................ 8-46
Table 60 For...EndFor Command Arguments ...................................................................... 8-48
Table 61 Format Command Arguments ............................................................................... 8-50
Table 62 FormatBuffer Command Arguments .................................................................... 8-51
Table 63 FormatQ Command Arguments ............................................................................ 8-52
Table 64 FPutFile Command Arguments ............................................................................. 8-53
Table 65 FRead Command Arguments ................................................................................. 8-54
Table 66 FReadBr Command Arguments ............................................................................. 8-55
Table 67 FReadLn Command Arguments ............................................................................ 8-56
Table 68 FSeek Command Arguments .................................................................................. 8-57
Table 69 FUnLock Command Arguments ............................................................................ 8-58
Table 70 FWrite Command Arguments ................................................................................ 8-59
Table 71 FWrite Command Arguments ................................................................................ 8-60
Table 72 FWriteLn Command Arguments ........................................................................... 8-62
Table 73 GetEnterOrClear Command Arguments .............................................................. 8-62
Table 74 If...Else[If]...EndIf Command Arguments ............................................................. 8-65
Table 75 Input Command Arguments .................................................................................. 8-66
Table 76 InputKey Command Arguments ........................................................................... 8-68
Table 77 InfoMessage Command Arguments ...................................................................... 8-69
Table 78 LineFeed Command Arguments ............................................................................ 8-70
Table 79 ListDisplay Command Arguments ........................................................................ 8-72
Table 80 ListInput Command Arguments ............................................................................ 8-73
Table 81 List Print Command Arguments ............................................................................ 8-75
Table 82 LoadDbKybdMacro Command Arguments ......................................................... 8-76
Table 83 LoadKybdMacro Command Arguments .............................................................. 8-78
Table 84 LowerCase Command Arguments ........................................................................ 8-79
Table 85 MakeAscii Command Arguments ......................................................................... 8-80
Table 86 MakeUnicode Command Arguments ................................................................... 8-80
Table 87 Mid Command Arguments ..................................................................................... 8-81
Table 88 PrintLine Command Arguments............................................................................ 8-83
Table 89 Prompt Command Arguments ............................................................................... 8-86
Table 90 RxMsg Command Arguments ................................................................................ 8-90
Table 91 SaveChkInfo Command Arguments ..................................................................... 8-92
Table 92 SaveRefInfo Command Arguments ....................................................................... 8-95
22 Tables
Table 93 SaveRefInfox Command Arguments ..................................................................... 8-96
Table 94 SetIsTSKey Argument .............................................................................................. 8-97
Table 95 SetString Command Argument ............................................................................ 8-100
Table 96 Split Command Argument .................................................................................... 8-101
Table 97 SplitQ Command Arguments ............................................................................... 8-102
Table 98 StartPrint...EndPrint[FF/NOFF] Command Arguments ................................... 8-103
Table 99 ISL Printer System Variables for StartPrint…EndPrint[FF/NOFF].................. 8-103
Table 100 Sub…EndSub Command Arguments ................................................................ 8-105
Table 101 TxMsg Command Arguments ............................................................................ 8-109
Table 102 TxMsgOnly Command Arguments ................................................................... 8-110
Table 103 UpperCase Command Arguments .................................................................... 8-111
Table 104 Var Command Argument ................................................................................... 8-113
Table 105 Type Specifiers for User-Defined Variables ...................................................... 8-114
Table 106 WaitForClear Command Arguments ................................................................ 8-115
Table 107 WaitForConfirm Command Arguments ........................................................... 8-116
Table 108 WaitForEnter Command Arguments ................................................................ 8-118
Table 109 WaitForRxMsg Command Arguments ............................................................. 8-119
Table 110 While…EndWhile Command Arguments ....................................................... 8-120
Table 111 Window Command Arguments ......................................................................... 8-121
Table 112 ISL Function Summary ............................................................................................ 9-1
Table 113 Abs Function Arguments ........................................................................................ 9-3
Table 114 ArraySize Function Arguments .............................................................................. 9-3
Table 115 Asc Function Arguments ......................................................................................... 9-4
Table 116 Bit Function Arguments .......................................................................................... 9-4
Table 117 Example Bit Positions for a four Digit Hexadecimal Number ........................... 9-5
Table 118 Chr Function Arguments......................................................................................... 9-5
Table 119 Abs Function Arguments ........................................................................................ 9-6
Table 120 Env Function Arguments ........................................................................................ 9-6
Table 121 Feof Function Arguments ........................................................................................ 9-7
Table 122 Abs Function Arguments ........................................................................................ 9-7
Table 123 Abs Function Arguments ........................................................................................ 9-8
Table 124 Abs Function Arguments ........................................................................................ 9-8
Table 125 Abs Function Arguments ........................................................................................ 9-9
Table 126 Abs Function Arguments ........................................................................................ 9-9
Table 127 FTell Function Arguments ...................................................................................... 9-9
Table 128 Abs Function Arguments ...................................................................................... 9-10
Table 129 GetHex Function Arguments ................................................................................ 9-11
Table 130 Abs Function Arguments ...................................................................................... 9-11
Table 131 Instr Function Arguments ..................................................................................... 9-12
Table 132 Key Function Arguments ...................................................................................... 9-12
Table 133 KeyNumber Function Arguments ....................................................................... 9-13
Table 134 KeyType Function Arguments ............................................................................. 9-14
Table 135 Len Function Arguments....................................................................................... 9-14
Table 136 Mid Function Arguments ...................................................................................... 9-15
Table 137 Abs Function Arguments ...................................................................................... 9-16
Table 138 Abs Function Arguments ...................................................................................... 9-16
Table 139 Abs Function Arguments ...................................................................................... 9-17
Table 140 ToInteger Function Arguments ............................................................................ 9-17
Tables 23
Table 141 Trim Function Arguments..................................................................................... 9-18
Table 142 Abs Function Arguments ...................................................................................... 9-18
Table 143 Abs Function Arguments ...................................................................................... 9-18
Table 144 VarSize Function Arguments ................................................................................ 9-19
Table 145 Data Types ................................................................................................................ C-1
Table 146 Unary Operators ...................................................................................................... C-2
Table 147 Binary Operators ..................................................................................................... C-2
Table 148 System Variables...................................................................................................... C-3
Table 149 Format Specifiers ..................................................................................................... C-8
Table 150 Output Specifiers ..................................................................................................... C-9
Table 151 Commands ..............................................................................................................C-10
Table 152 Functions..................................................................................................................C-17
Table 153 C Parameter Declaration......................................................................................... D-5
Table 154 SIM Type Mapping to C Declaration .................................................................... D-6
Table 155 SIM Events and Corresponding Variables ............................................................ E-2
24 Tables
Figures
Figure 1 Order Chit with Message ......................................................................................... 2-10
Figure 2 Sample Raffle Ticket ................................................................................................. 2-11
Figure 3 Example var Command ............................................................................................. 5-2
Figure 4 Example PMSLINK .................................................................................................. 7-84
Figure 5 Example PMSNUMBER ........................................................................................... 7-85
Figure 6 ISL Error Message Format 1 ..................................................................................... A-1
Figure 7 ISL Error Message Format 2 ..................................................................................... A-1
Figure 8 ISL Error Message Format 3 ..................................................................................... A-2
Figure 9 ISL Error Message Format 4 ..................................................................................... A-2
Figure 10 ISL Error Message Format 5 ................................................................................... A-2
Figure 11 SIM Exception ........................................................................................................... F-1
Figures 25
Preface
This manual describes the System Interface Module (SIM) of Oracle MICROS Simphony
and its proprietary Interface Script Language (ISL). This manual provides information
needed to develop an interface that facilitates communications between Simphony and
various third-party systems by learning how to write scripts in ISL.
Audience
This document is intended for Simphony programmers, MIS personnel, and installers.
Customer Support
To contact Oracle Customer Support, access My Oracle Support at the following URL:
https://support.oracle.com
When contacting Customer Support, please provide the following:
• Product version and program/module name
• Functional and technical description of the problem (include business impact)
• Detailed step-by-step instructions to re-create
• Exact error message received and any associated log files
• Screen shots of each step you take
Documentation
Oracle Food and Beverage product documentation is available on the Oracle Help Center
at https://docs.oracle.com/en/industries/food-beverage/pos.html
Revision History
Date Description of Change
January 2020 • Initial publication.
26 Preface
1 Before You Start
You must know:
• How to program high-level languages, such as BASIC or C/C++
• How to implement an interface
• How to program a Simphony database
Abbreviations
Certain phrases, as listed below, are abbreviated to make reading easier.
Table 1 Abbreviations
System Simphony
Third-party System Any other system interfacing with Simphony
Conventions
The typographic conventions explained below help to simplify the written instructions.
Table 2 Conventions
Like BASIC
ISL closely resembles BASIC (or variants) in its structured, linear structure. Scripts flow
in a step-by-step structure, but unlike BASIC, each line of the script does not need to be
numbered. Like BASIC and other structured languages, the ISL supports decision-
Event Procedures
ISL is event-oriented. An event procedure is a group of statements and commands that is
defined by the ISL Event…EndEvent commands. The scripts provide a frame-like
structure for a sequences of events.
In order to start an event, the event must be initiated with a specially programmed key or
by a message response received from a third-party system. After an event is initiated
successfully, the SIM stops processing the script until another event is initiated.
Script Writing
What is a Script File?
Scripts are small programs through which the ISL issues instructions to the SIM. A script
is an ASCII text file that can be created in any common text editor, such as Microsoft
Notepad. These scripts can contain one or more events to implement SIM applications.
A single script must be maintained for each SIM Interface defined for a system. The script
is linked to a SIM Interface through Simphony database programming. Once this
relationship has been formed through database programming, the script can be executed
by Simphony. For specific programming requirements, refer to Programming Simphony
for SIM.
Initiating an Event
Instructions within events in the script tell the SIM which tasks to perform. In order to
carry out these instructions, the SIM first must be told to execute them. An event can be
initiated within a script in one of the following three ways:
• The operator can press a SIM Inquiry key, programmed in the Simphony
database to initiate an event.
• The operator can press a SIM Tender key, programmed in the Simphony
database to initiate an event.
• A third-party system, interfaced with Simphony, can respond to a message sent
to it by the SIM.
Data Entry
The entry of data is accepted from a PC keyboard, a touchscreen, a barcode reader, or a
magnetic card reader. Generally, scripts that instruct an operator to collect data, such as
name and address information, require entry using one of these methods.
Touchscreen
Data entry from a touchscreen is accepted, when required by the SIM during the
execution of a script.
To support data entry from the touchscreen, the ISL includes commands for displaying a
programmed or ISL-defined touchscreen when one is required. Normally, the script
should display a touchscreen in order for the operator to select data from it. The data
could be menu items, in which case the script should pop up a sales transaction type
Printing
Printing and backup printing are accomplished by the ISL through the use of several ISL
commands and a variety of ISL system variables.
Frequent Diners
Customers who frequently patronize an establishment are often targeted to receive
rewards and incentives for their continued loyalty. At the fictional restaurant, a Birthday
Club is one of the incentive programs offered to frequent diners.
Assume that a third-party database exists with pertinent information about frequent
diners, such as name, account number, birthdate, and so on, for sales tracking purposes.
In addition, also assume that the restaurant issues frequent diners a special VIP card,
including an account number and birthdate as track data 1.
Whenever the frequent diner visits the restaurant, the diner must present the VIP card so
the server can credit sales to the frequent diner’s account.
1This term refers to information stored on the magnetic stripe of a credit card. The
information is often stored on separate areas of the magnetic stripe, called tracks. For
example, the account number and birthdate in this example are stored on Track 2 of the
magnetic stripe.
Customizing Output
Printing is an essential POS function that can be expanded to accommodate the unique
preferences of a property. Simphony comes equipped with many different programming
options that affect how, where, and when things print. With the ISL, printing can be
further customized for a property by extending the functionality of Simphony beyond its
normal programmable limits.
The ISL’s special printing abilities in the previous examples, such as printing customer
information on guest checks and generating coupons for customers has been previously
mentioned. Now let’s examine how servers can save time when they must send special
instructions to kitchen staff about orders.
Message Formats
There are two classes of message format: fixed format and ISL format.
Message Format
The format of the message is as follows:
SOH ID STX Data ETX Checksum EOT
SOH
The SOH character (start of header) serves as a message lead-in character that identifies
the start of a new message. The SOH character is represented by the 7-bit hexadecimal
value 01H, plus a parity bit, if applicable.
ID
This is the POS Source ID segment that includes information about the workstation. The
workstation initiates the message and identifies the interface.
The format of this segment is as follows:
Table 4 POS Source ID Format
STX
FS
The FS character (field separator) identifies this message as a SIM message data block.
The FS character is represented by the 7-bit hexadecimal value 1CH, plus a parity bit, if
applicable.
Application_Sequence
The Application_Sequence segment comprises a two-digit sequence number and a
retransmission flag. Each POS workstation application increments its own sequence
number with each message. When a message is being retransmitted, the same sequence
number is used as in the original message. In addition, a retransmit flag character is
provided.
The format of this segment is as follows:
Table 5 Application_Sequence Format
The Application_Sequence number is initially set to “01” when the application starts. The
application rolls the sequence number back to “01” after “99.”
If the third-party system receives a message containing the same sequence number as the
previous message and the retransmit flag is set, the third-party should retransmit the last
response.
Application_Data
Both the TxMsg and RxMsg commands define the Application_Data segment. The total
size of the message can be 32K from the SOH to the EOT. There are a maximum of 37
bytes overhead, which means that the maximum byte count of all the fields and field
separators is 32768 - 37, or 32731 bytes.
Multiple fields can comprise this segment. Individual fields within the Application_Data
segment are separated by the ASCII field separator character (1CH), inserted by the ISL.
In addition, the first field within the receive message Application_Data segment defines
the name of the ISL procedure to execute when processing the response message. The
ETX
The ETX character (end of text) serves as a data field lead-out character that identifies the
end of the message data block. The ETX character is represented by the 7-bit hexadecimal
value 03H, plus a parity bit, if applicable.
Checksum
The Checksum field is only used when communicating over an asynchronous serial
interface. A TCP-based SIM Interface ignores this field, so it can be omitted from the
message format. When the Checksum is part of the message, however, format it as
follows:
Table 6 Checksum Format
EOT
The End of Transmission character (EOT) identifies the end of the message. It is
represented by the hexadecimal value 04H, plus a parity bit, if applicable.
Interface Methods
The SIM supports two types of interface: an asynchronous serial interface and a TCP-
based interface. Both interface methods support the Simphony-compatibility fixed-
format message and the ISL message format.
Note: Both the fixed and ISL formats can be used over the
same interface and, because Simphony supports multiple
interfaces per revenue center, any combination of these
interfaces may be used within a revenue center.
TCP Interface
This interface is designed to connect Simphony to Microsoft Windows-based systems and
other systems using the TCP/IP networking protocol. This interface can also be used to
facilitate communications between the POS application and third-party applications that
reside on the same Microsoft Windows platform as the Simphony software.
This interface is also compatible with many forms of local area networks (LANs),
including Ethernet, Token Ring, FDDI, Arcnet, PPP, and so on.
TCP Connection
The SIM connects to the TCP port as a client. The SIM Server should accept TCP
connections from the Simphony POS client on the port “micros-sim.” If this service is not
defined, the port number 5009 should be used as the default.
Error-Handling
If the receiving system detects an error in the message or some other applications-related
error, it should provide an appropriate error message response to the POS application. In
addition, if using the fixed message format, response messages should handle error
messages. As such, to support these conditions, the ISL should define specific error
responses.
What is a Script?
The means by which the ISL issues instructions to the SIM is through small programs
known as scripts. A script is an ASCII text file that the programmer creates in any
common text editor, such as Microsoft Windows Notepad. These scripts can contain one
or more events to implement SIM applications.
A separate script must be maintained for each SIM Interface defined for a system. The
script is linked to a SIM Interface through Simphony database programming. Once this
relationship is formed through database programming, the script can be executed by the
SIM. For specific programming requirements, refer to Programming Simphony for SIM.
Structure of a Script
The basic structure of scripts should be written in a format similar to the sample script
below. When writing the script, keep the following structure in mind. A brief description
of each part follows the diagram.
• Comments: Comments are used to document the purpose and scope of events
included in the script. Place comments anywhere in the script, but make sure
each comment line is preceded by two backslash characters “//” (see Script
Writing Style).
• Global variable declarations: Global variables are initialized at the beginning of
each script and maintained for the duration of the script.
• Event declaration: ISL is event-oriented. Almost all ISL statements will be
contained in events or subroutines, called by those events (see Event...EndEvent).
There are five types of events:
Event Inq: This event executes when a SIM Inquiry key is used.
Event Tmed: This event is executed when a SIM Tender key is used.
Event RxMsg: This event is executed when a response is received from the third-
party system.
Event Final_Tender: This event is executed whenever the last tender event has
occurred, but before a check has closed.
Event Print_Header and Print_Trailer: This event is executed whenever certain
control characters are programmed in the RVC Descriptors module within the
Enterprise Management Console (EMC).
• Local variable declaration commands: Local variables are purged after each
event completes execution; the event terminates after an EndEvent, ExitCancel,
ExitContinue, or any other command that causes the event to stop executing,
successfully or not.
• Subroutine declaration: Subroutine procedures are called from other event or
subroutine procedures, allowing common code to be used by multiple events. As
a script writing convention, Oracle Hospitality recommends that all subroutines
be placed after all events in the script. Subroutines are described on page 8-105.
Creating Scripts
Scripts consist of one or more events. Each event within the script represents a task that
the SIM should perform. For instance, Chapter 2 discusses several different types of SIM
applications. Each of these applications can exist as separate events within the same
script.
Examples of Scripts
Charge Denial
This script places a window with the title “Charge Denied” on the screen, and provides
text in it with the reason why the charge was denied. The operator is then prompted to
enter the [Clear] key before cancelling the operation.
event rxmsg : denial_msg
var reason_text : a32
rxmsg reason_text
Charge Posting
This script posts a charge to a PMS system and waits for the response.
var guest_id:a20
Case
ISL statements are not case sensitive and the use of case in examples is purely for clarity
and the author’s choice of style. However, quoted strings are case sensitive.
Length of Variables
The maximum character length for all variable names (user variables, subroutines, etc.) is
255.
Comments (//)
Declarations and commands will always be on their own line and should be the first non-
white space characters. A comment may be placed on a line by beginning the comment
with “//” characters. All characters to the right of the comment identifier “//” are ignored.
For example:
Window 2,19, “ROOM INQUIRY” //Create window
Display 2,2, “Enter Room Number” //Prompt for room number
A comment may reside on its own line or to the right of a command and its arguments.
Lines should be terminated with an ASCII carriage return, or an ASCII line feed, or a
carriage return/line feed pair.
Incorrect:
errormessage “Choose a number between 1\
and 10”
Whitespace
Whitespace in ISL is defined as spaces or tab characters inserted into a program to either
separate commands from their arguments or to improve program readability. For
example, the programmer might find it easier to write:
numrow = ( ( ( num_guest - 1 ) * 2 ) + header )
Instead of:
numrow=(((num_guest-1)*2)+header)
Whitespace can be placed anywhere in a script between two distinct language elements.
Language elements are: commands, functions, system variables, user- defined variables,
input/output specifiers, comments (//), relational and Boolean operators, and commas. A
language element is an indivisible piece of information which, if broken apart with
whitespace, will generate an ISL “token” error. For a complete listing of error messages,
see Appendix B.
For example, the number -125.99 cannot be written as - 125. 9 9. The command
WaitForClear cannot be written as Wait For Clear.
The table below shows the incorrect and correct ways of using whitespace:
Table 7 Correct and Incorrect Use of Whitespaces
Avoiding Errors
To avoid errors when writing and editing scripts, follow these basic guidelines:
• Verify that the script was named using the correct conventions (see page 4-5).
Also make sure it is in the proper directory.
• Check the Simphony database programming.
• Review the structure of the script.
Are all global variables declared at the beginning of the script?
Within each event, have all local variables been declared before issuing the first
command?
Are the subroutines that are called in events also within the same script? Does
the called subroutine have the same name as the actual subroutine?
• Look at the programming style. See Script Writing Style.
• Check that events correspond to the correct SIM Inquiry or SIM Tender keys
initiating the event or tender event, respectively. For further details about
creating these keys, refer to Programming Simphony for SIM.
• Check the script for syntax errors. Make sure that if a command has a
corresponding command ending the task, include it. For example, the Event
command must be used with the EndEvent command, which should always be
the last line of an event procedure.
Data Types
The ISL supports several kinds of data types, including numeric, decimal, alphanumeric,
and key data types, to specify different kinds of variables and constants.
When a variable is declared using the var 2 command, its data type and size must also be
declared. The type and size are referred to as the variable_specifier and type_specifier,
respectively.
Note that the length specifier (“32” in the example above) is optional.
The table below lists the kinds of data types and provides the abbreviations that must be
used when declaring them.
Table 9 Data Types and Corresponding Abbreviations
Example
The example below declares a 32-character alphanumeric variable and a four-digit room
number variable, respectively.
event : 1
Unary Operators
There are two unary operators:
Table 10 Unary Operators
Binary Operators
The following table lists the available binary and logical operators in order of precedence
(highest to lowest). AND and OR, the logical operators, have a lower precedence than all
the binary operators:
Table 11 Binary Operators
minus - Nx, $x
Precedence
• ISL expression operands are evaluated from left to right until the end of the
expression is reached. For example, in the following expression, 1 + 5 + 2, the 1 is
added to the 5, equaling 6, then 2 is added to 6, resulting in 8.
• When expressions mix operators (for example, + and *), then ISL will use the
precedence table to determine which subexpression within the expression will
evaluate first. In the example, the * operator has higher precedence then the +
operator. Therefore, the last two operands will be combined first, even though
they are not the first in the expression: 1 + 5 * 2
• The result is 11 (1 + 10), rather than 12 (6 * 2). The precedence rules are used for
all operators. Since the < operator has greater precedence than the OR operator,
then in the following expression: a < 1 OR b > 3
a < 1 and b > 3 are evaluated first, and both results are combined with the OR
operator.
(1 + 5) * 2
The 1 + 5 is evaluated first since it is within parentheses, even though the
multiplier * has higher precedence.
The following expression:
a < 1 OR b < 3
(a < 1) OR (b < 3)
It is good practice to always place parentheses around subexpressions, to reduce
programming errors and to make scripts more easily understood and maintained.
For example, the following expression:
Is equivalent to:
User Variables
User variables are defined by the interface designer and may be used to get operator
input, such as customer name and address information, a room number, etc. They can
also reference an entry in a message received over a SIM Interface.
var rowcnt : n3
.
.
.
Guidelines
• The variable name must begin with a letter A-Z, a-z, or the underline character
(_).
• The first character cannot be a number. It may subsequently include any
character in the range A-Z, a-z, 0-9, or the underscore _ character.
• Initially, numeric variables should always be set equal to 0.
• String variables should initially equal a null string " ".
Remember that when declaring SIM numeric or decimal variables, large variables used in
mathematical operations may be truncated. All operations involving numeric variables
use only the first nine digits, and decimal variables use only the first sixteen digits.
The scriptwriter can still declare and assign large variables. For example, it is still valid to
create an N10 variable that will hold a telephone number, or an N16 variable that will
hold an access code. However, any non-relational expressions may cause truncation and
yield the wrong answer.
Global Variables
If a variable is declared outside of an Event procedure, it is considered global. The
variable is called global because it can be referenced by any event or subroutine in the
script. As a result, the ISL must maintain the contents of the variable the duration of a
script. The variable is then reset at the start of a new transaction (for example, when
tendering a check). Also, since the variable will be used by other events and subroutines
in the script, a global variable needs to be declared only once at the top of the script
before any events or subroutines.
Local Variables
Conversely, a variable is considered local when it is declared inside an event procedure.
Local variables are only maintained while the event procedure is being executed;
executing the EndEvent command, or any other command that stops the script, purges
the local variable from the event procedure. Thus, local variables must be declared within
event procedures.
CONST keyword
The ‘const’ keyword can be used in place of the ‘var’ keyword. The two places where
const can be used are:
1. Global and local variable declarations
2. Parameter declarations
For global and local variable declarations the constant must be defined at the time it is
declared. For example:
Given the declaration above the following statement will cause an error:
MAX_COUNT = i + 1
event inq:1
var count:N5 = 20
call Test( count )
call Test( 30 )
endevent
It is not necessary to specify the length of the variable in its declaration. For example,
when declaring a string one would specify a length of 20 as:
var text:A20
Specifying the length of a variable is useful for formatting and input entry checking.
Omitting the length specification makes it easier to write scripts. The variable’s implicit
length is “whatever it takes to hold its next assignment”. For example:
var text:A
var number:N
var amount:$
There is an annoying SIM feature where a variable is ‘visible’ in all subroutines that it
calls. For example:
sub Test()
// count is visible even though not declared in Test()
count = 30
endsub
The ‘lvar’ and ‘lconst’ declarations were introduced to bring SIM variable handling to
modern standards. The ‘l’ that prefixes the declaration means that the variable’s scope is
local to the event or subroutine.
event inq:1
var a:N5 = 20
lvar b:N5 = 20
call Test()
endevent
sub Test()
// a is visible even though not declared
a = 30
The reasons for using lvar and lconst are clear: they provide local scoping rather than
global scoping. Global scoping is fraught with danger as it is too easy to overwrite parent
variables by accidentally not declaring them first.
event inq:1
var i:N5
for i = 1 to 10
call Test()
endfor
endevent
sub Test()
// the loop in inq:1 will only run once since we will
reset i to 10 upon exit.
// if i was declared using 'lvar' then an error message
will appear here because
// 'i' is not declared
for i = 1 to 10
call SomethingElse()
endfor
endsub
Notes:
• ‘lvar’ and ‘lconst’ cannot be used at the global level.
SetLocalScoping
It can be troublesome to always remember to use lvar and lconst rather than var and
const. A new command has been introduced that can force var and const, when declared
in an event or sub, to always be local. If one uses the following command at the top of the
script …
SetLocalScoping 1
… then a var will ‘become’ an lvar and a const will become an lconst.
Notes:
• If you are writing a brand new script it is recommended that you always use
local scoping. It is good programming practice. Without it your program can
easily become unmaintainable.
• If you have a legacy scripts be careful about setting this. A hidden bug may
surface. On the other hand, you may want to set local scoping on so that you can
find any latent bugs that have been hidden.
Array Variables
Arrays of variables can also be declared by including an array size with the declaration.
The syntax for an array variable is:
Var variable_name[array_size]:variable_specifier
The example below declares an array of strings named message_text, containing eight
elements, each 32 characters in length.
var message_text[8]:A32
SIM allows arrays to be initialized within the declaration of the variable. For example:
This syntax is necessary so that const arrays can be initialized. This syntax is only
allowed when the variable is declared, not in normal assignment.
For more information on the var command, see page 8-113.
This feature is useful for declaring variables whose size is not known until run-time. For
example:
var longest_str : A(max_str_len)
List Arrays
The SIM provides more than one method for sending and receiving variable amounts of
data within one message. The simplest method is to send a list. A list consists of a list_size
and the array_variable that contains the list. The list_size is any user-defined integer
variable. The array_variable is any user-defined array, as shown on page 5-11.
Using the same example, if the [fs] symbol stands for the field separator, then the
following lines will create these messages:
list[ 1 ] = "L1"
• The PMS should read the first value in the message and receive that many
elements from the rest of the message. The RxMsg command reads the data from
the message in a similar manner. For example:
var listsize : N5 var list[ 10 ] : A20
In another example, the script collects a guest name from the operator, transmits the
guest name to the PMS, receives a list of names from the PMS, and displays the list in
a window:
event inq : 1
var name : A20
input name, "Enter guest name"
txmsg "GST_INQ", guest
waitforrxmsg
endevent
• For each list, only one array may be assigned. It is possible, for example, for the
PMS to send not only the guest name, but also the room number. One way to
handle this is to receive two lists within one message:
event rxmsg : GST_RSP
var guest_count : N5
var guest_name[10] : A20h
var guest_room[10] : N5
rxmsg guest_count, guest_name[], guest_count,\
guest_room[]
.
.
endevent
Implicit List_Sizes
There are occasions where the script writer may want to use lists, but does not want to
actually specify the list_size, since the list_size is not specified in the data. For example,
assume that each line in a file contains 20 fields. In order for the ISL to read each line, a
separate variable must be specified in the Fread command for each field.
var n[20]
fread fn, n[1], n[2], n[4], n[5], n[6], n[7], n[8],\
n[9], n[10], n[11], n[12], n[13], n[14], n[15], n[16],\
n[17], n[18], n[19], n[20]
The ISL provides a method for specifying list_sizes implicitly for those cases when the
data does not contain a list_size. An implicit list_size is identified by a pound symbol (#)
placed before the list_size. Alternatively, the example above could be written as:
var n[20]
fread fn, #20, n[]
Only integer expressions may be placed in the implicit list_size field. Integer variables
may also be used.
var n[20]
var size : N5 = 20 fread fn, #size, n[]
Implicit list_sizes may be used anywhere standard list_sizes may be used.
Records
ISL also provides a more powerful, yet more complicated, syntax for specifying variable
amounts of data called records. In this format, the variables following the list size are
considered to be in groups of records.
The syntax for receiving this type of information is:
listsize, list1[] : list2[] : list3[] ...
The colon separates fields within a record and must be used when specifying records.
For example, if the PMS received an inquiry on SMITH, then it may want to group the
data as follows:
3[fs]Smith[fs]1423[fs]Smithers[fs]1827[fs]Smithson[fs]1887
Note that each record consists of a name followed by a room number. To receive the
message above, use the following statement:
rxmsg count, name[] : room[]
Promotion
ISL allows the programmer to freely combine and assign variables of the different types.
For example, it is possible to add a string and an integer, and assign it to a decimal value.
var amt : $10 = 12 + "25" + 100.45
Whenever two variables and/or constants are operated upon with an operator, and they
are not the same types, one will be “promoted” (have its type changed) before the
operation takes place.
Strings promote to integers and integers promote to decimal values. A final promotion
occurs when the expression is assigned to a variable. Therefore, the expression is
promoted (or demoted) to the variable type.
For example, if the following variables are declared:
var string : A20
var integer : N10
var decimal : $10
Then the following statements are assigned within an Event procedure, the statements
would be equivalent to:
Table 12 Example Variable Assignment
Assignment Equivalent To
string = "12" + 35 string = "47"
Only relational operators are allowed between strings; see Relational and Logical
Operators on page 2.
Correct:
integer = "12" > "35"
Incorrect:
integer = "12" + "35"
DefKey
Key definitions have these fields:
• Command: The command to execute; a word instead of a number
• Number: The object number associated with the command. If this is a menu item
command, then Number is the object number.
• Index: Similar to number, this depends on the command.
• Text: Preset keyboard buffer OR characters for the ASCII command.
• Arguments: Command-dependent.
A new function ‘defkey’ has been created that allows a SIM script to set one or more
fields of the command (formerly known as ‘key’) for OPS to process in a
LoadKybdMacro command. The syntax is:
Where:
• OpsCommandType: A string which defines the command to process. (We will
discuss how to determine what string to use soon.)
• Name: A one character identifier for the field type. For example, ‘N’ corresponds
to number.
• Value: The value for the name. For example, ‘N:2’ indicates that the number field
should be set to 2. The value can be hardcoded or it can be an expression.
defkey( "MinimizeApplication" )
@PRINTSTATUS
Backup Printer
Reference Line
Form Feed
Sets
Command
StartPrint…EndPrint[FF/NOFF] ♦3 ♦ ♦ ♦
Form Feeds
The EndPrint command can issue three types of form feeds:
• EndPrint
• EndPrintNOFF
• EndPrintFF
The EndPrint command is used when the default behavior for formfeeding at the end of
a print session should be used. For journal printers, there is no formfeed. For all other
printers a form feed is used.
The EndPrintNOFF command is used to prevent a formfeed being sent at the end of a
print job.
The EndPrintFF command is used to always force a formfeed at the end of a print job.
3 Always set to Y.
Considerations
• Although it is legal to specify a printer object number of 0, all print jobs printing
to 0 will not print—anywhere.
• An invalid object number value (-1) will generate an ISL error.
A table describing all options available with each valid ISL printer is provided with the
detail description of the StartPrint command. See StartPrint...EndPrint[FF/NOFF].
Considerations
• Print directives (@DWON and @DWOFF) may be inserted between expressions,
but only affect the expression to the right.
• The print directives are reinitialized at the end of each printed line.
• If no print directives are specified, printing will be in black and single- wide.
Example
The following example illustrates how the same expression can be printed in four
different ways by using a combination of these print directives:
Printline “Print line” //prints in black
Printline @redon, “Print line” //prints in red
Printline @dwon, “Print line” //prints in black,
// double-wide
Printline @dwon, @redon, “Print line” //prints double-wide
// in red ink
if printer = 0
errormessage “Printer dten is 0. Cannot print.” exitcancel
endif
startprint printer
printline “----------------------------”
printline directive, header_string
printline “----------------------------”
listprint listsize, list endprint
endsub
The subroutine could be invoked in the following fashion:
event inq : 1
.
.
.
print_list( @chk, sz, data[], “NORMAL HEADER”, @redoff )
.
.
.
print_list( @rcpt, sz, data[], “RED HEADER”, @redon ) endevent
Backup Printing
Whenever the StartPrint command is issued, a print job will occur. If the print job is
unable to complete successfully, it will go to the backup printer defined in the Simphony
database for each printer type (for example, @chk, @rcpt, ...).
However, there are instances when a backup printer different from the one defined in
Simphony should be specified. To accommodate these instances, the StartPrint command
accepts an optional second argument. This optional argument specifies the object number
of the backup printer, overriding the backup printer programmed in the Simphony
database.
For example, if the Check Printer is normally backed up by the Customer Receipt Printer
but the script requires that a print job to the Check Printer back up to the Order Printer,
the following command should be issued:
STARTPRINT @chk, @ordr[1] // back up to @ordr[1] instead of @rcpt
Considerations
The SIM will only route the print job to the backup printer defined in the command
syntax if the primary printer specified is a system variable. Otherwise, the ISL does not
know to which printer type the job should be re-routed. For example, assume that the
@CHK system variable equals 2.
Reference Strings
Whenever the SIM is performing a print job and an error occurs during printing (paper
out, door open), an error message will appear on the display of the workstation
explaining the error. Included in this error message is a line of text identifying the print
job.
Normally, ISL will leave this line blank. However, this reference line can be specified in
both the StartPrint commands.
STARTPRINT @chk // use default backup
STARTPRINT @chk, @rcpt // no reference line
System Variables
System variables return status information from Simphony, Microsoft Windows Status
flags, or the PMS System, as well as provide access to transaction totals and other
transaction parameters.
The following can be accomplished using the system variables that the ISL supports:
• Access the system transaction variables and totals information
• Set certain operational parameters.
This chapter contains a detailed description of each system variable.
event : 1
var account_num : A16
.
.
.
@si[ 3 ] // constant
@si[ 6 - 3 ] // equation
@si[ ( index * 2 ) - 1 ] // equation using user
variable,
//where index = 2
Array Subscripts
The difference between system array variables and user-declared array variables, is that
system array variables already have been declared and filled with the corresponding
information. Consequently, there is no need to declare the subscripts of the array.
For example, the user-declared array variable must be declared as follows:
@APPLICATIONNAME
@AUTHEMP
@AUTHEMP_FNAME
@AUTHEMP_LNAME
@AUTHTYPE
@AUTOSVC Auto Service Charge
@AVAILABLEMEMORY
@BOOTSERIALNUM
@BOOTSERIALSTR
@CASH_DRAWER
@CENTER Center Column in ISL-defined Window
@CHANGE Change Due
@CHECKDATA Facsimile of Check
@DTL_IS_COMBO_MAIN[expres
sion]
@DTL_IS_COMBO_PARENT[exp
ression]
@DTL_IS_COMBO_SIDE[expressi
on]
@DTL_IS_COND[i] Determines if a Guest Check Menu Item is
a Condiment
@DTL_IS_ON_HOLD[expression]
@OPNCHK_WSNUM[expressio
n]
@TICKCOUNT
@TMDNUM Tender/Media Number
@TNDTTL Tender Total
@TOTALMEMORY
@TRACE Output Line of Script to 8700d.log
@TRAILER Print Trailer from Print_Trailer Event
@TRAININGMODE Training Mode Status Flag
@TRCSHR Transaction Cashier Number
@TRDTLR Transaction Detail of Current Service
Round
@TRDTLT Transaction Detail of Entire Check
@TREMP Transaction Employee
@TREMP_CHKNAME Transaction Employee’s Check Name
@TREMP_FNAME Transaction Employee’s First Name
@TREMP_LNAME Transaction Employee’s Last Name
@TREMP_TYPEDEF
@TTL Amount of the detail item for the event
@TTLDUE Total Due
@TXBL[ ] Taxable Sales Itemizers
@TXEX_ACTIVE[ ] Checks if the Tax is Exempt at the
Specified Level
@UNMANAGEDDLLLIST
@USEDMEMORY
ACTIVE_LANGID
Description
This system variable holds the ID number of the currently selected language.
Syntax
@ACTIVE_LANGID
Remarks
• This system variable is Read-Only.
• This system variable is only available on SAR Ops.
ADDXFER_CHK_FROM
Description
This system variable returns the check number of the check being transferred from when
called inside an XFER_CHECK event.
Inside the ADD_CHECK event, this system variable will return the check number of the
check being added to the current check.
Type/Size
N9
Syntax
@ADDXFER_CHK_FROM
Remarks
• This system variable is Read-Only.
• This system variable is only valid in ADD_CHECK or XFER_CHECK SIM
events.
ADDXFER_CHK_TO
Description
This system variable returns the check number of the new check being transferred to (if
the check number is changed) when called inside an XFER_CHECK event.
Inside the ADD_CHECK event, this system variable will return the check number of the
check that is receiving the newly added check.
Type/Size
N9
Syntax
@ADDXFER_CHK_TO
ADDXFER_GRP_FROM
Description
This system variable returns the table group number of the check being transferred from
when called inside an XFER_CHECK event.
Inside the ADD_CHECK event, this system variable will return the table group number
of the check being added to the current check.
Type/Size
N9
Syntax
@ADDXFER_GRP_FROM
Remarks
• This system variable is Read-Only.
• This system variable is only valid in ADD_CHECK or XFER_CHECK SIM
events.
ADDXFER_GRP_TO
Description
This system variable returns the table group number of the new check being transferred
to (if the check number is changed) when called inside an XFER_CHECK event.
Inside the ADD_CHECK event, this system variable will return the table group number
of the check that is receiving the newly added check.
Type/Size
N9
Syntax
@ADDXFER_GRP_TO
Remarks
• This system variable is Read-Only.
• This system variable is only valid in ADD_CHECK or XFER_CHECK SIM
events.
Type/Size
N3
Syntax
@ADDXFER_RVC_FROM
Remarks
• This system variable is Read-Only.
• This system variable is only valid in ADD_CHECK or XFER_CHECK SIM
events.
ADDXFER_RVC_TO
Description
This system variable returns the revenue center number of the new check being
transferred to (if the check number is changed) when called inside an XFER_CHECK
event.
Inside the ADD_CHECK event, this system variable will return the revenue center
number of the check that is receiving the newly added check.
Type/Size
N3
Syntax
@ADDXFER_RVC_TO
Remarks
• This system variable is Read-Only.
• This system variable is only valid in ADD_CHECK or XFER_CHECK SIM
events.
ADDXFER_TBL_FROM
Description
This system variable returns the table number of the check being transferred from when
called inside an XFER_CHECK event.
Inside the ADD_CHECK event, this system variable will return the table number of the
check being added to the current check.
Syntax
@ADDXFER_TBL_FROM
Remarks
• This system variable is Read-Only.
• This system variable is only valid in ADD_CHECK or XFER_CHECK SIM
events.
ADDXFER_TBL_TO
Description
This system variable returns the table number of the new check being transferred to (if
the check number is changed) when called inside an XFER_CHECK event.
Inside the ADD_CHECK event, this system variable will return the table number of the
check that is receiving the newly added check.
Type/Size
N9
Syntax
@ADDXFER_TBL_TO
Remarks
• This system variable is Read-Only.
• This system variable is only valid in ADD_CHECK or XFER_CHECK SIM
events.
APPLICATIONNAME
Description
This system variable holds the name of the extension application as configured in the
database.
Type/Size
A*
Syntax
@ApplicationName
Remarks
• This system variable is Read-Only.
• This variable can be used instead of hardcoding the application name in the
script. Alternatively it can be used to validate that the extension application was
configured properly
Type/Size
N9
Syntax
@AuthEmp
Remarks
• This system variable is Read-Only.
• This variable is only active in the “auth” event.
AUTHEMP_FNAME
Description
This system variable holds the first name of the authorizing employee when an
authorization is occurring at a POS terminal.
Type/Size
A*
Syntax
@AuthEmp_FName
Remarks
• This system variable is Read-Only.
• This variable is only active in the “auth” event.
AUTHEMP_LNAME
Description
This system variable holds the last name of the authorizing employee when an
authorization is occurring at a POS terminal.
Type/Size
A*
Syntax
@AuthEmp_LName
Remarks
• This system variable is Read-Only.
• This variable is only active in the “auth” event.
Type/Size
N9
Syntax
@AuthType
Remarks
• This system variable is Read-Only.
• This variable is only active in the “auth” event.
• The number in this variable corresponds to the number of the role privilege bit
that is being authorized.
AUTOSVC
Description
This system variable contains the sum of all auto service charges posted to the current
guest check.
Type/Size
$12
Syntax
@AUTOSVC
Remarks
This system variable is Read-Only.
AVAILABLEMEMORY
Description
This system variable holds the amount of available memory available as reported by the
.net framework.
Type/Size
N
Syntax
@AvailableMemory
Remarks
• This system variable is Read-Only.
• This variable is a passthrough to @OpsContext.AvailableMemory
Type/Size
N9
Syntax
@BOOTSERIALNUM
Remarks
• This system variable is Read-Only.
BOOTSERIALSTR
Description
This system variable is currently not set and is provided for backwards compatibility for
older scripts.
Type/Size
N9
Syntax
@BOOTSERIALSTR
Remarks
• This system variable is Read-Only.
CASH_DRAWER
Description
This system variable contains the currently assigned cash drawer.
Type/Size
N1
Syntax
@CASH_DRAWER
Remarks
• This system variable is Read-Only.
• If a cash drawer is assigned the value will be 1 or 2. The value will be 0 if no cash
drawer is assigned.
Type/Size
N9
Syntax
@CENTER
Remarks
• This system variable is Read-Only.
• @CENTER evaluates to -1.
• This system variable can be used as the column argument when specifying the
Display command.
Example
The following event procedure centers the text within an ISL-defined window:
event inq : 1
window 4, 40
display 1, @center, “In this window, all lines have ”
display 2, @center, “been centered to give it “
display 3, @center, “that professional “
display 4, @center, “look.”
waitforclear
endevent
See Also
Display command
CHANGE
Description
This system variable is the amount of change due for an overtender.
Type/Size
$12
Syntax
@CHANGE
Remarks
• This system variable is Read-Only.
• This system variable is valid under only two conditions:
If in the TMED event
If the @TTLDUE system variable equals $0.00
CHECKDATA
Description
This system variable returns a string that contains a facsimile of a guest check created by
the current transaction.
Type/Size
String; size depends on data
Syntax
@CHECKDATA
Remarks
• This data is Read-Only.
• The string may consist of zero or more lines that are separated by ASCII
newlines, including print formatting characters specifying red ink or double-
wide characters.
• The MakeAscii command can be used to strip out the print formatting characters
in the string.
• This variable should only be accessed in a final_tender event.
See Also
MakeAscii command
CHGTIP
Description
This system variable contains the charged tip for the associated tender in a TMED event.
Type/Size
$12
Syntax
@CHGTIP
Remarks
• This system variable is Read-Only.
• Valid only in a TMED event.
• The @CHGTIP amount is included in the @SVC system variable.
Type/Size
N9
Syntax
@CHK
Remarks
• This system variable is Read-Only.
• This system variable can be used as an argument to the StartPrint command.
Example
The event procedure below starts a print job at the Guest Check Printer.
event inq : 1
startprint @chk
printline “this is a line”
endprint
if @printstatus = “Y”
waitforclear “Print successful”
else
waitforclear “Print failed”
endif
See Also
• StartPrint command
• ISL Printing
CHKINFOKEY
Description
This system variable is used to set the key used for storing check info lines as
extensibility detail.
Type/Size
A
Syntax
@ChkInfoKey
Remarks
• The “check info lines” in Simphony are stored as extensibility detail in the check.
When SaveChkInfo is called, OPS uses the ChkInfoKey value as a key to store the
data in the check.
• If no key is specified it will be stored with a blank key.
Type/Size
A17
Syntax
@CHK_OPEN_TIME
Remarks
This system variable is Read-Only.
CHK_OPEN_TIME_T
Description
This system variable returns the date and time that the current guest check was opened
seconds since midnight January 1, 1970.
Type/Size
N9
Syntax
@CHK_OPEN_TIME_T
Remarks
This system variable is Read-Only.
CHK_PAYMNT_TTL
Description
This system variable returns the current payment total.
Type/Size
$12
Syntax
@CHK_PAYMNT_TTL
Remarks
This system variable is Read-Only.
CHK_TTL
Description
This system variable returns the current check total.
Syntax
@CHK_TTL
Remarks
This system variable is Read-Only.
CKCSHR
Description
This system variable contains the guest check cashier number.
Type/Size
N9
Syntax
@CKCSHR
Remarks
This system variable is Read-Only.
CKCSHR_NAME
Description
This system variable contains the guest check cashier’s check name.
Type/Size
A16
Syntax
@CKCSHR_NAME
Remarks
This system variable is Read-Only.
CKEMP
Description
This system variable contains the number of the Check Employee, the operator who
owns the current guest check.
Type/Size
N9
Syntax
@CKEMP
Example
The following example is a standard message exchange between Simphony and a PMS:
event inq : 1
var room_num : a4
input room_num, “Enter Room Number”
txmsg “charge_inq”,@CKEMP,@CKNUM,@TNDTTL,room_num
response
CKEMP_CHKNAME
Description
This system variable contains the check employee’s check name, the operator who owns
the current guest check.
Type/Size
A16
Syntax
@CKEMP_CHKNAME
Remarks
This system variable is Read-Only.
CKEMP_FNAME
Description
This system variable contains the check employee’s first name, the operator who owns
the current guest check.
Type/Size
A8
Remarks
This system variable is Read-Only.
CKEMP_CHKNAME
Description
This system variable contains the check employee’s last name, the operator who owns the
current guest check.
Type/Size
A16
Syntax
@CKEMP_LNAME
Remarks
This system variable is Read-Only.
CKEMP_TYPEDEF
Description
This system variable is an array that contains the employee option bits for the check
employee.
Type/Size
N1, array
Syntax
@CkEmp_TypeDef
Remarks
• This system variable is Read-Only.
CKID
Description
This system variable contains the current guest check ID.
Type/Size
A32
Syntax
@CKID
Remarks
This system variable is Read-Only.
Type/Size
N9
Syntax
@CKNUM
Remarks
This system variable is Read-Only.
Example
See example of @CKEMP on page 7-24.
CLIENT_ONLINE
Description
This system variable determines if a workstation is online.
Type/Size
N1
Syntax
@CLIENT_ONLINE
Remarks
This system variable is Read-Only.
Example
Event Inq : 2
if @client_online <> 0
window 1,60
display 1,2, "@client_online variable value is ",
@client_online,". SAR Client is online!"
waitforclear
else
window 1,60
display 1,2, "@client_online variable value is ",
@client_online,". SAR Client is offline!"
waitforclear
endif
EndEvent
DATASTORE
Description
This system variable contains the .net object reference to the extensibility datastore.
Syntax
@DataStore
Remarks
• This system variable is Read-Only.
• Please consult the .net extensibility documentation for methods and properties
available on this object.
DAY
Description
This system variable contains the current date.
Type/Size
N2
Syntax
@DAY
Remarks
This system variable is Read-Only.
Example
The following script will construct a string_variable containing the current date in the
form dd-mm-yy:
event inq : 1
var date : a9
call get_date_string
endevent
sub get_date_string
var month_arr[12] : a3
//Listing of all the months
month_arr[1] = “JAN”
month_arr[2] = “FEB”
month_arr[3] = “MAR”
month_arr[4] = “APR”
month_arr[5] = “MAY”
month_arr[6] = “JUN”
month_arr[7] = “JUL”
month_arr[8] = “AUG”
month_arr[9] = “SEP”
month_arr[10] = “OCT”
month_arr[11] = “NOV”
month_arr[12] = “DEC”
format date as @DAY, “-”, month_arr[@MONTH], “-”, @YEAR
// i.e., 10-NOV-01
endsub
DAYOFWEEK
Description
This system variable contains the current day of the week.
Type/Size
N1
Syntax
@DayOfWeek
Remarks
• This system variable is Read-Only.
• This value corresponds to the System.DateTime.DayOfWeek value. Consult
MSDN for details.
DBVERSION
Description
The current database version. For example, if a customer wants to take advantage of all
elements in a variable-sized array, the customer may have to specify a more recent
@DBVERSION value in the SIM script
Type/Size
N5
Syntax
@DBVERSION
Remarks
This system variable is Read-Only.
DEBUGTRACE
Description
This system variable is used to send debug information to the Visual Studio output
window.
Type/Size
N1
Syntax
@DebugTrace
DETAILSORTED
Description
This system variable contains a “1” value if detail sorting is enabled or a “0” value if
sorting is disabled.
Type/Size
N9
Syntax
@DETAILSORTED
Remarks
This system variable is Read-Only.
See Also
UseSortedDetail and UseStdDetail commands
DSC
Description
This system variable contains the total amount of discounts applied to the current guest
check. This total is the sum of all percentage and amount discounts on the guest check.
Type/Size
$12
Syntax
@DSC
Remarks
This system variable is Read-Only.
DSC_OVERRIDE
Description
When a manual discount is entered, a SIM ‘Discount’ script can decrease the amount of
the discount by setting this variable to the desired discount amount.
Type/Size
$12
Remarks
This system variable is Read-Only.
DSCI
Description
This system variable is an array that contains the discount itemizer totals posted to the
current guest check.
Type/Size
$12
Syntax
@DSCI[expression]
Remarks
• This system variable is Read-Only.
• The array limits of the expression are from 1 to 16.
• This variable will return totals posted to the discount itemizer specified by the
array index.
• This variable is similar to the @SI variable.
DTLCHILDSELECTED
Description
This system variable contains the detail link of the child item selected in the detail area.
Type/Size
N9
Syntax
@DTLCHILDSELECTED
Remarks
• This system variable is Read-Only.
• See @DtlSelected to get the parent item.
• If the parent is selected this value will be the detail link of the parent item.
• This value is the same as the @OpsContext.CurrentChildItem property.
DTL_DEFSEQ
Description
This system variable contains the definition sequence number of a detail item.
Syntax
@DTL_DEFSEQ[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_DETAILLINK
Description
This system variable is an array containing the detail link of a detail item on the current
guest check.
Type/Size
N9
Syntax
@DTL_DETAILLINK [expression]
Remarks
• This system variable is Read-Only.
DTL_DSC_EMPL
Description
This system variable contains the employee number who is getting the employee meal
discount for the specified detail entry.
Type/Size
N9
Syntax
@DTL_DSC_EMPL[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
Type Size
N9
Syntax
@DTL_DSCI[expression]
Remarks
This system variable is Read-Only.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED system variable
DTL_FAMGRP
Description
This system variable is an array containing the family group of a menu item that is listed
in the current guest check detail.
Type/Size
N9
Syntax
@DTL_FMGRP[expression]
Remarks
• The expression following the system variable is the menu item’s detail number.
• The array limits are 1 to @NUMDTLT.
• This system variable is Read-Only.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_INDEX
Description
Index of the detail which fired the SIM event; applicable to the following SIM events:
• EMON_MI
• EMON_MI_VOID
• EMON_MI_RETURN
• EMON_DSC
• EMON_DSC_VOID
Type/Size
N9
Syntax
@DTL_INDEX
Remarks
• The array limits are 1 to @NUMDTLT.
• This system variable is Read-Only.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_IS_COMBO
Description
This system variable is an array containing the combo status of a detail item on the
current guest check.
Type/Size
N1
Syntax
@DTL_IS_COMBO [expression]
Remarks
• This system variable is Read-Only.
• The value is 1 if the detail is a main or side combo item.
DTL_IS_COMBO_MAIN
Description
This system variable is an array containing the combo status of a detail item on the
current guest check.
Type/Size
N1
Syntax
@DTL_IS_COMBO_MAIN [expression]
DTL_IS_COMBO_SIDE
Description
This system variable is an array containing the combo status of a detail item on the
current guest check.
Type/Size
N1
Syntax
@DTL_IS_COMBO_SIDE [expression]
Remarks
• This system variable is Read-Only.
• The value is 1 if the detail is a side combo item.
DTL_IS_COMBO_PARENT
Description
This system variable is an array containing the combo status of a detail item on the
current guest check.
Type/Size
N1
Syntax
@DTL_IS_COMBO_PARENT [expression]
Remarks
• This system variable is Read-Only.
• The value is 1 if the detail is a combo meal parent combo item.
DTL_IS_COND[i]
Description
This system variable is an array that determines if a Guest Check Menu Item is a
condiment.
Type/Size
N1
Syntax
@DTL_IS_COND[expression]
DTL_IS_ON_HOLD
Description
This system variable is an array containing the hold status of a detail item on the current
guest check.
Type/Size
N1
Syntax
@DTL_IS_ON_HOLD [expression]
Remarks
• This system variable is Read-Only.
• The value is 1 if the detail on hold.
DTL_IS_VOID[i]
Description
This system variable is set to “Y” if this detail item is a void entry. Otherwise, the
variable is set to “N.”
Type/Size
N1
Syntax
@DTL_IS_VOID
Remarks
This system variable is Read-Only.
DTL_MAJGRP
Description
This system variable is an array containing the major group of a menu item that is listed
in the current guest check detail.
Type/Size
N9
Syntax
@DTL_MAJGRP[expression]
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_MLVL
Description
This system variable is an array containing the Main Menu Level (1-8) of a detail item on
the current guest check.
Type/Size
N1
Syntax
@DTL_MLVL[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_NAME
Description
This system variable is an array containing the name of a detail item on the current guest
check.
Type/Size
A20
Syntax
@DTL_NAME[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
• The first name of menu items will be returned.
DTL_OBJNUM
Description
This system variable is an array containing the object number of a detail item on the
current guest check.
Type/Size
N9
Syntax
@DTL_OBJNUM[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
Example
See the example for @DTL_MLVL on page 7-37.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_PLVL
Description
This system variable is an array containing the price level (1-8) of a menu item on the
current guest check.
Type/Size
N1
Syntax
@DTL_PLVL[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
Type/Size
N2
Syntax
@DTL_PMSLINK[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
• The PMS Link is defined in the RVC Parameters module.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_PRICESEQ
Description
This system variable is an array containing the price sequence number (0-64) of a detail
item on the current guest check.
Type/Size
N3
Syntax
@DTL_PRICESEQ[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_QTY
Description
This system variable is an array containing the quantity of a detail item on the current
guest check.
Syntax
@DTL_QTY[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_SEAT
Description
This system variable is an array containing the object number of the detail item assigned
to a seat number.
Type/Size
N5
Syntax
@DTL_SEAT[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTLSELECTED
Description
This system variable contains the detail link of the parent item selected in the detail area.
Type/Size
N9
Syntax
@DTLSELECTED
Remarks
• This system variable is Read-Only.
DTL_SLSI
Description
This system variable contains the sales itemizer value for the menu item detail class.
Type/Size
N9
Syntax
@DTL_SLSI[expression]
Remarks
This system variable is Read-Only.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED system variable
DTL_SLVL
Description
This system variable is an array containing the Sub Menu Level (1-8) of a detail item on
the current guest check.
Type/Size
N1
Syntax
@DTL_SLVL[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
Example
See the example for @DTL_MLVL on page 7-37.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_STATUS
Description
This system variable is an array containing the status of a detail item on the current guest
check.
Syntax
@DTL_STATUS[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
• The value returned is formatted in hexadecimal digits.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_SVC_LINK
Description
This system variable is the current detail’s stored value card link, as stored in the check
detail.
Type/Size
N9
Syntax
@DTL_SVC_LINK[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_SVC_TYPE
Description
This system variable is the current detail’s stored value card type, as stored in the check
detail.
Type/Size
N9
Syntax
@DTL_SVC_TYPE[expression]
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_SVCI
Description
This system variable contains the service charge itemizer value for the menu item detail
class.
Type/Size
N9
Syntax
@DTL_SVCI[expression]
Remarks
This system variable is Read-Only.
See also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED system variable
Dtl_TaxTtl
Description
This system variable is an array containing the tax total of a detail item on the current
guest check.
Type/Size
$
Syntax
@Dtl_TaxTtl [expression]
Remarks
• This system variable is Read-Only.
• This value is calculated for the referenced detail. The sum of all detail tax totals is
not guaranteed to balance with the summary tax total.
DTL_TAXTYPE
Description
This system variable contains the tax types that were active when the corresponding
menu item, service charge, or discount detail item was ordered.
Syntax
@DTL_TAXTYPE[expression]
Remarks
• This system variable is Read-Write.
• This system variable is represented as a two-digit hex field, ranging from 00 to
FF. Each bit corresponds to the tax type. For example, 80 corresponds to tax type
1.
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED system variable
DTL_TIMED_FIRE_TIME
Description
This system variable is an array containing the timed fire time of a detail item on the
current guest check.
Type/Size
N9
Syntax
@DTL_TIMED_FIRE_TIME [expression]
Remarks
• This variable can be used to set the timed fire time of a detail item.
DTL_TTL
Description
This system variable is an array containing the total of a detail item on the current guest
check.
Type/Size
$12
Syntax
@DTL_TTL[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
grill_item[ 1 ] = 1501
grill_item[ 2 ] = 1510
grill_item[ 3 ] = 1520
grill_item[ 4 ] = 1530
grill_item[ 5 ] = 1540
grill_item[ 6 ] = 1550
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_TYPE
Description
This system variable is an array containing the detail type of an item on the current guest
check.
Type/Size
A1
Syntax
@DTL_TYPE[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are 1 to @NUMDTLT.
• The detail type will be one of the following:
Table 17 Item Detail Types
Example
See the example for @DTL_MLVL on page 7-37.
See also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@NUMDTLT system variables
DTL_TYPEDEF
Description
This system variable returns the detail item type definition for discounts (D), menu items
(M), service charges (S), and tenders (T).
Type/Size
Size depends on the detail type:
Table 18 Detail Types and Corresponding Sizes
Syntax
@DTL_TYPEDEF[expression]
Remarks
• This system variable is Read-Only.
• The type definition is returned as a hex string. If the discount type definition is
E78D, then @dtl_typedef[ ] for that discount will be “E78D,” or an A4.
• For menu items, this variable returns the type definition field from the revenue
center (RVC) level menu item class module associated with that menu item.
all detail
See Also
UseSortedDetail and UseStdDetail commands, and @DETAILSORTED and
@DTL_TYPE system variables
DWOFF
Description
This system variable returns printed text to single-wide characters (default) if the
@DWON system variable was used to switch text to double-wide characters.
Type/Size
A1
Syntax
@DWOFF
Remarks
• This system variable is Read-Only.
• @DWON is also known as a print directive and can be an argument of the
Printline command.
• All new lines of text print as single-wide characters.
Example
The ISL statement below prints “Print line” in double-wide characters and red ink, then
turns off these print directives.
startprint printer
printline “---------------------------”
printline @dwon, @redon, “chit”
See Also
• @DWON system variable; Printline command
• “ISL Printing”
DWON
Description
This system variable prints the expression that follows it in double-wide characters.
Type/Size
A1
Syntax
@DWON
Remarks
• This system variable is Read-Only.
• @DWON is also known as a print directive and can be an argument of the
Printline command.
• Double- and single-wide characters may be mixed on the same line.
Example
The ISL statement below will print “Print line” in double-wide characters and red ink.
Printline @dwon, @redon, “Print line” //prints double-wide in red
See Also
• @DWON system variable; Printline command
• “ISL Printing”
EMPLDISCOUNT
Description
In a discount event, this variable is the number of the employee discount.
Type/Size
N9
Syntax
@EMPLDISCOUNT
Remarks
This system variable is Read-Only.
Type/Size
N9
Syntax
@EMPLDISCOUNTEMPL
Remarks
This system variable is Read-Only.
EMPLOPT
Description
This system variable is an array containing the setting of SIM Employee Options
#1 through #8, which are defined for the employee who initiated the event.
Type/Size
N1
Syntax
@EMPLOPT[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are from 1 to 8.
• The value returned by the system variable will be the setting of the privilege
option code: “0” for OFF, or “1” for ON.
• These values correspond to ISL Employee Options #1 - #8 in Employee Classes |
Privileges.
• This system variable can be used to control access to specific events in scripts.
For example, to prevent certain employees from initiating a particular event,
disable one of the eight available privilege option codes. Within the event,
include an ISL statement in which the setting of the corresponding privilege
option code is checked. Thus, if the setting is disabled, for example, at this point
in the script, an error message is issued, or the employee is directed to take some
other action instead of performing the task.
Type/Size
N9
Syntax
@EPOCH
Remarks
This system variable is Read-Only.
ERRORMESSAGE
Description
This system variable contains the error message text in the “errmsg” event.
Type/Size
A
Syntax
@ERRORMESSAGE
Remarks
• This system variable is Read-Only.
EVENTARGUMENTS
Description
This system variable contains reference to the EventMonitorArgs object associated with
the currently executing event.
Type/Size
object
Syntax
@EVENTARGUMENTS
Remarks
• This system variable is Read-Only.
• This object is the same that is passed to .net extensibility. (Both share the same
EventMonitorArgs facility.)
Type/Size
A32
Syntax
@EVENTID
EVENTNAME
Description
This system variable contains the event ID associated with the currently executing event.
Type/Size
A
Syntax
@EVENTNAME
Remarks
• This system variable is Read-Only.
• This variable allows subroutines common across many events to distinguish
which event they are in.
EVENTTYPE
Description
This system variable is the string that represents the type of event being raised (an
inquire event is “INQ”). The text is the same as the first parameter in an EVENT
statement.
Type/Size
A32
Syntax
@EVENTTYPE
FIELDSTATUS
Description
This system variable contains the Input Status Flag, which is set automatically by the ISL
after any of the WindowEdit or WindowInput command is issued in an event
procedure.
Syntax
@FIELDSTATUS
Remarks
• This system variable is Read-Only.
• The Input Status Flag will be either of the following settings:
Table 19 Input Status Flags
Flag Description
Y indicates that all fields were entered by
the operator
N indicates that some, not all, of the fields
were entered by the operator
• This system variable will be set to “Y” if each DisplayInput variable has been
entered using the WindowEdit or WindowInput command; otherwise the
system variable will be set to “N”.
Example
In the example below, three variables have been defined for the DisplayInput command,
and all have been set by the user; consequently, @FIELDSTATUS is set to “Y”. If the user
entered data for only two of the three fields,
@FIELDSTATUS would be set to “N”. Thus, accessing this system variable is most logical
after issuing either the WindowEdit or WindowInput command.
event inq : 1
var data[3] : a20
window 3, 40
displayinput 1, 1, data[1], “Enter data 1”
displayinput 2, 1, data[2], “Enter data 2”
displayinput 3, 1, data[3], “Enter data 3”
windowinput
if @fieldstatus = “Y”
display 2, @center, “All fields entered”
else
display 2, @center, “Some fields not entered”
endif
waitforclear
endevent
See Also
WindowEdit[WithSave] and WindowInput[WithSave] commands
FILE
Description
This system variable contains the file name of the line of the script where the @file system
variable is referenced.
Syntax
@FILE
Remarks
• This system variable is Read-Only.
• This can be useful for debug purposes.
FILELINEMARKER
Description
This system variable contains the file name/line number of the line of the script where the
@filelinemarker system variable is referenced.
Type/Size
A
Syntax
@FILELINEMARKER
Remarks
• This system variable is Read-Only.
• An example of this variable’s value is “myscript.isl:123”, where 123 is the current
line number.
• This can be useful for debug purposes.
FILE_BFRSIZE
Description
This system variable is a user-definable variable that the ISL sets when it expects to read
lines greater than 2048 bytes in an open file.
Type/Size
N9
Syntax
@FILE_BFRSIZE
Remarks
This user-definable variable has Read-Write attributes.
Example
If the script is reading lines from a file which is 4K in length, for example, then the script
should execute the following line:
@FILE_BFRSIZE = 4096
FILE_ERRNO
Description
This system variable is where a Standard Error Number value is saved after every file
input/output operation initiated during an event procedure.
Type/Size
N6
Syntax
@FILE_ERRNO
Remarks
This system variable has Read-Write attributes.
• The value will either be 0 or non-zero: 0 means no error occurred, and non- zero
indicates an error has occurred. The following table contains the more common
non-zero error code values that may be returned by the ISL File I/O commands:
Table 20 Common Non-Zero Error Codes Returned by ISL File I/O Commands
The following table lists the possible errors that the File I/O commands may receive:
Table 21 Possible Errors Received by the File I/O Commands
See Also
• @FILE_ERRSTR system variable
• ISL File Input/Output Commands
FILE_ERRSTR
Description
This system variable returns a string containing the Standard Error that occurred during
a file input/output operation. The string corresponds to the error code saved in the
@FILE_ERRNO system variable.
Type/Size
A80
Syntax
@FILE_ERRSTR
Remarks
• This system variable is Read-Only.
• This string can be used to display the actual error message text, based on the
number value saved in the @FILE_ERRNO system variable. Displaying this error
message can make it easier to troubleshoot problems with file I/O operations and
to verify whether the script was successful in executing a file I/O operation. For
example, assume an attempt is made to write to a file with the FWrite command
and the error code 5 is saved in @FILE_ERRNO. If this file I/O operation is
unsuccessful, specifying the @FILE_ERRSTR system variable will allow the string
“I/O error” to be displayed.
• To determine the string that will be displayed, refer to Table 21 Possible Errors
Received by the File I/O Commands.
See Also
@FILE_ERRNO system variable
FILE_SEPARATOR
Description
This system variable stores the user-defined field separator to be used in all file
input/ouput operations.
Type/Size
A1
Syntax
@FILE_SEPARATOR
Remarks
• This system variable has Read-Write attributes.
• In normal ISL File I/O operations, ISL assumes the comma (,) character is the
field separator. But if a different field separator is needed, the script must change
the @FILE_SEPARATOR system variable.
• If a string with more than one character is assigned to the variable, then only the
first character will be used.
• When @FILE_SEPARATOR changes the field separator, all subsequent field
operations will use the new field separator until the @FILE_SEPARATOR
variable is changed.
FILTER_ACTIVE
Description
This system variable is set to “Y” if seat filtering is active. Otherwise, the variable is set to
“N.”
Type/Size
A1
Syntax
@FILTER_ACTIVE
FILTER_MASK
Description
This system variable is the current seat filter mask.
Type/Size
A8
Syntax
@FILTER_MASK
Remarks
This system variable is Read-Only.
GRPNUM
Description
This system variable contains the table ID group number assigned to the current guest
check.
Type/Size
N9
Syntax
@GRPNUM
Remarks
This system variable is Read-Only.
GST
Description
This system variable contains the number of guests assigned to the current guest check.
Type/Size
N5
Syntax
@GST
Remarks
This system variable is Read-Only.
See Also
@GSTRMNG system variable
Type/Size
N5
Syntax
@GSTRMNG
Remarks
• This system variable is Read-Only.
• This system variable must be used within an Event Tmed only.
• This system variable should be used in tandem with the @GSTTHISTENDER
system variable and the Prorate command to determine the remaining guest
count on a prorated guest check. In a PMS environment, the PMS may require
that the guest count on a check be prorated. For example, if five guests are on a
$100 check, and $60 ($20 * 3 = $60) is tendered, the PMS assumes that three of the
guests have settled. A typical PMS posting scenario will include a step for
prompting the operator to enter the number of guests for the current posting, to
associate the guests with the tender.
ISL provides the same capability. However, implementing this function via a SIM
Interface requires 1) knowing the number of guests remaining on the check, and 2)
informing Simphony of the number of guests to associate with a tender. Use
@GSTRMNG to get the number of guests remaining, then use this value as a
condition for requiring an operator to enter the number of guests during a tendering
transaction before posting to the PMS. See the example below.
• When the Prorate command is active and a tender/media event occurs,
@GSTRMNG will contain the number of guests yet to post. When the first tender
is posted, @GSTRMNG will be equal to all of the guests on the check. When
posting subsequent tenders, @GSTRMNG will be the number of guests
remaining. For example, if there are five guests on a check, @GSTRMNG will be
five. But if three are prorated with the first tender, @GSTRMNG will be two upon
the second round of proration.
Example
The following subroutine implements guest count proration:
sub prorate_guests
var num_guests : n5
prorate
// Prorate this many many guests for this tender. Next time around,
// this many guests will be subtracted from @gstrmng.
@gstthistender = num_guests
endif
endsub
See Also
• @GST and @GSTTHISTENDER system variables
• Prorate command
GSTTHISTENDER
Description
This system variable contains the number of guests on the current guest check associated
with a split tender when proration is active.
Type/Size
N5
Syntax
@GSTTHISTENDER
Remarks
• This system variable has Read-Write attributes.
• This system variable must be used within an Event Tmed only.
• Use this system variable in tandem with the @GSTRMNG system variable and
Prorate command to properly prorate guest count for a PMS via a SIM Interface.
When set, @GSTTHISTENDER will define the number of guests that are prorated
during a tendering transaction. For explanation, see the detail description of
@GSTRMNG.
• If the PMS requires prorated guest counts when posting tenders, the SIM script
must set @GSTTHISTENDER.
Example
See example for @GSTRMNG on page 7-58.
See Also
• @GST and @GSTRMNG system variables
• Prorate command
Type/Size
A40
Syntax
@GUID
Remarks
This system variable is Read-Only.
HEADER
Description
This system variable is string array with 48 elements. The @HEADER[] array is unique to
each event. This means that each event can begin writing to the array starting at index 1,
rather than at the next available index.
Type/Size
A32
Syntax
@HEADER[expression]
Remarks
• This system variable is Read-Write.
• This system variable is only used with the Print_Header Event. All transaction
system variables are still valid in this event. User input is still allowed, as are file
operations and display manipulation. See page 8-37.
See Also
Print_Header and Print_Trailer events and @TRAILER system variable.
HOUR
Description
This system variable contains the current hour of the day.
Type/Size
N2
Syntax
@HOUR
IGNORE_PRMT
Description
This system variable must be set to a non-zero value to enable the keyboard macro
command to pass the [Enter] key to general operator prompts.
Type/Size
N5
Syntax
@IGNORE_PRMT=integer
Remarks
This system variable has Read-Write attributes.
INEDITCLOSEDCHECK
Description
This system variable is set to “1” if this is an edit closed check entry. Otherwise, the
variable is set to “0.”
Type/Size
N1
Syntax
@INEDITCLOSEDCHECK
Remarks
This system variable is Read-Only, and is related to the Simphony function “Adjust
Closed Check”.
INPUTSTATUS
Description
This system variable sets the User Input Status Flag if the ContinueOnCancel command
is executed.
Type/Size
N9
Syntax
@INPUTSTATUS
Flag Description
0 indicates that the user canceled any input
by pressing [Cancel]
1 indicates that the user entered all valid
data
See Also
ContinueOnCancel command
INREOPENCLOSEDCHECK
Description
This system variable is set to “1” if this is reopen closed check entry. Otherwise, the
variable is set to “0.”
Type/Size
N1
Syntax
@INREOPENCLOSEDCHECK
Remarks
This system variable is Read-Only.
INSTANDALONEMODE
Description
This system variable determines if the workstation is offline.
Type/Size
N1
Syntax
@INSTANDALONEMODE
Remarks
This system variable is Read-Only.
Example
Event Inq : 2
if @InStandaloneMode <> 0
window 1,65
display 1,2, "@InStandaloneMode variable value is ",
ISJOURNALPRINT
Description
This system variable contains the status of the current print job when header and trailer
lines are being formatted by SIM.
Type/Size
N1
Syntax
@ISJOURNALPRINT
Remarks
• This system variable is Read-Only.
• This value is 1 when formatting for a journal printer, 0 otherwise.
• This variable is only valid during header/trailer events.
• This variable can be used to change the output when formatting for the journal.
ISUNICODE
Description
This system variable is set to “Y” if Unicode characters are supported. Otherwise, the
variable is set to “N.”
Type/Size
N1
Syntax
@ISUNICODE
Remarks
This system variable is Read-Only.
JNL
Description
This system variable contains the printer object number of the workstation’s report
printer.
Syntax
@JNL
Remarks
• This system variable is Read-Only.
KEY_CANCEL
Description
This system variable contains the [Cancel] key.
Type/Size
Key
Syntax
@KEY_CANCEL
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
Example
The script below tests that the [Cancel] key was pressed by using @KEY_CANCEL. The
operator is prompted to enter a number between 1 and 9. However, if either the [Clear]
or [Cancel] key is pressed instead, the script will terminate.
event inq : 4
var key_pressed : key // Hold the function key pressed
var data : a10 // Hold the number chosen
forever
inputkey key_pressed, data, “Type a Number then Enter, Clear to Exit” if
key_pressed = @KEY_CLEAR
exitcontinue
elseif key_pressed = @KEY_CANCEL
exitcontinue
elseif key_pressed = @KEY_ENTER
if data < 0 and data <=10
waitforclear “You chose “, data, “. Press Clear.”
else
errormessage “Choose a number between 1 and 10, then press Enter.”
endif
endif
endfor
endevent
See Also
InputKey command
Type/Size
Key
Syntax
@KEY_CLEAR
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
Example
See the example for @KEY_CANCEL on page 7-64.
See Also
InputKey and LoadKyBdMacro commands
KEY_DOWN_ARROW
Description
This system variable contains the [Down Arrow] key.
Type/Size
Key
Syntax
@KEY_DOWN_ARROW
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
See Also
InputKey and LoadKyBdMacro commands
KEY_END
Description
This system variable contains the [End] key.
Type/Size
Key
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
See Also
InputKey and LoadKyBdMacro commands
KEY_ENTER
Description
This system variable contains the [Enter] key.
Type/Size
Key
Syntax
@KEY_ENTER
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
Example
See the example for @KEY_CANCEL on page 7-64.
See Also
InputKey and LoadKyBdMacro commands
KEY_EXIT
Description
This system variable contains the [Exit] key.
Type/Size
Key
Syntax
@KEY_EXIT
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
KEY_HOME
Description
This system variable contains the [Home] key.
Type/Size
Key
Syntax
@KEY_HOME
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
See Also
InputKey and LoadKyBdMacro commands
KEY_LEFT_ARROW
Description
This system variable contains the [Left Arrow] key.
Type/Size
Key
Syntax
@KEY_LEFT_ARROW
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
See Also
InputKey and LoadKyBdMacro commands
KEY_PAGE_DOWN
Description
This system variable contains the [Page Down] key.
Type/Size
Key
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
See Also
InputKey and LoadKyBdMacro commands
KEY_PAGE_UP
Description
This system variable contains the [Page Up] key.
Type/Size
Key
Syntax
@KEY_PAGE_UP
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
See Also
InputKey and LoadKyBdMacro commands
KEY_RIGHT_ARROW
Description
This system variable contains the [Right Arrow] key.
Type/Size
Key
Syntax
@KEY_RIGHT_ARROW
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
See Also
InputKey and LoadKyBdMacro commands
Type/Size
Key
Syntax
@KEY_UP_ARROW
Remarks
• This system variable is Read-Only.
• This system variable is designed for checking keystrokes from the InputKey
command and setting keyboard macros with the LoadKyBdMacro command.
See Also
InputKey and LoadKyBdMacro commands
LANG_ID
Description
This system variable is an array that contains the ID numbers of all defined languages.
Type/Size
N9
Syntax
@LANG_ID
Remarks
• This system variable is Read-Only.
• This system variable is only available on SAR Ops.
LANG_NAME
Description
This system variable is an array that contains the language names for all defined
languages. The indexing is the same as @lang_id, therefore @lang_name[1] is the name of
the language associated with @lang_id[1].
Type/Size
A20
Syntax
@LANG_NAME
LASTCKNUM
Description
This system variable contains the previous check number that was assigned to the
current guest check.
Type/Size
N9
Syntax
@LASTCKNUM
Remarks
• This system variable is Read-Only.
• A last check number value of 0 indicates that the check number has not changed.
LINE
Description
This system variable contains the number of the current line in the script that is being
executed.
Type/Size
N5
Syntax
@LINE
Remarks
• This system variable is Read-Only.
• Use this system variable as a debugging tool.
See Also
@LINE_EXECUTED system variable
LINE_EXECUTED
Description
This system variable contains the number of lines executed since the script began
running.
Type/Size
N5
Remarks
• This system variable is Read-Only.
• Use this system variable as a debugging tool.
See Also
@LINE system variable
MAGSTATUS
Description
This system variable contains the Magnetic Card Entry Status Flag. The flag indicates
whether data was input by swiping a card through a magnetic card reader.
Type/Size
A1
Syntax
@MAGSTATUS
Remarks
• This system variable is Read-Only.
• The Magnetic Card Entry Status Flag will be either of the following settings:
Table 23 Magnetic Card Entry Status Flag
Flag Description
Y Indicates that data was input by
swiping a card through a magnetic card
N Indicates that data was input by means
other than a magnetic card reader, such as
via keyboard entry
• @MAGSTATUS is best used after issuing an Input or WindowInput/Edit
command.
Example
This event captures credit card information, entered manually from a keyboard or
electronically from a magnetic card reader. The script uses the @MAGSTATUS system
variable to determine the source from which the information is captured.
event : 1
var cardholder_name : a20
var account_num : a19
var expire_date : n4
var track1_data : a79
var track2_data : a79
window 3, 78
touchscreen 16
if @MAGSTATUS = “Y”
display 2, 2, “As read from credit card.”
else
display 2, 2, “As entered from keyboard.”
endif
waitforclear
endevent
See Also
DisplayMSInput command
MAXDTLR
Description
This system variable contains the maximum size string required to format the transaction
detail held in the @TRDTLR system variable.
Type/Size
N9
Syntax
@MAXDTLR
Remarks
This system variable is Read-Only.
See Also
@DTL_*, @MAXDTLT, and @TRDTLR system variables
MAXDTLT
Description
This system variable contains the maximum size string required to format the transaction
detail held in the @TRDTLT system variable.
Type/Size
N9
Syntax
@MAXDTLT
See Also
@DTL_*, @MAXDTLR and @TRDTLT system variables
MAXKYBDMACRO
Description
This system variable contains the maximum number of macro keys that can be queued
for the LoadKybdMacro command.
Type/Size
N9
Syntax
@MAXKYBDMACRO
Remarks
• This system variable is Read-Only.
MAX_LINES_TO_RUN
Description
This system variable is a debugging tool that can be set to the maximum number of lines
in the script to run.
Type/Size
N5
Syntax
@MAX_LINES_TO_RUN = # of lines
Remarks
• This system variable has Read-Write attributes.
• This system variable should be set before the lines in the script that are being
debugged.
MINUTE
Description
This system variable contains the current minute of the current hour.
Type/Size
N2
Syntax
@MINUTE
MONTH
Description
This system variable contains the current month of the current year.
Type/Size
N2
Syntax
@MONTH
Remarks
• This system variable is Read-Only.
• The value returned will be from 1 to 12.
Example
See the example for @DAY on page 7-28.
See Also
@DAY and @YEAR system variables
NEXTMYOPENCHECKGUID
Description
This system variable contains the the guid of the oldest open check for this workstation.
Type/Size
A
Syntax
@NEXTMYOPENCHECKGUID
Remarks
• This system variable is Read-Only.
NUL
Description
This system variable specifies that a binary 0 should be sent when printing binary data to
a printer. The @nul variable is useful only on the PrintLine command.
Type/Size
A2
Remarks
This system variable is used to escape the NUL character.
NULL
Description
This system variable contains a null object reference.
Type/Size
object
Syntax
@NULL
Remarks
• This system variable is Read-Only.
• There is no literal way to represent ‘null’ in SIM; this provides that capability.
NUMDSC
Description
This system variable contains the number of active discounts posted to the current guest
check.
Type/Size
N1
Syntax
@NUMDSC
Remarks
This system variable is Read-Only.
NUMDTLR
Description
This system variable contains the number of transaction detail entries posted during the
current service round on the guest check.
Type/Size
N5
Syntax
@NUMDTLR
NUMDTLT
Description
This system variable contains the number of transaction detail entries posted to the
current guest check.
Type/Size
N5
Syntax
@NUMDTLT
Remarks
• This system variable is Read-Only.
• This system variable is used to provide the maximum array limit for the @DTL_*
system variables.
Example
See the example for @DTL_MLVL on page 7-37.
See Also
@DTL_* and @NUMDTLR system variables
NUMLANGS
Description
This system variable holds the number of languages in the @lang_id and @lang_name
arrays.
Type/Size
N9
Syntax
@NUMLANGS
Remarks
• This system variable is Read-Only.
• This system variable is only available on SAR Ops.
NUMOPENCHK
Description
This system variable contains the number
Syntax
@NUMOPENCHK
Remarks
• This system variable is Read-Only.
• There is no literal way to represent ‘null’ in SIM; this provides that capability.
NUMSI
Description
This system variable contains the number of active sales itemizers defined in the
RVC Descriptors module.
Type/Size
N9
Syntax
@NUMSI
Remarks
This system variable is Read-Only.
NUMSVC
Description
This system variable contains the number of active service charge itemizers defined for
the revenue center.
Type/Size
N1
Syntax
@NUMSVC
Remarks
• This system variable is Read-Only.
• This system variable will always returns the value 1.
NUMTAX
Description
This system variable contains the number of active tax rates.
Type/Size
N1
Remarks
This system variable is Read-Only.
OBJ
Description
This system variable is the object number of the detail item for the event.
Type/Size
N9
Syntax
@OBJ
Remarks
This system variable is only valid in the MI*, DSC*, SVC*, and TNDR* events.
OFFLINE LINK
Description
This system variable is used to link to an offline PMS system. For example when the PMS
is down, Ops can query the local guest database for account information and post the
transaction offline.
Type/Size
N12
Syntax
@OFFLINE LINK
OPNCHK_CKNUM
Description
This system variable contains the Open Check check number
Type/Size
N5
Syntax
@OPNCHK_CKNUM[expression]
Remarks
• The @NUMOPENCHK system variable must be called first to return data using
any of the available @OPNCHK_* system variables.
• This system variable is Read-Only.
OPNCHK_TREMPID
Description
This system variable contains the Open Check transaction employee database ID
Type/Size
N
Syntax
@OPNCHK_TREMPID[expression]
Remarks
• The @NUMOPENCHK system variable must be called first to return data using
any of the available @OPNCHK_* system variables.
• This system variable is Read-Only.
• The array limits of the expression are from 1 to the count return from
@NUMOPENCHK.
OPNCHK_TREMPNUM
Description
This system variable contains the Open Check transaction employee number
Type/Size
N9
Syntax
@OPNCHK_TREMPNUM [expression]
Remarks
• The @NUMOPENCHK system variable must be called first to return data using
any of the available @OPNCHK_* system variables.
• This system variable is Read-Only.
• The array limits of the expression are from 1 to the count return from
@NUMOPENCHK.
OPNCHK_WSID
Description
This system variable contains the Open Check owner workstation database ID.
Type/Size
N
Remarks
• The @NUMOPENCHK system variable must be called first to return data using
any of the available @OPNCHK_* system variables.
• This system variable is Read-Only.
• The array limits of the expression are from 1 to the count return from
@NUMOPENCHK.
OPNCHK_WSNUM
Description
This system variable contains the Open Check owner workstation number.
Type/Size
N
Syntax
@OPNCHK_WSNUM[expression]
Remarks
• The @NUMOPENCHK system variable must be called first to return data using
any of the available @OPNCHK_* system variables.
• This system variable is Read-Only.
• The array limits of the expression are from 1 to the count return from
@NUMOPENCHK.
OPSCONTEXT
Description
This system variable contains the reference for the extensibility OpsContext object.
Type/Size
object
Syntax
@OPSCONTEXT
Remarks
• This system variable is Read-Only.
• Consult extensibility documentation for methods and properties on this object.
ORDERTYPE
Description
This system variable contains the active order type on the current guest check.
Syntax
@ORDERTYPE
Remarks
This system variable is Read-Only.
OrderType_Name
Description
This system variable contains the order type name for the current check.
Type/Size
A
Syntax
@OrderType_Name
Remarks
• This system variable is Read-Only.
ORDR
Description
This system variable is an array containing the object number of a Remote Order or Local
Backup Printer defined for Simphony.
Type/Size
N9
Syntax
@ORDR[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are from 1 to 15.
• This system variable can be used as an argument to the StartPrint command.
Example
The example below starts a print job at a remote order printer.
sub print_message
startprint @ordr1
printline “============================”
printline “Message from “, sender_name
printline “============================”
for rowcnt = 1 to 136
if len(kitchen_msg[rowcnt]) > ““
printline kitchen_msg[rowcnt]
See Also
• StartPrint command
• “ISL Printing”
OS_PLATFORM
Description
This system variable is the value of the operating system platform:
Table 24 Values Corresponding to the Operating System Platform
Value Description
1 Microsoft Windows CE
3 Win 32
4 Oracle Linux for MICROS
Type/Size
N1
Syntax
@OS_PLATFORM
Remarks
This system variable is Read-Only.
PICKUPLOAN
Description
This system variable is the value of the pickup or loan amount.
Type/Size
$4
Syntax
@PICKUPLOAN
Remarks
This system variable is only valid in the PICKUP_LOAN event.
Type/Size
A4
Syntax
@PLATFORM
Remarks
• This system variable is Read-Only.
• The string returned is “Simphony.”
PMSBUFFER
Description
This system variable contains a string that points to the entire message received from the
third-party system communicating with Simphony.
Type/Size
String; size depends on the data returned from the third-party system (for example, PMS)
Syntax
@PMSBUFFER
Remarks
• This system variable has Read-Write attributes.
• The size of data in the PMS buffer is formatted as a string, which can be up to
32,768 bytes in length.
• This system variable is a debugging tool. For example, if the PMS message
received by Simphony is suspected of being formatted incorrectly, using
@PMSBUFFER the message can be displayed in an ISL-defined window as it is
being received.
• Issuing @PMSBUFFER is valid only after a message has been received from the
third-party system (for example, PMS).
PMSLINK
Description
This system variable contains the PMS Link defined in the RVC Parameters module.
Type/Size
N2
Remarks
• This system variable is Read-Only.
• The value returned by @PMSLINK will be the PMS defined in the RVC Parameters
module to which the script is linked. For example, if @PMSLINK is executed by
pms1.isl, which is linked to PMS Link #2 “1 Fidelio,” then @PMSLINK will be set
to “2.”
See Also
@PMSNUMBER system variable
PMSNUMBER
Description
This system variable contains the PMS object number, defined in the Interfaces module, to
which the script is linked.
Type/Size
N3
Syntax
@PMSNUMBER
Remarks
• This system variable has Read-Write attributes.
• In order to link the script file to a PMS, this object number is contained in the
name of the script file. Thus, if running the script pms1.isl, then @PMSNUMBER
will be set to 1.
See Also
@PMSLINK system variable
PREVPAY
Description
This system variable contains the total amount tendered thus far on the current guest
check.
Type/Size
$12
Syntax
@PREVPAY
Remarks
This system variable is Read-Only.
PRINTSTATUS
Description
This system variable sets the Print Status Flag to indicate whether a print job has
completed successfully or failed.
Type/Size
A1
Syntax
@PRINTSTATUS
Remarks
• This system variable is Read-Only.
• The Print Status Flag will be either of the following settings:
Table 25 Print Status Flags
Flag Description
Y indicates that a print job completed successfully
Example
The event procedure below uses the setting of @PRINTSTATUS to determine which
message to display after issuing the Printline command.
event inq : 1
startprint @chk
printline “this is a line”
endprint
if @printstatus = “Y”
waitforclear “Print successful”
else
waitforclear “Print failed”
endif
See Also
• Printline command
• “ISL Printing”
PROPERTY
Description
This system variable returns the Property Number of the Workstation.
Type/Size
N9
Syntax
@PROPERTY
Remarks
This system variable is Read-Only.
QTY
Description
This system variable is the quantity of the detail item for the event.
Type/Size
N9
Syntax
@QTY
Remarks
This system variable is only valid in the MI*, DSC*, SVC*, and TNDR* events.
Type/Size
N9
Syntax
@RANDOM
RCPT
Description
This system variable contains the object number of the Customer Receipt Printer defined
for the System Unit.
Type/Size
N9
Syntax
@RCPT
Remarks
• This system variable is Read-Only.
• This system variable can be used as an argument to the StartPrint command.
See Also
• StartPrint command
• “ISL Printing”
REDOFF
Description
This system variable contains printed text to black ink (or default ink, such as blue).
Type/Size
A1
Syntax
@REDOFF
Remarks
• This system variable is Read-Only.
• @REDOFF is also known as a print directive and can be an argument of the
Printline command.
• All new lines of text print default ink (for example, black or blue).
Example
The ISL statement below prints “Print line” in double-wide characters and red ink, then
turns off these print directives.
startprint printer
printline “----------------------------”
printline @dwon, @redon, “chit”
printline “----------------------------”
@dwoff, @redoff
endprint
See Also
• @REDON system variable; Printline command
• “ISL Printing”
REDON
Description
This system variable prints the expression that follows it in red ink.
Type/Size
A1
Syntax
@REDON
Remarks
• This system variable is Read-Only.
• @REDON is also known as a print directive and can be an argument of the
Printline command.
• Characters in red and black ink can print on the same line.
Note: The Citizen autocut roll printer does not recognize the first occurrence of this
variable after a printline command. The second occurrence, and all succeeded
occurrences of this variable, are recognized by the Citizen autocut roll printer.
This situation does NOT occur with standard MICROS roll printers.
Example
The ISL statement below will print “Print line” in double-wide characters and red ink.
Printline @dwon, @redon, “Print line” //prints double-wide in red
See Also
• @REDOFF system variable; Printline command
• “ISL Printing”
Type/Size
A1
Syntax
@RETURNSTATUS
Remarks
This system variable is Read-Only.
RUNNINGDIRECTORY
Description
This system variable contains the absolute path for the current executable.
Type/Size
A
Syntax
@RUNNINGDIRECTORY
Remarks
• This system variable is Read-Only.
RVC
Description
This system variable contains the number of the revenue center to which the script is
linked by its revenue center PMS link.
Type/Size
N3
Syntax
@RVC
Remarks
• This system variable is Read-Only.
• This system variable will be set to the object number of the revenue center in
which the script is running. For instance, if the PMS link for pms1.isl is defined in
revenue center #4, then the system variable will be set to 4.
Type/Size
A16
Syntax
@RVC_NAME
Remarks
This system variable is Read-Only.
RXMSG
Description
This system variable contains the Event ID assigned to the response message sent by a
third-party system to Simphony.
Type/Size
A32
Syntax
@RXMSG
Remarks
• This system variable is Read-Only.
• This command is not available on SAR Ops.
• When either the WaitForRxMsg or GetRxMsg commands are executed, the ISL
waits for a return event. The first field of the Application_Data segment of the
response message is assumed to be the Event ID of the return event. The
@RXMSG system variable contains that Event ID.
Example
In the event below, the @RXMSG system variable is used to verify that the Event ID in
the returned message is the correct one.
event inq : 1
txmsg "ver_req" // Transmit string requesting
// version of system software
getrxmsg // Wait for response
if @rxmsg = "ver_rsp"
rxmsg version_s // Format message received
waitforclear version_s // Display it
elseif @rxmsg = "ver_err"
errormessage "Version number invalid"
exitcancel
endif
endevent
SEAT
Description
This system variable contains the number of the active seat on the current guest check.
Type/Size
N5
Syntax
@SEAT
Remarks
This system variable is Read-Only.
SECOND
Description
This system variable contains the current second of the current minute.
Type/Size
N2
Syntax
@SECOND
Remarks
• This system variable is Read-Only.
• A value from 0 to 59 is valid.
See Also
@MINUTE system variable
SI
Description
This system variable is an array containing the sales itemizer totals posted to the current
guest check.
Type/Size
$12
Syntax
@SI[expression]
SI_DSC
Description
This system variable contains the discount sales itemizer
Type/Size
$
Syntax
@SI_DSC[expression]
Remarks
• This system variable is Read-Only.
SIMDBLINK
Description
This system variable links to the SIMDB DLL to the database. For example, if a property
has a PMS System which has two connections—one for live postings and another for
room updates to the SIMDB DLL—the two systems can be linked with the @SIMBLINK
system variable in SIM
Type/Size
N12
Syntax
@SIMDBLINK
SRVPRD
Description
This system variable contains the active serving period.
Type/Size
N9
Syntax
@SRVPRD
Remarks
This system variable is Read-Only.
Type/Size
A
Syntax
@STACKFRAMETEXT
Remarks
• This system variable is Read-Only.
• This is not a .net stack trace but a SIM subroutine stack.
STRINGARGS
Description
This system variable contains the status for directing how SIM processes list input.
Type/Size
N
Syntax
@STRINGARGS
Remarks
• This system variable is Read/Write
• When processing list input (parsing a variable list of values) the SIM engine can
be directed what to do with a mismatch between expected number of items
versus actual number of items.
• If set to 0 SIM will not throw an error if the expected versus actual number of
items differ.
• If set to 1 SIM will throw an error when the number of values differ.
SVC
Description
This system variable contains the total amount of service charges posted to the current
guest check.
Type/Size
$12
Syntax
@SVC
SVCI
Description
This system variable is an array that contains the service charge itemizer totals posted to
the current guest check.
Type/Size
$12
Syntax
@SVCI[expression]
Remarks
• This system variable is Read-Only.
• The array limits of the expression are from 1 to 16.
• This variable will return totals posted to the service charge itemizer specified by
the array index.
• This variable is similar to the @SI variable.
SYSLOGTRACE
Description
This system variable contains the status for directing how SIM logs execution lines.
Type/Size
N
Syntax
@SYSLOGTRACE
Remarks
• This system variable is Read/Write
• When set to 1 each SIM text line will be logged to the EGateway log until either
the script ends of this variable is set to 0.
• This variable can be used to troubleshoot scripts.
SYSTEM_STATUS
Description
This system variable contains the shell return status after the System command is
executed.
Syntax
@SYSTEM_STATUS
Remarks
This system variable is Read-Only.
TAX
Description
This system variable is an array containing the totals posted to the active tax rate on the
current guest check.
Type/Size
$12
Syntax
@TAX[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are from 1 to 8.
See Also
@TAXRATE[] system variable
TAXRATE
Description
This system variable is an array containing the tax rate defined for the specified
Taxes module.
Type/Size
A6
Syntax
@TAXRATE[expression]
Remarks
• This system variable is Read-Only.
• The array limits for the expression are from 1 to 8.
• The value returned is a string instead of an amount, since the percentage may be
any number of decimal digits (for example, 5.1265).
See Also
@TAX[] system variable
Type/Size
$12
Syntax
@TAXVAT[expression]
Remarks
This system variable is Read-Only.
See Also
@TAX[] system variable
TBLID
Description
This system variable contains the sequence number of the table ID assigned to the current
guest check.
Type/Size
A4
Syntax
@TBLID
Remarks
This system variable is Read-Only.
See Also
@TBLNUM system variable
TBLNUM
Description
This system variable contains the sequence number of the table ID assigned to the current
guest check.
Type/Size
N9
Syntax
@TBLNUM
Remarks
This system variable is Read-Only.
getrxmsg
endevent
TICKCOUNT
Description
This system variable contains the tick count for the executing application.
Type/Size
N
Syntax
@TICKCOUNT
Remarks
• This system variable is Read-Only.
• This variable returns the value of the .net framework
System.Environment.TickCount property.
TMDNUM
Description
This system variable contains the number assigned to the tender/media associated with
this posting.
Type/Size
N9
Syntax
@TMDNUM
Remarks
This system variable is Read-Only.
TNDTTL
Description
This system variable contains the total for this posting, which can be reduced.
Syntax
@TNDTTL
Remarks
• This system variable has Read-Write attributes.
• This system variable must be accessed within a tender/media event.
• The purpose of this system variable is to allow the total due on a check to be
updated if necessary. This system variable is best used in an environment where
some form of credit limit is applied to purchases, such as in a student meal plan
or a frequent diner program for hotel patrons. In a student meal plan, students
may have a set amount of credit applied to each meal. For example, assume that
each student meal credit limit is $4.50 per meal. If a student surpasses this
amount with a purchase of $6.00, the @TNDTTL ($6.00) can be overwritten with
the credit limit of $4.50. Then the student can cover the difference of $1.50 with
cash, for example.
Example
In the example that follows, the tender total is reduced from $6.00 to $4.50, the allowable
student meal credit.
event tmed : 1
txmsg “POST”, @tndttl // send over $6.00
waitforrxmsg
endevent
TOTALMEMORY
Description
This system variable holds the amount of total memory available as reported by the .net
framework.
Type/Size
N
Syntax
@TOTALMEMORY
Remarks
• This system variable is Read-Only.
TRACE
Description
This system variable must be set to a non-zero value in order to output each executed ISL
statement to the 8700d.log file.
Type/Size
N5
Syntax
@TRACE = integer
Remarks
• This system variable has Read-Write attributes.
• The primary usage of this feature is debugging.
TRAILER
Description
This system variable is string array with 32 elements. The @TRAILER[] array is unique to
each event. This means that each event can begin writing to the array starting at index 1,
rather than at the next available index.
Type/Size
A32
Syntax
@TRAILER[expression]
Remarks
• This system variable is Read-Write.
• This system variable is only used with the Print_Header event. All transaction
system variables are still valid in this event. User input is still allowed, as are file
operations and display manipulation. See page 8-37.
See Also
Print_Header and Print_Trailer events and @HEADER system variable.
TRAININGMODE
Description
This system variable contains the Training Mode Status of an employee.
Type/Size
N1
Remarks
• This system variable is Read-Only.
• The Training Mode Status will be either of the following settings:
Table 26 Training Mode Status
Status Description
Zero indicates that the employee is not in
training mode
Non-zero indicates that the employee is in
training mode
TRCSHR
Description
This system variable contains the Transaction Cashier number of the current guest check.
Type/Size
N9
Syntax
@TRCSHR
Remarks
This system variable is Read-Only.
TRDTLR
Description
This system variable contains transaction detail posted to the current guest check during
this service round.
Type/Size
Various (see Remarks)
Syntax
@TRDTLR
Remarks
• This system variable is Read-Only.
• The transaction detail information is designed to provide enough detail, to
display or print a basic guest check. If more information is required, it should be
exported from the appropriate database files with the Simphony SQL module.
• Each transaction detail entry comprises the following fields:
• The transaction detail will be preceded by a Number of Detail Entries field. This
field is of the type and size N3, and indicates how many detail entries follow.
• When partial payments are posted to a PMS using prorated itemizers, all the
detail on the guest check will be transferred, not just the detail associated with
this partial payment. If selective detail is required, the guest check should be split
at the POS prior to being posted to the PMS.
See Also
@DTL_*, @MAXDTLR, and @TRDTLT system variables
TRDTLT
Description
This system variable contains all the transaction detail from the current guest check.
Type/Size
Various (see Remarks)
Remarks
• This system variable is Read-Only.
• The transaction detail information is designed to provide enough detail, to
display or print a basic guest check. If more information is required, it should be
exported from the appropriate database files with the Simphony SQL module.
• Each transaction detail entry comprises the fields described in the Table 27
Transaction Detail Fields.
• The transaction detail will be preceded by a Number of Detail Entries field. This
field is of the type and size N3, and indicates how many detail entries follow.
• When partial payments are posted to a PMS using prorated itemizers, all the
detail on the guest check will be transferred, not just the detail associated with
this partial payment. If selective detail is required, the guest check should be split
at the POS prior to being posted to the PMS.
See Also
@MAXDTLT and @TRDTLR system variables
TREMP
Description
This system variable contains the number of the Transaction Employee, the employee
posting sales to the current guest check.
Type/Size
N9
Syntax
@TREMP
Remarks
• This system variable is Read-Only.
• Typically, the Transaction Employee is also the Check Employee, or the person
who originally began the check. However, managers and cashiers may be
privileged to be the Transaction Employee if they must post sales to another
employee’s check. Depending on the revenue center options enabled, sales totals
and tender totals will post to either the Check Employee or the Transaction
Employee and to their corresponding Cashier Totals, if there is a link.
See Also
@CKEMP system variable
Type/Size
A16
Syntax
@TREMP_CHKNAME
Remarks
This system variable is Read-Only.
TREMP_FNAME
Description
This system variable contains the Transaction Employee’s first name, the employee
posting sales to the current guest check.
Type/Size
A8
Syntax
@TREMP_FNAME
Remarks
This system variable is Read-Only.
TREMP_LNAME
Description
This system variable contains the Transaction Employee’s last name, the employee
posting sales to the current guest check.
Type/Size
A16
Syntax
@TREMP_LNAME
Remarks
This system variable is Read-Only.
Type/Size
N1, array
Syntax
@TREMP_TYPEDEF
Remarks
• This system variable is Read-Only.
TTL
Description
This system variable is the amount of the detail item for the event.
Type/Size
$12
Syntax
@TTL
Remarks
This system variable is only valid in the MI*, DSC*, SVC*, and TNDR* events.
TTLDUE
Description
This system variable contains the total due for the current guest check.
Type/Size
$12
Syntax
@TTLDUE
Remarks
This system variable is Read-Only.
TXBL
Description
This system variable is an array containing the taxable sales itemizer on the current guest
check.
Syntax
@TXBL[expression]
Remarks
• This system variable is Read-Only.
• The array limits of the expression are from 1 to 8.
TXEX_ACTIVE
Description
This system variable checks if the Tax is exempt at the specified level.
Type/Size
N1
Syntax
@TXEX_ACTIVE[expression]
Remarks
This system variable is Read-Only.
USEDMEMORY
Description
This system variable holds the amount of total memory used as reported by the .net
framework.
Type/Size
N
Syntax
@TOTALMEMORY
Remarks
• This system variable is Read-Only.
• This variable is a passthrough to @OpsContext.UsedMemory
USERENTRY
Description
This system variable contains the data entered by an operator prior to pressing the SIM
Inquiry key.
Type/Size
A20
Remarks
• This system variable is Read-Only.
• @USERENTRY will contain the data entered prior to pressing the SIM Inquiry
key. For example, if an operator enters “123” then presses the SIM Inquiry key,
@USERENTRY will contain “123.”
VALD
Description
This system variable contains the object number of the Validation Chit Printer assigned
to the workstation.
Type/Size
N9
Syntax
@VALD
Remarks
• This system variable is Read-Only.
• This system variable can be used as an argument to the StartPrint command.
See Also
• StartPrint command
• “ISL Printing”
VARIABLEFRAMETEXT
Description
This system variable holds a string which lists all of the declared user variables in all
stack frames.
Type/Size
A
Syntax
@VARIABLEFRAMETEXT
Remarks
• This system variable is Read-Only.
VERSION
Description
This system variable contains the version designation of the SIM.
Syntax
@VERSION
Remarks
• This system variable is Read-Only.
• This system variable returns text of varying lengths.
Example
The event below draws a window and displays the SIM version number.
event inq : 1
window 1, 30
display 1, @center, “The SIM Ver is: “, @version
endevent
VOIDSTATUS
Description
This system variable is set to “Y” when the Void and Transaction Void functions are
active; otherwise, the variable is set to “N.”
Type/Size
A1
Syntax
@VOIDSTATUS
Remarks
This system variable is Read-Only.
WARNINGS_ARE_FATAL
Description
This system variable interrupts script processing with a fatal error if variable overflow
occurs.
Type/Size
N5
Syntax
@WARNINGS_ARE_FATAL
Remarks
• This system variable has Read-Write attributes.
• By default, no error is reported when strings, reals, or integers overflow the
variables to which they are assigned; the values are truncated to fit the variables.
The @WARNINGS_ARE_FATAL system variable can be set to handle the
Example
@WARNINGS_ARE_FATAL = 1
event tmed : 9
var room : a6
var guest_name : a20
WCOLS
Description
This system variable contains the number of columns in the ISL-defined window
currently displayed.
Type/Size
N9
Syntax
@WCOLS
Remarks
This system variable is Read-Only.
WEEKDAY
Description
This system variable contains the day of the week.
Type/Size
N1
Syntax
@WEEKDAY
Remarks
• This system variable is Read-Only.
• Valid values range from 0 - 6, where 0 is Sunday.
Type/Size
N9
Syntax
@WROWS
Remarks
This system variable is Read-Only.
WSID
Description
This system variable contains the workstation ID number.
Type/Size
N9
Syntax
@WSID
Remarks
This system variable is Read-Only.
WSNUM
Description
This system variable holds the current workstation object number
Type/Size
N
Syntax
@WSNUM
Remarks
• This system variable is Read-Only.
WSSUBTYPE
Description
This system variable holds the current workstation’s configured sub type.
Syntax
@WSSUBTYPE
Remarks
• This system variable is Read-Only.
WSTYPE
Description
This system variable is the User Workstation type, such as SAR Client of Mobile
MICROS.
Type/Size
N9
Syntax
@WSTYPE
Remarks
• This system variable is Read-Only.
• The workstation types correspond to the type field in the workstation definition
and are as follows:
1 = Mobile MICROS 2 = SAR Client
3 = KWS4
4 = POSAPI
YEAR
Description
This system variable is at least a two-digit number that contains the number of years
since 1900.
Type/Size
N2 or N3. This will be a two-digit number up until the year 2000, when it becomes a
three-digit number.
Syntax
@YEAR
Remarks
This system variable is Read-Only.
Example
The year 1999 would be 99 (1999-1900), the year 2000 would be 100 (2000-
See Also
@DAY and @MONTH system variables
YEARDAY
Description
This system variable contains the number representing the current day of the year.
Type/Size
N3
Syntax
@YEARDAY
Remarks
• This system variable is Read-Only.
• A valid value will be from 0 to 365.
Commands
The Interface Script Language (ISL) provides commands to display information, get
operator entries, display touchscreens, execute keyboard macros, as well as transmit and
receive messages over the interface. This chapter contains a detail description of each ISL
command.
Command Summary
For quick reference, a summary of commands in alphabetical order and in order by
category of function begins on page 8-1.
Format Specifiers
This language element can be part of the syntax of certain commands. Format specifiers
can be used to change the format of both input and output data. Review Using Format
Specifiers to learn the ways in which this language element can be used in command
syntax.
@FILE_BFRSIZE = 4096
Note: The meaning of the data within the braces will be explained later.
Specifier Attributes
The general layout of a format specifier is:
{ [input_specifier] [output_specifer] }
{-=08}
{ - = 0 8 }
• Input and output specifiers can appear within one format specifier. However, not
all of the individual specifiers may have meaning. For example, it is possible to
put input specifiers after a variable that is going to be displayed, but since data is
not being entered into the variable, the input specifiers are meaningless and will
be ignored
Input Specifiers
The input specifiers only have meaning for commands that receive input from the user.
They will be ignored if they appear in commands that only output data (for example, the
Display command).
All input specifiers must be placed before any output specifiers. If they are present, they
must also be placed in the order listed in the following table:
Table 28 Input Specifier Placement Order
Input Specifier
The - specifier is used to hide data being entered by the operator. For example,
authorization codes or passwords should not be echoed to the display as the operator
types them in. The following command prompts the operator for an authorization code,
but echoes it back to the display as it is being typed:
Input auth_code, “Enter authorization code”
It can be rewritten so that no data is echoed:
Input auth_code{-}, “Enter authorization code”
If the - specifier is used in commands that require both operator input and the data to be
displayed, then not only will the data not be echoed, it will also not be displayed in the
window after it is entered. Instead, the field will contain asterisks where data is expected.
M Input Specifier
The M specifier is used when magnetic card data may be entered in lieu of the operator
typing the data in. The M specifier defines whether the data is on a mag card, and which
track and field the data should be read from. For example, it is possible to use the M
specifier to get an authorization code from track 2, field 1, starting offset 3, and copy in 10
characters.
There are two M formats:
• Format 1 Syntax: Mn,*
• Format 2 Syntax: Mn, field, start, count | *
These fields are defined as follows:
Table 29 M Input Specifier Format Fields
Field Description
Mn: The track number (M1 or M2). This can be followed by a star
(*) to specify all fields on the track, or use the remaining fields
in this table to read specific information.
field: The field position within the specified track. This is a
positive integer.
start: The starting offset (character) within the field. For example, if
the last four characters of the “Blaine Richard” string needed
to be removed, start the offset at 11.
Format One
In format 1, the data from the entire track (1 or 2) will be placed into the variable when
the mag card is swiped. The following command allows the user to enter a code or swipe
a magnetic card:
Input auth_code{ M2,* }, “Enter authorization code”
If the mag card is swiped, then all the data from track 2 (M2) will be placed into the
variable auth_code.
Format Two
Format 2 defines exactly where the data in the track occurs. If the authorization code
appears in field 1 of track 2, and furthermore, starts at character 3 in the field and consists
of 10 characters, then the command can be rewritten as:
Input auth_code{ M2,1,3,10 }, “Enter authorization code”
If the operator swipes the card, the appropriate data will be extracted from the field and
placed into auth_code.
Note: A * can be substituted for count, to specify ALL data from the start offset in the
field.
Field # 1 2 3
Data 16/19 Digit 26 Alpha YYMM
Account Number Character
Account Name
Track 2:
Table 31 Track 2 Field Positions of Credit Cards
Field # 1 2
Data 16/19 Digit Account Number YYMM
The following Input command allows the operator to enter the credit card name or swipe
the card and have the name transferred from track 1, field 2.
Input card_name{ M1,2,1,* }, “Enter cardholder name”
The following is an illustration of the standard field position for the MICROS Employee
Card (Note: this card is Track 2 only):
Field # 1
Data 10 Digit Employee Number
The following Input command will get the employee number from the operator or the
mag card and will not echo the data as it is being entered:
Input empl_num{ - M2,1,1,10 }, “Enter employee number”
Output Specifiers
Output specifiers are used after variables and expressions that are being converted to
ASCII. The output specifiers are similar to the C language printf() specifiers. The
following table lists some representative commands for each of these output types:
Table 33 Commands for Output Types
Syntax
The proper syntax for using the output_specifiers is as follows:
[<|=|>|*] [+] [0] [size] [D|X|O|B] [^] ["] [:format_string]
Output specifiers must also be placed in the order listed in the following table:
Table 34 Output Specifier Placement Order
Examples of Specifiers
The following are examples of how Input and Output Specifiers may be used. For
complete examples and explanations of the ISL commands, see ISL Command Reference.
Input Specifier
The following lines would read data from a Credit Card:
displaymsinput 1, 2, cardholder_name{m1, 2, 1, *}, “Enter Guest Name”, \
Output Specifiers
Justification Specifiers
The justification specifiers <, =, and > are only meaningful when the size of the expression
being formatted is greater than the size of the variable itself.
All integers and decimal expressions are right justified, and all string expressions are left
justified, by default. The following section gives examples and shows how these
specifiers can be used to justify data:
Table 35 Examples for Justification Specifiers
Expression Output
125 { 8 } 125
125 { <8 } 125
125 { =8 } 125
* Specifier
The * specifier is used when the expression should be displayed with leading and trailing
spaces removed.
Table 36 Examples for *Specifier
Expression Output
“125” {*} 125
+ Specifier
The + specifier is used to override the default behavior of displaying negative numbers
with the - sign to the right of the number by causing the - to appear on the left.
Table 37 Examples for + Specifier
Expression Output
-891 891-
-891 {+} -891
If the SetSignOnLeft command is executed, then the sign will always appear on the left
side of the number. The + specification in this case will be superfluous.
0 Specifier
The 0 specifier is used to pad the data being displayed with ASCII 0s instead of spaces.
The 0 specifier is only meaningful if the size specifier is also used:
Table 38 Examples for 0 Specifier
Expression Output
199 { 0 } 199
199 { 5 } 199
199 { 05 } 199
199 { <05 } 19900
size Specifier
The size specifier defines the width of the expression being displayed. If no size specifier
is present, then the width of the data formatted will be equal to the number of characters
in the data.
Expression Output
“fred” fred
“fred” { 8 } fred
“fred” { =8 } fred
“fred” { (width*2) } fred
“fred” { width+2 } ERROR: not enclosed in ( )
D, X, O, and B Specifiers
The radix specifiers (D, X, O, and B) determine the numeric base of the integer expression
being displayed. They have no meaning for decimal and string data. The default is base
10 (D).
Table 40 Examples for D, X, O, and B Specifiers
Expression Output
100 100
100 {H} 64
100 {B} 1100100
100 {08B} 01100100
:format_string Specifier
The format_string is the data that follows the colon : specifier. The format_string consists of
ASCII characters and the # character. Format_strings are used when the data displayed
should be interspersed with spaces and/or other characters to fit conventional display
methods. For example, a 10-digit phone number should be displayed as:
(nnn)nnn-nnnn
When the SIM encounters a format_string, all # characters will be replaced with data from
the preceding expression. All other characters will be output as-is. Characters are
replaced starting from the right side of the format string.
Expression Output
phone_num 4432858000
phone_num {:###-###-####} 443-285-8000
phone_num {:(###) ###-####} (443) 285-8000
room_num 17031
room_num {:##-###} 17-031
room_num {:Floor ## room ###} Floor 17 room 031
It may be necessary sometimes to display the # character and not have it replaced with a
character from the output expression. In this case, precede the # character with a single
quote.
Table 42 Example 2 for :format_string Specifier
Expression Output
phone_num {:Phone ‘# ###-###-####} Phone # 443-285-8000
It is possible to include format specifiers after each expression being formatted in one
command. For example:
TXMSG room_number { 04 }, guest_name { <24 }, @cknum
Command Summary
For quick reference, this section contains an alphabetical listing and brief description of
all ISL commands.
Note: ISL commands are listed by category in Appendix C
REMEMBER, the commands that require either the StartPrint command or Window
command in order to operate correctly are listed in the table below with the following
designation:
• (P) for StartPrint
or
• (W) for Window
Command Description
Beep Sound the beeper.
Break Break out of the current ‘For’ loop.
Call Call a subroutine procedure.
ClearArray Clear an array.
ClearChkInfo Clears check information detail lines in
buffer.
ClearIslTs Clear any previously defined touchscreen
keys.
ClearKybdMacro Clear macro key definitions.
ClearRearArea Clears the contents of the customer display.
ContinueOnCancel Continue processing script even if the
[Cancel] or [Clear] key is pressed after an
Input command has been issued.
Display Display text or a field at a defined place
(W) within a window.
DisplayInput Display an input field within a window.
(W)
DisplayInverse Display input field in inverse video.
DisplayIslTs Display an ISL-defined touchscreen.
DisplayMSInput (W) Display an input field within a
window and allow magnetic card
swipe to satisfy field entry.
DisplayRearArea Display up to 20 characters on the
POS workstation customer display.
DLLCall Calls a function contained in the
DLL. Refer to page 3.
DLLCall_cdecl Calls a function contained in the
DLL using the cdecl convention.
DLLCall_STDCall Calls a function contained in the
DLL using the STDCall convention.
Refer to page 3_bookmark147.
DLLCallW Calls a function contained in the
DLL with Unicode. Refer to page 3.
Beep
Description
This command can be used to sound the beeper at a workstation. It should be used for
operator confirmation or notification. Note that a separate ErrorBeep command is
provided to notify the operator of errors.
Note: The Beep command currently does not cause the workstation to beep in
Simphony as the “Enable Error Beeper” option is not available in the Enterprise
Management Console (EMC).
The command remains so that scripts written for legacy MICROS products using the
Beep command will still function in Simphony.
See Also
ErrorBeep command
Break
Description
This is used to break out from a For or Forever loop. This is especially useful when a
ForEver loop is executed.
Syntax
Break
Remarks
• The Break command will only break out of the For or Forever loop it is currently
in. If the loops are nested, then multiple breaks are required:
forever
forever
break //break out of inner loop
endfor
break //break out of outer loop
endfor
• If the ability to break out of a nested For is required, then use a subroutine and
Return out of the loop instead:
sub break_out
forever
for i = 1 to 10
for num = i to count
if...
return
endif
endfor
endfor
endfor
endsub
Example
The following script provides an example of how to break out of a Forever loop:
event inq : 1
var user_input : N6
forever
input user_input, “Enter a number and press [ENTER]”
if user_input > 0 AND user_input <99999
break
else
errormessage “Value outside valid range”
endif
endfor
errormessage “Well done”
endevent
Call
Description
This command is used to call a subroutine defined by the Sub command.
Syntax
Call name
Table 44 Call Command Arguments
Argument Description
name The name of the subroutine defined by the
Sub
d
Remarks
• The subroutine has access to all the local variables within the Event that called
the subroutine, and all global variables in the script file, so these variables may
be used to pass parameters. In addition, local variables may be declared in the
subroutine.
• When a Call is made, ISL will start searching for the subroutine from the top of
the program. Therefore, if there are two subroutines with the same name, only
the first one will ever get called:
event inq:1
call mysub
endevent
sub mysub
//this one will not
// because it is
// preceded by a
// subroutine of
// the same name
.
.
.
endsub
• Up to 32 calls can be nested within a subroutine. If there are anymore, an error
will occur.
sub mysub
call mysub //this will occur 32 times
endsub
Example
The following script will call a subroutine to build a window:
call msg_window
waitforclear
endevent
sub msg_window
window 1, len(win_string) + 2
display 1, 2, win_string
endsub
See Also
Sub command
ClearArray
Description
This command sets all elements of the specified array equal to zero if the array is
numeric, or null if alphanumeric. By default, arrays are initialized in this way when
declared.
Syntax
ClearArray array_variable
Table 45 ClearArray Command Arguments
Argument Description
array_variable The name of the array to clear, based on
the name of a user_variable
Example
The following script allows the user to send up to a 13 line message to the kitchen
printer. Before actually sending to the printer, it allows the user the opportunity to edit
their work. If the user presses clear when prompted, the array_variable is cleared and the
user can retype a message.
event inq : 1
var kitchen_msg[13]: a20
var sender_name: a20
var rowcnt : n3
var term_key : key
var data_entered: a20
forever
call get_message
window 1, 66
display 1, 2, “PAGE UP=edit, CLEAR=retype, ENTER=send, CANCEL=“quit”
inputkey term_key, data_entered, ““
if term_key = @KEY_ENTER
break
elseif term_key = @KEY_CLEAR
cleararray kitchen_msg
elseif term_key = @KEY_CANCEL
exitcontinue
endif
endfor
ClearChkInfo
Description
This command clears any check information detail lines that have not been written to the
Guest Check files and are stored in the guest check information buffer.
Normally, this command is used if the script added information to the buffer but, at a
later time, decides that the information should not be saved in the Guest Check Files.
Syntax
ClearChkInfo
Remarks
• Check information detail is a type of check detail that can be stored in the Guest
Check files via the SaveChkInfo command. Typically check information detail
lines are used to store customer information, such as name and address, so that it
can print on a guest check or a remote order device.
• This command is executed upon exiting the script.
• Keep in mind that, like other types of guest check detail, such as totals and
definitions, guest check information detail lines are only stored in the Guest
Check files temporarily and cleared upon closing a guest check.
POS Setup
Refer to the detail description of SaveChkInfo for a brief discussion of the usage of check
information detail.
Example
The subroutine below requires that the operator input a string five times, then prompts
the operator to confirm saving the information. If the operator responds by pressing the
See Also
SaveChkInfo command
ClearIslTs
Description
This command clears any touchscreen keys that have been defined using the
SetIslTsKey command.
Syntax
ClearIslTs
Remarks
All previously defined keys are cleared each time a script executes.
After a touchscreen has been displayed, its keys remain defined, thus, MICROS Systems,
Inc. recommends using the ClearIslTs command to clear previously defined touchscreen
keys when building two or more touchscreens in the same event.
Example
The following example is a subroutine (create_ts) that clears previously defined
touchscreen keys before calling another subroutine (set_keys), one that will build a new
touchscreen.
sub create_ts
clearislts //Clear out any previously
// defined touchscreen keys
call set_keys //Build the keys needed
.
.
.
endsub
See Also
DisplayIslTs, PopUpIslTs, and SetIslTsKey commands
Syntax
ClearKybdMacro
Remarks
All macro keys are cleared out when the script is started.
Example
For example, this command may be used if the LoadKybdMacro command were issued,
but the response from the PMS system was incorrect; the ClearKybdMacro would be
used to clear the macro in preparation for a rebroadcast or transaction cancel.
event inq:1
loadkybdmacro 11:841 //Load PMS 1 Inquiry Key
txmsg "inq_1_request"
waitforrxmsg
endevent
See Also
LoadKybdMacro and LoadDbKybdMacro command
ClearRearArea
Description
This command will clear the contents of the customer display.
Syntax
ClearRearArea
Example
event inq:1
DisplayRearArea “Hello”
WaitForClear “Press clear to clear display”
clearreararea
end event
See Also
DisplayRearArea command
Syntax
ContinueOnCancel
Remarks
• In normal operations, when ISL is waiting for user data after an Input command
is issued (for example, Input, WindowInput, WindowEdit,...) and the user
presses the [Cancel] key or the [Clear] key at the input prompt, the script will
terminate. It may be necessary for the script to continue even if the user has
cancelled the entry. If the ContinueOnCancel command is executed, then the
Input commands will not terminate the script if the [Cancel] key or the [Clear]
key is pressed. Instead, they will return to the line after the Input command. The
@INPUTSTATUS system variable will be set to 0 if the user cancelled the input,
or 1 if valid data was entered.
• If the ContinueOnCancel is used, the script should check all Input commands to
determine if the user cancelled the input or not.
See Also
ExitCancel, ExitOnCancel, Input, WindowEdit, and WindowInput commands
Display
Description
This command can be used to display a message in a window.
Syntax
Display row, column, expression[{output_specifier}] \ [, expression[{output_specifier}]...]
Table 46 Display Command Arguments
Argument Description
row The integer expression specifying the
screen row within the defined window
where the message will be displayed
column The integer expression specifying the screen
column within the defined window where
the message will be displayed
Remarks
• Since this command provides information about where to locate the text or fields
within the window, a Window command must have been executed prior to this
command
• The Display row and column must fall within the boundaries of the defined
window.
• An error will occur if the data to be displayed extends past the end of the
window:
window 10, 10, “10 columns”
//ERROR!
display 1, 1, “this line is greater than 10 columns”
Example
The following script will display a guest room number and name in a window:
See Also
Window command; Chr function
DisplayInput
Description
This command defines an input field within a window. Thus, a Window command must
have been executed prior to this command. In addition, a WindowEdit or WindowInput
must follow it, or the grouping of DisplayInput commands to which it belongs.
Argument Description
row The integer expression specifying the
screen row within the defined window
where the input_variable will be
displayed.
column The integer expression specifying the screen
column within the defined window where
the input_variable will be displayed.
input_variable An array_variable or user_variable that allows
user input.
{input/output_specifier} One or more of the input and output_specifiers
that determine the format of all input and
output fields; see full definition on pages 8-3
through 8-6.
prompt_expression An expression displayed on the prompt line,
usually to instruct the user what to enter; it
may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
• The DisplayInput row and column must fall within the boundaries of the defined
window.
• The prompt_expression is required.
• DisplayInput can be used with the WindowEdit\Input commands to build a
screen of input fields in order to accept input from the user. Navigating among
the input fields is achieved with the movement keys: up arrow, down arrow,
home, and end. [Enter] can also be used to navigate, which moves the focus to
the next field, and [Clear], which moves the focus to the previous field.
• When a WindowEdit or WindowInput command is executed, each field
displayed using the DisplayInput command will be edited in turn.
• The DisplayInput, DisplayMSInput, Input, and InputKey commands are the
only commands that act on both the Input and Output Specifiers.
• The maximum number of window input entries allowed is 64.
Example
The following script will allow input of customer information in a window:
event inq : 1
var rowcnt: n3
var field_name[5] : a15
var customer_info[5]: a20
field_name[1] = “Customer name:”
field_name[2] = “Company:”
field_name[3] = “Address:”
field_name[4] = “City:”
field_name[5] = “Phone:”
window 5, 36
for rowcnt = 1 to 5
display rowcnt, 2,
field_name[rowcnt]
displayinput rowcnt, 16, customer_info[rowcnt],\
“Enter ”, field_name[rowcnt]
endfor
windowedit
endevent
See Also
Window, WindowEdit, and WindowInput commands
DisplayInverse
Description
This command can be used to display a message in a window in inverse video. Since this
command provides information about where to locate the text or fields within the
window, a Window command must have been executed prior to this command.
Syntax
DisplayInverse row, column, expression[{output_specifier}] \ [,
expression[{output_specifier}]...]
Argument Description
row The integer expression specifying the
screen row within the defined window
where the message will be displayed
column The integer expression specifying the screen
column within the defined window where
the message will be displayed
expression An expression to be displayed; it may be one
of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
{output_specifier} One or more of the output_specifiers that
determine the format of the output fields;
see full definition on pages 8-3 through 8-6.
Remarks
• The DisplayInverse row and column must fall within the boundaries of the
defined window.
• An error will occur if the data to be displayed extends past the end of the
window:
window 10, 10, “10 columns”
//ERROR!
displayinverse 1, 1, “this line is greater than 10 columns”
Example
The following script will display a guest room number and name in a window:
event rxmsg : room_info var room_num : a5
var guest_name : a20
rxmsg room_num, guest_name
window 1, 40
displayinverse 1, 2, “The guest in room ”, room_num, “ is ”, guest_name
waitforclear
endevent
See Also
Display and Window commands
Syntax
DisplayIslTs
Remarks
• After a touchscreen has been displayed, its keys remain defined until cleared by
the ClearIslTs command or until the script terminates
• Sixty temporary touchscreen keys are available.
Example
The subroutine below first clears any previously defined touchscreen keys and displays
two touchscreen keys, [YES] and [NO], using the DisplayIslTs command. This
subroutine displays these keys as the operator is issued a prompt by the system and
captures the operator’s input.
sub get_yes_or_no( ref answer, var prompt_s:A38 )
var keypress : key
var data : A20
clearislts
setisltskey 2, 2, 4, 4, 3, @KEY_ENTER, "YES"
setisltskey 2, 6, 4, 4, 3, @KEY_CLEAR, "NO"
displayislts
See Also
ClearIslTs, PopUpIslTs, and SetIslTsKey commands
DisplayMSInput
Description
This command defines an input field within a window; therefore, a Window command
must have been executed prior to this command, and a WindowEdit or WindowInput
must follow it. This command defines an input field within a window that may be
entered through the keyboard or touchscreen, or by swiping a magnetic card through the
magnetic card reader on the workstation.
Syntax
DisplayMSInput row, column, input_variable\ [{input/output_specifier}], prompt_expression[,
row, column,\ input_variable{input/output_specifier}, prompt_expression,...]
Table 49 DisplayMSInout Command Arguments
Remarks
• This command allows the designer to specify the fields that the operator can
enter manually, fields that may be entered from a magnetic card swipe, or fields
that may be entered in both fashions. In addition, the location and length of the
data to be used on the magnetic card stripe may also be defined.
• After the WindowInput command is executed, the system variable
@MAGSTATUS will be set to Y if the magnetic card was swiped during the
WindowInput. It will be set to N if a magnetic card was not swiped. To use
@MAGSTATUS in this way, use only one DisplayMSInput command with each
WindowInput entry (otherwise, @MAGSTATUS will be undefined). If more than
one DisplayMSInput command is needed, use the Len function to check if the
input string is set to zero (see “ISL Functions” for an explanation of the Len
function).
• The prompt_expression is required.
• DisplayMSInput can be used with the WindowEdit\Input commands to build a
screen of input fields in order to accept input from the user. Navigating among
the input fields is achieved with the movement keys: up arrow, down arrow,
home, and end. [Enter] can also be used to navigate, which moves the focus to
the next field, and [Clear], which moves the focus to the previous field.
Example
The following script will read the information from Track 1 of a credit card:
event inq : 1
var cardholder_name: a26
var account_num: n19
var expiration_date: n4
var track1_data: a79
window 3, 78
displaymsinput 1, 2, cardholder_name{m1, 2, 1, *}, “Enter Guest Name”, \
2, 2, account_num{m1, 1, 1, *}, “Enter Account Number”, \
3, 2, expiration_date{m1, 3, 1, 4}, “Enter Expiration”
windowinput
waitforclear
endevent
See Also
Window, WindowEdit, and WindowInput commands; Len function
DisplayRearArea
Description
This command will display up to 20 characters on the POS workstation customer display
(rear display).
This command works on 20-character displays only—8-character displays are ignored.
Syntax
DisplayRearArea expression[{output_specifier}] [, expression[{output_specifier}]...]
Example
event inq:1
See Also
ClearRearArea command
DLLCall
Description
This command will call a function contained in the DLL.
Syntax
DLLCall handle, dll_name( [parm1 [parm2 [parm3...]]] )
See Also
• DLLCallW, DLLFree, and DLLLoad commands
• Appendix D—Microsoft Windows DLL Access
DLLCall_cdecl
Description
This command will call a function contained in the DLL using the cdecl convention.
Syntax
DLLCall_cdecl handle, dll_name( [parm1 [parm2 [parm3...]]] )
See Also
• DLLCallW, DLLFree, and DLLLoad commands
• Appendix D—Microsoft Windows DLL Access
DLLCall_STDCall
Description
This command will call a function contained in the DLL using the STDCall convention.
Syntax
DLLCall_STDCall handle, dll_name( [parm1 [parm2 [parm3...]]] )
See Also
• DLLCallW, DLLFree, and DLLLoad commands
• Appendix D—Microsoft Windows DLL Access
DLLCallW
Description
This command will call a function contained in the DLL with Unicode.
See Also
• DLLCall, DLLFree, and DLLLoad commands
• Appendix D—Mirosoft Windows DLL Access
DLLFree
Description
This command will free a loaded DLL.
Syntax
DLLFree handle
See Also
• DLLCall, DLLCallW, and DLLLoad commands
• Appendix D—Microsoft Windows DLL Access
DLLLoad
Description
This command will load the external DLL. The dllload command needs to be called only
once during the lifetime of the SIM script.
Syntax
DLLLoad handle, name
Example
event inq:1
var dll_handle:N9
dllload dll_handle, “myops.dll”
end event
See Also
• DLLCall, DLLCallW, and DLLFree commands
• Appendix D—Microsoft Windows DLL Access
ErrorBeep
Description
This command can be used to sound the error beeper at the workstation.
Note: The ErrorBeep command currently does not cause the workstation to beep in
Simphony as the “Enable Error Beeper” option is not available in the Enterprise
Management Console (EMC).
The command remains so that scripts written for legacy MICROS products using the
ErrorBeep command will still function in Simphony.
See Also
Beep command
ErrorMessage
Description
This command can be used to display an error message at the workstation when an
incorrect entry is made by the operator.
Syntax
ErrorMessage expression[{output_specifier}][, expression\[{output_specifier}]...]
Table 50 Error Message Command Arguments
Argument Description
expression An expression to be displayed; it may be one of
the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
The ErrorMessage command expects one error line to be displayed. However, the UWS
displays two lines. The error line to be displayed is broken up between the two logical
lines. If the line is too long to be displayed, it will be truncated.
See Also
InfoMessage
Example
The following script will display a message indicating that an entry is invalid:
event inq : 1
var menu_choice: n3
window 3, 23
display 1, 2, “[1] Edit member info”
display 2, 2, “[2] Add new member”
display 3, 2, “[3] Exit”
forever
Event...EndEvent
Description
The Event command indicates the start of a procedure associated with an operator
inquiry, payment, an interface response message or printing addition information on the
check header or trailer lines. The EndEvent indicates the end of the event procedure.
• If the * specifier is present in an Event line, in the Event ID field, then the Event
will be executed if the Event types match, regardless of the Event ID. The *
specifier affects the following events: Inq, Tmed, RxMsg, and Final_Tender. For
example, the following Event will catch all Inquire Events:
event inq : *
endevent
• It is possible to write an Event Inq or Event Tmed as an expression. Example:
event inq : 5
Can be defined as:
event inq : ( 2 + 3 )
In addition, variables may also be used, but must be defined as global variables. For
example:
var guest_inq_number : N5 = 5
Syntax 1
Event Inq : number
Table 51 Event Inq Command Arguments
Argument Description
number Corresponds to a pre-defined SIM Inquiry
key programmed in the Simphony database,
or * to execute the Event whenever it is
encountered
Remarks 1
• The Event Inq command is executed when a SIM Inquiry key is used at a
workstation.
• The valid entry for number is 1 through 20.
Syntax 2
Event Tmed : number
Table 52 Event Tmed Command Arguments
Argument Description
number Corresponds to a pre-defined SIM Inquiry
key programmed in the Simphony database,
or * to execute the Event whenever it is
encountered
Remarks 2
• The Event Tmed command is executed when an ISL Tender key is used at the
workstation.
• The Tender number must be an object number in the Tender Media module. It is
required that the Tender Media PMS Option, Use ISL TMED Procedure Instead
of PMS Interface is enabled, and the workstation must be within a transaction
for this Event to work. For a complete explanation, see Step 5: Create a SIM
Tender Key.
Example 2
This is an example of a standard Tender/Media event:
event tmed : 10 var rowcnt : n3
var deliv_desc[6] : a15
deliv_desc[1] = “Name:”
window 6, 43
.
.
.
endevent
Syntax 3
Event RxMsg : event_ID
Table 53 Event RxMsg Command Arguments
Argument Description
event_ID The first field in the response message
that identifies the event that is expecting
that response
Example 3a
This is an example of a standard response message event:
event inq : 1
var room_num : a4
input room_num, “Enter Room Number”
txmsg “charge_inq”,@CKEMP,@CKNUM,@TNDTTL,room_num
response // possibilities
var room_num : a4
rxmsg room_num
exitwitherror “Charge for room “, room_num,” declined”
endevent
Example 3b
This is an example of an event that is run when the response message is not received
within the ISL timeout period:
useisltimeouts
event tmed : 10
var room : N5
Syntax 4
Event Final_Tender
Remarks 4
• This event is called after the last tender has occurred, but just before the check is
closed. This event is a separate event from the Event Tmed event. An Event
Tmed event is used to post the tender, while the Event Final_Tender is used
when the check has been completely tendered.
For example, one could use the Event Final_Tender to implement the following
features with the ISL:
Creating a specialized printout of a guest check for which neither the Event Inq
nor Tmed can be called when all the check detail is in the check.
Sending log information to a PMS containing all of the check information.
• If the Event Final_Tender is not present in the script, no error will occur.
• Unlike the Event Tmed, when using the Event Final_Tender command, a tender
does not need to be linked to a PMS by Tender Media PMS Option, Use ISL
TMED Procedure Instead of PMS Interface.
• When the Event Final_Tender is executed, the ISL will execute the event for each
script linked to a PMS Computer. For example, if pms1.isl and pms2.isl both
include an Event Final_Tender, the ISL will process both scripts.
• There is no event_ID field for the Event Final_Tender.
The Print_Header and Print_Trailer events, along with the some new SIM system
variables (see 6-110 and 6-205) and a specific set of control characters are used to print
information on checks and receipts. This information can be printed in the header and/or
trailer of Customer Receipts, Guest Checks, and Credit Card Vouchers. This information
can include text, bar codes, estimated tip amounts, or any function a SIM script is capable
of performing.
Syntax 5
Event Print_Header : <alpha/numeric >
Event Print_Trailer : <alpha/numeric >
Argument Description
alphanumeric Corresponds to an entry in the RVC Descriptors
module in the Enterprise Management
Console (EMC)
Remarks
Control Characters:
@@<event ID argument>
Control characters and SIM event(s) are programmed in the RVC Descriptors module. The
combination of the control characters and the SIM event will call a SIM script, and the
additional text or bar code is printed on either the header or trailer.
Example 1
For example, using the event called “est_tip_amt” the Credit Card Voucher Header lines
in the RVC Descriptors module will be programmed something like this:
1 Tip Amount ______________
2 Estimated Tip Amount:
3 @@est_tip_amt
4
5 Total ______________
6
7
8 -----------------------------------------------
9 Signature
When POS Operations starts printing the credit card voucher trailer, it will print line 1
and 2 as the part of the header, when the event argument (@@est_tip_amt) at line 3 is
recognized, POS Operations will call the SIM script.
Example 2
For example, the following portion of a SIM script will be called by the credit card
voucher trailer, and will printout the estimated tip amount on the credit card voucher:
event print_trailer : est_tip_amt
endevent
After the SIM script is finished, POS Operations will continue printing the remaining
lines on the credit card voucher.
Once the SIM script is called, the script will instruct POS Operation what to print and
how to format it. The system variables, @HEADER (see page 7-60) and
@TRAILER (see page 7-99), support this function.
See Also
Format, RxMsg, TxMsg, UseBackupTender, UseISLTimeOuts, UseSTDTimeOuts, Var,
and WaitForRxMsg commands
ExitCancel
Description
This command should be used to exit the current script and cancel the current POS
tendering operation.
Syntax
ExitCancel
Remarks
This command might be useful if charge posting was denied.
Example
The following example will either allow a check to be tendered to a room charge or
prevent the room charge from being posted:
ExitContinue
Description
This command should be used to end the current script and continue processing the POS
tendering operation.
Syntax
ExitContinue
Remarks
• This might be useful if tendering should continue after a guest charge is
approved.
• Do not confuse the ExitContinue command with the EndEvent command.
EndEvent acts as both an Event procedure delimiter and an implicit
ExitContinue.
• Do not use the EndEvent command instead of the ExitContinue command.
Example
The following example will either allow a check to be tendered to a room charge or
prevent the room charge from being posted:
event tmed : 9
var room : a6
var guest_name : a20
ExitOnCancel
Description
This command will exit the script when the [Cancel] key or the [Clear] key is pressed
after an Input command has been issued.
Syntax
ExitOnCancel
See Also
ContinueOnCancel, ExitCancel, and ExitContinue commands
ExitWithError
Description
This command is used to display an error message and cancel the current POS tendering
operation.
Syntax
ExitWithError error_message[{output_specifier}] [, error_message\ [{output_specifier}]...]
Argument Description
error_message An expression displayed in the error banner,
usually to instruct the user of a problem; it may
be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
{output_specifier} One or more of the output_specifiers that
determine the format of the output fields; see
the full definition on pages 8-3 through 8-6.
Remarks
The error_message is required.
Example
The following script illustrates how this command will display an error if a charge is
denied:
event rxmsg : charge_declined
var room_num : a4
rxmsg room_num
FClose
Description
This command closes a file that was previously opened by the FOpen command.
Syntax
FClose file_number
Table 56 FClose Command Arguments
Argument Description
file_number An integer variable which was assigned in the
FOpen statement when the file was opened
Remarks
• The file_number specified must be a valid file number. That is, it must correspond
to a file already opened. Otherwise, an error message will be generated.
Example
The following example would open a file, read from it, and then close it:
event inq: 1
var fn : n5
fopen fn, "/micros/simphony/data/emplist.dat", read
.
.
.
fclose fn
endevent
See Also
FOpen command
FGetFile
Description
This command gets a file from the SIM file service.
Syntax
FGetFile RemoteFileName, LocalFileName, Status
Table 57 FGetFile Command Arguments
Argument Description
RemoteFileName Relative to “SimDataFiles” directory in
\MICROS\Simphony\EGatewayService
LocalFileName Relative to the location of SarOps.exe
(...\PosClient\bin) directory on the
Status Will contain result of operation after
completion.
A status of “0” (zero) indicates the file retrieval
was successful.
A status of any non-zero value indicates the file
Remarks
All files are automatically closed at the end of a script.
See Also
FPutFile command
FLock
Description
This command locks a file to prevent other processes from writing to the file, usually
while it is open.
Argument Description
file_number Identifies the file to be locked; an integer
variable which was assigned in the
FOpen statement when the file was
opened.
Preventwrite A mode separator that prevents others from
writing to the specified file, while the lock is
in place.
And Required by syntax if more than one
mode separator is issued.
Preventread Required by syntax if more than one
mode separator is issued.
Nonblock tTe FLock command will return
immediately, whether the lock was
successful or not.
Remarks
• The purpose of this command is to implement cooperative file locking among
processes. Since ISL scripts execute in a multiprocessing environment, it may be
necessary for one script to write to a file at the same time another needs to read
from it. Without any type of synchronization, corrupted data may be read from
or written to the file. (Within this explanation, the terms script and process both
refer to the POS Operation process which executes the script.)
• The ISL file locking model is based on the file locking model of the underlying
Microsoft Windows operating system. Files can be locked so that other processes
cannot read or write that file until a previous lock has been removed.
• As with Microsoft Windows, file locking can only be used if all processes
accessing the file implement file locking. If one script locks a file, but another
chooses to ignore this lock, then the benefits of the lock are lost.
• If the Preventread mode is specified with the FLock command, all processes
which try to lock the file for reading must also wait until the lock is released.
• If the Preventwrite mode is specified with the FLock command, all other
processes which try to lock the file for writing must wait until the current process
has released the lock. However, other processes can read the file.
• If the Nonblock mode is specified, the script must check system variable
• @FILE_ERRNO to determine if the lock was successful or unsuccessful. See
FILE_ERRNO for the File Access Error Codes.
• It is not possible to lock portions of a file. The entire file must be locked.
• All locks on files are released automatically when the file is closed.
Example 1
The following script shows how to lock a file for reading only:
event inq : 1
var fn : N5
fopen fn, "/micros/simphony/etc/custlist.dat", read
flock fn, preventwrite
call read_from_file( fn )
funlock fn
fclose fn
endevent
Example 2
The following script shows how to lock a file for reading and writing:
event inq : 2
var fn : N5
fopen fn, "/micros/simphony/etc/custlist.dat", append
flock fn, preventwrite and preventread
call write_to_file( fn )
funlock fn
fclose fn
endevent
The call to FLock will wait until all files are done reading.
Example 3
The following script gives an example of the incorrect way of using the Flock command;
the file is locked while the script waits for input from the user:
event inq : 3
Example 4
The proper way to implement the script in example 3 would be:
event inq : 1
See Also
FClose, FOpen, and FUnLock commands
FOpen
Description
This command opens a file for reading or writing.
Syntax
FOpen file_number, file_name, [Append] [And] [Read] [And] [Write], [Local], [Unicode]
Table 59 FOpen Command Arguments
Argument Description
file_number An integer variable which will be assigned a
file number to identify the file.
file_name A string which identifies the file to be opened.
Append A mode separator that appends to an open file.
And Required by syntax if more than one
mode separator is issued.
Read A mode separator that reads from an open file.
Write A mode separator that writes to an open file.
Local A mode separator that indicates the file
is located on the local client
workstation (available in SAR only).
Unicode A mode separator that identifies the file
as Unicode (available in SAR only).
Remarks
• The variable file_number will be assigned a value of 0 if the operation was
unsuccessful. This could occur if the file was opened for reading and did not
exist, or the permissions of the file were not set correctly.
• The variable file_name must use Microsoft Windows naming conventions and
pathnames. If a file is written to, and does not exist, the file will be created.
• The system variable @FILE_ERRNUM will contain the operating system error
code corresponding to the error which occurred when FOpen was executed.
• The Unicode keyword can be used with, without, before, or after the Local
keyword. If used without, do not include an extra comma separator where the
Local keyword would have been.
Example 2
The following statement would open a file and append to it:
Example 3
The following statement would open a file and write to it:
Example 4
The following statement would open a file then read and write to it:
var fn : N5 //open a file for reading and writing
fopen fn, "/micros/simphony/data/emplist.dat", read and write
endevent
Example 5
The following script will open a file. If the open was unsuccessful, an error message will
display the cause of the error.
event inq : 1
var fn : N5
fopen fn, "myfile.dat", read
if fn = 0
errormessage @FILE_ERRSTR
exitcontinue
endif
endevent
See Also
FClose command
For...EndFor
Description
These commands are used to implement an iterative loop. The EndFor command should
always be used to terminate the loop.
Syntax
For counter = start_expression To end_expression [Step increment]
.
.
.
EndFor
Argument Description
counter A variable that is incremented by the For
command.
start_expression The first variable in the counter; separated
from counter by = sign; it can be one of the
following:
• user_variable
• system_variable (N or $ format)
• constant
• function
...=...To ...[Step...] Required by syntax.
end_expression The last variable in the counter; separated
from the start expression by the reserved
word To; it can be one of the following:
• user_variable
• system_variable (N or $ format)
• constant
• function
increment Used with the reserved word Step to increase
or decrease the value of the counter; use a
negative value to decrease the counter.
Remarks
• Normally, the variable in the For loop will be incremented by one. If required,
the Step feature may be used to override this so that the variable may be
incremented or decremented by any integer value.
• For loops work similar to C and Basic; the For loop counter will always
increment to the end_expression + 1. A For loop will execute when the following
conditions are met:
If Step > 0 and counter <= end_expression
If Step < 0 and counter >= end_expression
Sample For commands:
for i = 1 to 10 // execute 10 times
for i = 1 to 10 step 5 // execute 2 times (i=1,6)
for i = 1 to 10 step -5 // will not execute for i = 10 to 1// will not execute
for i = 10 to 1 step -1 // execute 10 times
for i = 10 to 1 step -5 // execute 2 times (i=10,5)
Example
The following script will display the current occupant(s) of a room:
event rxmsg : display_occupants
var row_cnt : n3, room_num : a4, number_occupants : n3, occupant_list[8] : a30
rxmsg room_num, number_occupants, occupant_list
See Also
Break and Forever commands
ForEver...EndFor
Description
The ForEver command provides continuous looping capabilities in a script. The ForEver
command is generally used when the conditions for terminating the loop are too complex
for a For command, or may not be known ahead of time. This loop may be broken by
executing a Break command or by exiting the script (for exmple., ExitCancel or
ExitContinue).
Syntax
ForEver
.
.
.
EndFor
Example
The following script will wait for a magnetic card swipe:
event inq : 1
var mag_card_track2_data : a79
See Also
Break, ExitCancel, ExitContinue, and Return commands
Format
Description
This command is used to concatenate expressions into a string variable.
Syntax
Format string_variable [, field_sep_char] As expression[{output_specifier}],
expression[{output_specifier}] [, expression[{output_specifier}],…]
Table 61 Format Command Arguments
Argument Description
string_variable A place holder for text characters such as a
user_variable (string).
field_sep_char The character used to separate fields; use the
Chr function to define the character required
As Required by syntax.
expression An expression to be concatenated; it may be one
of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
{output_specifier} One or more of the output_specifiers that
determine the format of the output fields;
see full definition on pages 8-3 through 8-6.
Remarks
• If the field separator character is specified, then the first character in the string is
used to separate variables within the string.
format string as 1, 2, 3 // will create '123'
format string, "," as 1, 2, 3 // will create '1,2,3'
• The Format command is also used to print information to guest checks, receipts,
and credit card vouchers. Two events: Print_Header and Print_Trailer (see page
8-37) are used to support this function.
call get_date_string
endevent
sub get_date_string
var month_arr[12] : a3
//Listing of all the months
month_arr[1] = “JAN”
month_arr[2] = “FEB”
month_arr[3] = “MAR”
month_arr[4] = “APR”
month_arr[5] = “MAY”
month_arr[6] = “JUN”
month_arr[7] = “JUL”
month_arr[8] = “AUG”
month_arr[9] = “SEP”
month_arr[10] = “OCT”
month_arr[11] = “NOV”
month_arr[12] = “DEC”
format date as @DAY, “-”, month_arr[@MONTH], “-”, @YEAR
// i.e., 10-NOV-93
endsub
See Also
FormatQ and Split commands
FormatBuffer
Description
This command will format a string containing non-printable characters into a string that
is printable.
Syntax
FormatBuffer source_string, destination_string
Table 62 FormatBuffer Command Arguments
Argument Description
source_string A string_variable containing non-printable
characters.
destination_string A place holder for the string_variable
containing the printable characters.
Remarks
• All printable characters will display as-is. All non-printable characters will be
formatted as a two-digit hexadecimal number surrounded by angle brackets.
• This function is generally used to look at data from the PMS.
See Also
Format and FormatQ commands
FormatQ
Descripion
This command is used to concatenate variables into a string. String variables are
automatically surrounded by quotes. This feature can be used to create comma-
separated lines in ASCII files.
Syntax
FormatQ string_variable [, field_sep_char] As expression[{output_specifier}],
expression[{output_specifier}]...] [, expression[{output_specifier}],…]
Table 63 FormatQ Command Arguments
Argument Description
string_variable A place holder for text characters such as a
User_variable (string).
field_sep_char The character used to separate fields; use the
Chr function to define the character required.
As Required by syntax.
expression An expression to be concatenated; it may be
one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
See Also
Format and Split commands
FPutFile
Description
This command puts a file from the SIM file service:
Syntax
FPutFile RemoteFileName, LocalFileName, Status
Table 64 FPutFile Command Arguments
Argument Description
RemoteFileName Relative to “simdatafiles” directory in
\micros\simphony\egatewayservice
LocalFileName Relative to the location of sarops.exe
(...\posclient\bin) directory on the
workstation.
Status Will contain the result of the operation after
completion.
A status of “0” (zero) indicates the file retrieval
was successful.
A status of any non-zero value indicates the
file retrieval failed.
Remarks
All files are automatically closed at the end of a script.
See Also
FGetFile command
FRead
Description
This command reads formatted data from a file.
Syntax
FRead file_number, user_variable or list_spec[, user_variable \ or list_spec...]
Argument Description
file_number Identifies the file to be read; an integer
variable which was assigned in the fopen
statement when the file was opened
user_variable
A user_variable which will be assigned the
list_spec is defined as: data from the file
Remarks
• The file must have been opened in Read mode in order to execute this command.
• If the System Variable @STRICTARGS is set to 1, then ISL will ensure that the
variable count in the FRead command line matches the number of fields in the
file record. If an incorrect number of fields is specified in the statement or the file
is corrupted, then an error message will be generated.
• It is possible to skip over fields in a line by not specifying the variables. For
example the third field in the line below would be ignored:
This command will assign data to the variables a line at a time. If the line in the file
has 10 variables and only 7 variables are specified, then the last 3 are thrown away.
They are not read on the next FRead.
Example
If a file contains this line:
145,"Tooher","Dan"
See Also
FClose, FOpen, FReadBfr, and FReadLn commands
FReadBfr
Description
This command reads a block of data from a file.
Syntax
FReadBfr file_number, data, count_to_read, count_read
Table 66 FReadBr Command Arguments
Argument Description
file_number Identifies the file to be read; an integer
variable which was assigned in the fopen
statement when the file was opened.
data string_variable the data block will read into
count_to_read How much data to read.
count_read How much data was actually read.
Remarks
• The file must have been opened in read mode in order to execute this command.
• This command will read data across lines. This command is equivalent to a raw
read from a file.
Example
The following script will attempt to read 100 characters:
event inq : 1
var fn : n5
var data:A100, linesread:N5
FReadLn
Description
This command reads a line of data from a file.
Syntax
FReadLn file_number, line
Table 67 FReadLn Command Arguments
Argument Description
file_number Identifies the file to be read; an integer
variable which was assigned in the fopen
statement when the file was opened
line String variable where the line will read into
Remarks
• The file must have been opened in Read mode in order to execute this command.
• This command may be useful if the file being Read does not store its data in
comma-separated format. For example, the Microsoft Windows system variable,
%PATH%, stores its data separated by the (;) character. A script could read the
variable and use the Split command to access the individual path components.
Example
The following statements would search for a certain line in the /etc/passwd directory:
fopen fn, "/etc/passwd", read
while not feof( fn )
freadln fn, line
split line, ":", name,, user_id, group_id, *
endwhile
fclose fn
See Also
FClose, FOpen, FRead, and FReadBfr commands
FSeek
Description
This command goes to a specified position in the file.
Syntax
FSeek file_number, seek_position
Argument Description
file_number An integer variable which was assigned in the
Fopen statement when the file was opened.
seek_position Where to position the file pointer (specify
the offset of the byte the programmer wants
to position to).
Remarks
• Whenever a file is opened, the file pointer is positioned at the start of the file.
When data (a line or number of characters) is read or written, the file pointer is
positioned at the end of the data that was read or written. The FSeek command
allows the user to position the file pointer to an arbitrary point in the file so that
the next read or write statement will act on the data or position following the
new location of the file pointer.
• If a seek position of -1 is specified, the file pointer will be positioned to the end of
the file.
Example
The following example gets a number from user, then uses FReadLn to read the first field
from each line, testing it against the number the user entered. Once the number is found
using FSeek, the file pointer is positioned at the beginning of the line where the number
was found. Then the entire line is read and the first 77 characters displayed for the user.
event inq : 1
var fn : n3
var fname : a30 = "/micros/simphony/sql.out"
var line : a200
var objnum : n6
fopen fn, fname, read //Open the file
forever
input objnum, "Enter number to search for" //Get number to search
// for from user
fseek fn, 1 // move file pointer
// to beginning of file
call find_obj( fn, objnum ) //Call the subroutine
if objnum = 0 // if 0, no match was
// found, break out
break
endif
freadln fn, line //Read the line where
// match found
window 1, 78 //Open window
display 1, 2, mid( line, 1, 77 ) //Display the line
waitforclear
windowclose //Close the window
endfor
endevent
See Also
FClose and FOpen commands
FUnLock
Description
This command releases any previous locks on a file.
Syntax
FUnLock file_number
Table 69 FUnLock Command Arguments
Argument Description
file_number An integer variable which was assigned in the
FOpen statement when the file was opened.
Remarks
Closing a file automatically releases any locks on a file.
Example
The following example will lock and unlock one file within an Event procedure, while
another Event procedure attempts to access it.
event inq : 1 var fn : n3
var fname : a30 = "/micros/simphony/etc/preventread"
var rite : n5 = 30
var rote : n5
var data : a30 = "Some data to write to file"
See Also
FClose, FLock, and FOpen commands
FWrite
Description
This command writes formatted data to a file.
Syntax
FWrite file_number, variable1 [, variable2][, variable3... ]
Table 70 FWrite Command Arguments
Argument Description
file_number An integer variable which was assigned in the
Fopen statement when the file was opened.
variable n Variables which will be written to the
file, where n is the number of variables
to write.
Remarks
• The file must have been opened in Write mode in order to execute this
command.
• All strings on the FWrite line will be enclosed in quotes.
• This function will write one line of data to the file. The line will be terminated
with the standard new line character.
Example
The following statements will write a single line of data to 3 different lines:
fwrite fn, 1, 500, "line 1"
fwrite fn, 2, 501, "line 2"
fwrite fn, 3, 502, "line 3"
The above statements will produce the lines below in the data file:
1,500,"line 1"
2,501,"line 2"
3,502,"line 3"
FWriteBfr
Description
This command writes formatted data to a file.
Syntax
FWriteBfr file_number, data, count_to_write, count_written
Table 71 FWrite Command Arguments
Argument Description
file_number An integer variable which was assigned in the
Fopen statement when the file was opened.
data String variable to write.
count_to_write How much data to write.
count_written How much data was actually written.
Remarks
• The file must have been opened in Write mode in order to execute this
command.
• This command will write data across lines.
Example
This example reads from a file one character at a time, capitalizes the character as long as
it is not in a quoted string, and, if the character was changed, writes the new character
back to the position in the file where its lowercase counterpart was found.
event inq : 1
var fn : n3 = 1
var fname : a40 = "/micros/simphony/etc/temp1.dat"
var ritecnt : n5 = 1
var rotecnt : n5
var char : a20 v
ar fpos : n6 var aschar : n3
var inquotes : n3
var changed : n3
fopen fn, fname, read and write //Open the file for
// read and write
if fn = 0 //If fn = 0, file
// couldn't be opened
call ferr(fname)
endif
while not feof( fn ) //Loop until the end
// of file is encountered
fpos = ftell( fn ) //Store the current
// file pointer position
freadbfr fn, char, 1, rotecnt //Read 1 character
aschar = asc( char ) //Get the ascii number
// for the character
if aschar = 34 // if the character
sub capitalize( ref achar, ref changed ) //We could also use the
// UpperCase command
var aschar : n3 = asc( achar ) // but we'll take the
// slow difficult route for fun
See Also
FClose, FOpen, FWrite, and FWriteLn commands
FWriteLn
Description
This command writes a line of data to a file.
Syntax
FWriteLn file_number, line
Argument Description
file_number An integer variable which was assigned in the
Fopen statement when the file was opened.
line A string variable to write to the file.
Remarks
• The file must have been opened in Write mode in order to execute this
command.
• No quotes will be removed from the string that is written.
See Also
FClose, FOpen, FWrite, and FWriteBfr commands
GetEnterOrClear
Description
This command waits for the operator to press the [Enter] key or the [Clear] key and
reports which key was pressed.
Syntax
GetEnterOrClear input_variable, prompt_expression \ [{output_specifier}][,
prompt_expression[{output_specifier}]...]
Table 73 GetEnterOrClear Command Arguments
Argument Description
input_variable An user_variable that accepts user input
prompt_expression An expression displayed on the prompt line,
usually to instruct the user what to enter; it
may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Example
The following script will wait for either the [Enter] key or the [Clear] key:
event inq : 1
var ent_or_clr : n1
var ENTER : n1 = 1
GetRxMsg
Description
This command is used to immediately wait for a PMS message.
Syntax
GetRxMsg prompt
Remarks
• WaitForRxMsg uses the SIM event structure to process sending and responding
to PMS messages. GetRxMsg waits for the response inline.
Example
This sample code display the dialog for 3 seconds, changing the text 3 times.
event inq:1
txmsg parm1, parm2, parm4
getrxmsg “Waiting for response”
endevent
See Also
WaitForRxMsg
GetTime
Description
This command reads the current time atomically, allowing the script to read all of the
time and date value, which guarantees that the values will be correct.
Remarks
• Each variable on the command line corresponds to the time value to read.
• It is not necessary to include each value in the command.
Example 1
gettime year, month, day// Get only the date
Example 2
gettime ,,, hour, minute, second// Get only the time
Example 3
gettime year, month, day, hour, minute, second// Get everything
but last two
If...Else[If]...EndIf
Description
These commands allow conditional execution. The If command may be used to compare
one expression to another. The Else command is used to execute a group of commands
when the If command’s condition is not met. The ElseIf command can be used to execute
commands when the If command’s condition is not met and another condition needs to
be tested.
Syntax
If expression [operator expression][And | Or expression operator \
expression...]
.
.
.
Else
or
ElseIf expression [operator expression][And | Or expression \ operator expression...]
.
.
.
EndIf
Argument Description
expression One of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
• Numeric, currency, alphanumeric, and key variables may be compared. For
example, the following usages are valid:
if counter < 20
if name = “Richard”
if keyname > @KEY_CLEAR
• The expression will always be evaluated as true or false; for example, anything
that evaluates to 0 is false and anything that evaluates to non-0 (including a
negative) is true. If the operator and second expression are left off, the remaining
expression will still be evaluated in this way.
forever
inputkey key_pressed, data, “Number then Enter, Clear to Exit “
if key_pressed = @KEY_CLEAR
exitcontinue
elseif key_pressed = @KEY_CANCEL
exitcontinue
elseif key_pressed = @KEY_ENTER
if data > 0 and data <= 10
waitforclear “You chose” , data, “. Press clear. “
else
errormessage “Choose a number between 1” , \ “
and 10, then press enter”
endif
endif
endfor
endevent
See Also
For, ForEver, and While commands
Input
Description
This command accepts an entry from the operator.
Syntax
Input input_variable[{input/output_specifier}], prompt_expression\ [{input/output_specifier}][,
prompt_expression,...]
Table 75 Input Command Arguments
Argument Description
input_variable A user_variable that will store the user’s input.
{input/output_specifier} One or more of the input and output_specifiers that
determine the format of all input and output
fields; see full definition on pages 8-3 through 8-6.
Remarks
• Prior to changing the input_variable, the user’s entry will be validated against the
field type and optional format definition.
• The combined length of all prompt_expressions must not exceed 38 characters
(including spaces); extra characters will be truncated.
• The prompt_expression is required.
• Magnetic card entry input formats are allowed with the Input command.
• If the [Clear] key is pressed during execution of the Input command, the script
will terminate unsuccessfully. This can have undesired side effects. If a script
transacts a successful posting and then uses the Input command to get reference
information on the posting from the user, the [Clear] key will perform an implicit
ExitCancel, even though the posting was successful. The following code ensures
that the script will not terminate while data is being entered:
var user_entry : A20, key_press : key
forever
inputkey keypress, user_entry, "Enter ref info"
if keypress = @KEY_ENTER
break
//only terminate if ENTER pressed
endif
endfor
Example
The following script accepts a patron number from the user, then transmits it to the PMS
for further action:
event inq : 1
var ptrn_no : a8
See Also
InputKey command
Syntax
InputKey key_variable, input_variable, prompt_expression\
{input/output_specifier}[, prompt_expression[{input\
/output_specifier}]...]
Table 76 InputKey Command Arguments
Argument Description
key_variable A user_variable key type
input_variable A user_variable that will store the user’s input
{input/output_specifier} One or more of the input and output_specifiers
that determine the format of all input and
output fields; see full definition on pages on
pages 8-3 through 8-6.
prompt_expression An expression displayed on the prompt line,
usually to instruct the user what to enter; it
may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
• The key_variable will be set equal to the terminating key press. In this way, the
script can compare the value held by key_variable to the @KEY... System
Variables, to test for the terminating keystroke the user pressed. See “ISL System
Variables” on page 6-1 for more information about the @KEY... System Variables.
• The prompt_expression is required.
Example
The following script waits for a number entry between 1 and 9 followed by the [Enter]
key. If the [Clear] or [Cancel] key is pressed, it exits the script:
event inq : 9
var key_pressed : key //Hold the function key user presses
var data : a10 //Hold the number user chooses
forever
inputkey key_pressed, data, “Number then Enter, Clear to Exit “
See Also
Input command
InfoMessage
Description
This command will display an informational message and continue.
Syntax
InfoMessage expression[{output_specifier}][, expression\
[{output_specifier}]...]
Table 77 InfoMessage Command Arguments
Argument Description
expression An expression to be displayed; it may be one of
the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
The InfoMessage command expects one message line to be displayed. However, the
workstation displays two lines. The message line to be displayed is broken up between
the two logical lines. If the line is too long to be displayed, it will be truncated.
See Also
ErrorMessage
Syntax
LineFeed [number_of _line_feeds]
Table 78 LineFeed Command Arguments
Argument Description
number_of_line_feeds An expression which defines the number of
line feeds.
Remarks
• Prior to the LineFeed command, the printer must be activated within the script
using the StartPrint command. To determine the line feeds required for the
printer, refer to the table that defines ISL Printers on page 8-103.
• Printing will not begin until the EndPrint command is executed.
• A line feed is automatically executed after the PrintLine command is issued.
Example
event inq : 1
var kitchen_msg[13] : a20
var sender_name : a20
var rowcnt : n3
window 14, 22 //Display the window
displayinput 1, 2, sender_name, “Enter your name”
//Accept users name
for rowcnt = 1 to 13 //Have user input the message
displayinput rowcnt + 1, 2, kitchen_msg[rowcnt], “Enter kitchen message”
endfor
windowedit 1 //Only save or cancel will
// end input
startprint @ordr1 //Start the print job at
// remote printer1
printline “============================”
printline “Message from “, sender_name
printline “============================”
for rowcnt = 1 to 13
if len(kitchen_msg[rowcnt]) > ““
printline kitchen_msg[rowcnt]
endif
endfor
printline “======= END MESSAGE ========”
linefeed 5
endprint
endevent
See Also
EndPrint, Printline, and StartPrint commands
Syntax
ListDisplay row, column, list_size, array_variable
Argument Description
row The integer expression specifying the screen row
within the defined window where the first
array_variable entry will be displayed.
column The integer expression specifying the screen
column within the defined window where
the first array_variable entry will be
displayed.
list_size The number of array_variable entries to display.
array_variable The name of the user_variable that holds
the matrix of values to be displayed.
Remarks
• The Window command must precede this command.
• It is acceptable to set list_size equal to 0, but if this is done, nothing will display. If
the list_size is less than zero, an error will occur.
• Each entry will be placed on a separate line directly beneath the previous.
Example
The following script will display an employee list:
event rxmsg : emp_list
var emp_list_size : n3
var emp_list_array[14] : a40
See Also
Window command
ListInput
Description
This command is used to display a list (array) variable within a window at the
workstation, then waits for the operator to select an item from the list.
Syntax
ListInput row, column, list_size, array_variable, input_variable,\
prompt_expression[{output_specifier}]
Argument Description
row The integer expression specifying the screen row
within the defined window where the first
array_variable entry will be displayed.
column The integer expression specifying the screen
column within the defined window where
the first array_variable entry will be
displayed.
list_size The number of array_variable entries to display.
array_variable The name of the user_variable that holds
the matrix of values to be displayed.
input_variable An array_variable or user_variable that accepts
user input.
prompt_expression An expression displayed on the prompt line,
usually to instruct the user what to enter; it
may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
{output_specifier} One or more of the output_specifiers that
determine the format of the output fields;
see full definition beginning on page 8-6.
Remarks
• The Window command must precede this command.
• Each list entry is displayed with a selection number starting at 1. The selection
numbers 1 to 9 are preceded by a space. Selection numbers are followed by a
period, then a space, then the list entry. For this reason, the window drawn must
be at least four columns wider than the longest item in the list. Each list entry is
placed on a separate line. The user’s entry is placed in the input_variable and is
validated against the number of items in the list.
• The prompt_expression is required.
• It is acceptable to set list_size equal to 0, but if this is done, nothing will display. If
the list_size is less than zero, an error will occur.
See Also
Window command
ListInputEx
Description
This command is used to display a list and get an operator selection. This command is
the same as ListInput, but it does not provide a WROW or WCOL variable.
Syntax
ListInputEx row, column, list_size, array_variable, input_variable,\
prompt_expression[{output_specifier}]
Remarks
• The Window command must precede this command.
• Each list entry is displayed with a selection number starting at 1. The selection
numbers 1 to 9 are preceded by a space. Selection numbers are followed by a
period, then a space, then the list entry. For this reason, the window drawn must
be at least four columns wider than the longest item in the list. Each list entry is
placed on a separate line. The user’s entry is placed in the input_variable and is
validated against the number of items in the list.
• The prompt_expression is required.
• It is acceptable to set list_size equal to 0, but if this is done, nothing will display. If
the list_size is less than zero, an error will occur.
Example
The following script receives and displays a list of guests from the PMS, allows the user
to choose one from the list, and then transmits the user’s choice to the PMS for further
processing:
event rxmsg : room_inquire
var rm_guest[14] : a20 //Quest names array
See Also
ListInput and Window command
ListPrint
Description
This command will print a list on the selected printer.
Syntax
ListPrint list_size, array
Table 81 List Print Command Arguments
Argument Description
list_size The number of array_variable entries to be
printed.
array_variable The name of the user_variable that holds
the matrix of values to be printed.
Remarks
• The StartPrint and EndPrint commands are required when using the ListPrint
command.
• It is acceptable to set list_size equal to 0, but if this is done, nothing will display. If
the list_size is less than zero, an error will occur.
Example
The following script receives a list of directions from the PMS that describes how to get
from the property to another location and prints them at the UWS’s check printer:
event rxmsg : directions
LoadDbKybdMacro
Description
This command loads a keyboard macro that is pre-defined in the Simphony database.
The macro will execute when transaction processing successfully resumes.
There is another keyboard macro command available: LoadKybdMacro, which uses a
script-defined keyboard macro.
Syntax
LoadDbKybdMacro numeric_expression
Table 82 LoadDbKybdMacro Command Arguments
Argument Description
numeric_expression An expression that requires a number; it may
be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
• The macro is referenced by its object number.
• Only integer variables can be used to run a pre-defined macro.
• If more than one LoadDbKybdMacro command is used in the same event, only
the last command will be used when transaction processing resumes.
Example
The following script will load a macro from the Simphony database that will add two
menu items to a guest check currently open at the workstation:
event inq : 1
loaddbkybdmacro 1
endevent
See Also
LoadKybdMacro command
Syntax
LoadKybdMacro key_expression[, key_expression,...]
Argument Description
key_expression An expression that can be one of the following:
• key_type:key_number
• Key function
Remarks
• For pre-defined database macros, see LoadDbKybdMacro.
• A script-defined macro is one that the script writer constructs using key function
codes. These key function codes can be represented by any combination of the
following methods:
• Key pairs—A key_pair in Simphony is designated by the key_type and a
key_number separated by a colon. For example, the number 1 on the numeric
keypad is represented by the key_pair 9 : 1, where 9 (the key_type) represents the
Keypad and where 1 (the key_number) represents Numeric 1. Therefore, one way
to load 123 and the [Enter] key would be:
loadkybdmacro 9:1, 9:2, 9:3, 9:12
• The Key function takes as its argument a key_pair separated by a comma and
returns a key function code. This comma-separated key_pair could be represented
by two comma-separated variables. Key function - The Key function takes as its
argument a key_pair separated by a comma and returns a key function code. This
comma-separated key_pair could be represented by two comma-separated
variables.
For example:
var key_type : Key = 9
loadkybdmacro key(key_type, 1), key(key_type, 2),\
key(key_type, 3), 9:12
• @KEY... System Variables—System Variables that begin with @KEY... are special
key type variables. These keys can be used to test for and represent movement
keys and keys like [Enter] and [Clear]. The @KEY... System Variables can also be
used in the LoadKybdMacro command.
To continue the example:
loadkybdmacro 9:1, 9:2, 9:3, @KEY_ENTER
• User-defined variables with the type Key—User-defined variables with the type
Key can be assigned key function codes using the Key function or with @KEY...
System Variables. Another way to load the keyboard macro:
var key_1 : Key //Declare variables as
//Key types
var key_2 : Key var key_3 : Key var Enter : Key
Example
In the following script, there will be three [Enter] keys that will be run once the script
completes:
event inq:1
loadkybdmacro @KEY_ENTER //first enter key
txmsg "inq_1_request"
waitforrxmsg
endevent
See Also
• LoadDbKybdMacro command; Key function
• “Key Types, Codes, and Names”
LowerCase
Description
This command is used to convert a string variable to lower-case.
Syntax
LowerCase string_variable
Table 84 LowerCase Command Arguments
Argument Description
string_variable The string that will be changed; can be any
user_variable (string).
See Also
UpperCase command
MakeAscii
Description
This command will transfer the data from a source_string into a destination_string,
stripping out any non-ASCII or non-printable characters from the source_string.
Argument Description
source_string A string_variable containing both ASCII and
non-ASCII characters.
destination_string A place holder for the string_variable containing
only ASCII characters.
Example
The following script will convert a string containing both ASCII and non- printable
characters into a string that contains only ASCII characters:
event inq : 1
var string1 : A20
var string2 : A20
MakeUnicode
Description
This command will transfer the data from a source_string into a destination_string,
stripping out any non-printable characters from the source_string.
Syntax
MakeUnicode source_string, destination_string
Table 86 MakeUnicode Command Arguments
Argument Description
source_string A string_variable containing non-
printable characters.
destination_string A place holder for the string_variable
Containing only non-printable characters.
Example
The following script will convert a string containing non-printable characters into a
string that contains only printable characters:
event inq : 1
var string1 : A20
var string2 : A20
format string1 as “ ”
makeunicode string1, string2 //string2 will be “MAP”
Remarks
This command is only available on SAR Ops
Syntax
Mid (string_variable, start, length) = replacement_string
Table 87 Mid Command Arguments
Argument Description
string_variable The string that will be changed; can be any
User_variable (string).
start The character position within the
string_variable, where the replacement_string
will begin to overwrite.
length The number of characters in the string_variable
that will be changed using the
replacement_string to the right of the equal sign.
= Required by syntax.
replacement_string The string containing the characters used for
the replacement can be any user_variable
(string).
Remarks
• The parentheses are required.
• The first character in the string is always 1. If the start or length is less the 0, then
an error will occur.
• If the start is greater than the string_variable itself, no data will be assigned. If the
length is greater than the room left to assign the string_variable, then the data will
be truncated.
var string : A10
string = “this short”
// In this command, the length exceeds room left.
// Only first 5 letters of (“long string”) are used,
// overwriting the last five characters of string.
// In this operation, string would become “this long”.
MSleep
Description
This command tells the script to sleep for the requested number of milliseconds.
Syntax
MSleep milliseconds
Example
event inq:2
var seconds:N5
PopUpIslTs
Description
This command displays a pop-up touchscreen defined by the SetIslTsKey command.
Syntax
PopUpIslTs
Remarks
After a touchscreen has been displayed, its keys remain defined until cleared by the
ClearIslTs command.
Example
The subroutine below first clears any previously defined touchscreen keys and displays
two touchscreen keys, [YES] and [NO], which are defined by the SetIslTsKey command.
This subroutine displays these keys using the PopUpIslTs command, as the operator is
issued a prompt by the system, and captures the operator’s input.
sub get_yes_or_no( ref answer, var prompt_s:A38 )
var keypress : key
var data : A20
clearislts
See Also
ClearIslTs, DisplayIslTs, and SetIslTsKey commands
PrintLine
Description
This command prints a line on the selected printer defined in the StartPrint command.
The print information can be provided as text or by referencing a variable field.
This command may also be used to print Binary Data (used to output information such
as barcodes, rotated text, emphasized print, etc.) from within a SIM Script.
Syntax
PrintLine expression[{output_specifier}] or directive\ [, expression[{output_specifier}] or
directive]...]
Table 88 PrintLine Command Arguments
Argument Description
expression An expression that represents the string to
be printed: it may one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Example
The following script constructs and prints a date string bordered by hash marks at the
workstation’s check printer:
sub print_date
var date : a9
var hash_mark : a24 //Use format to build a date
// string
format date as @DAY, “-”, month_arr[@MONTH], “-”, @YEAR
See Also
StartPrint command and the Chr function
PrintSimFeatures
Description
This command is used to print out all SIM features available in the current SIM engine.
Syntax
PrintSimFeatures printerObjectNumber
Remarks
• The output will contain all commands, system variables, and functions.
Example
event inq:1
PrintSimFeatures 3
endevent
Prompt
Description
This command is used to display an operator prompt on the prompt line at the
workstation.
Syntax
Prompt expression[{output_specifier}] [, expression\ [{output_specifier}]...]
Argument Description
expression An expression that represents the prompt for
the user: it may one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
• The combined length of all expressions must not exceed 38 characters (including
spaces); extra characters will be truncated.
• The Prompt command should only be used when a time-consuming piece of
code is to be executed. This command will inform the user that the UWS is busy.
All commands that require user input display their own prompts.
prompt "Posting unsuccessful"
// displayed but erased immediately
waitforclear
// "Press clear to continue" will display
Example
The following script receives a list of guests from the PMS, calls a subroutine that sorts
the list, then calls another that displays the list:
event rxmsg : guest_list
var num_guests : n3
var guest_list[100] : a20
ProRate
Description
This command is used to indicate to the system that prorated itemizers are to be used.
Prorated itemizers are required for some Property Management Systems.
Remarks
• If the ProRate command is encountered either inside or outside an Event
procedure, all itemizers will be prorated for the duration of the ISL script. The
following system variables are prorated:
@SI[]
@DSC
@SVC
@AUTOSVC
@TAX[]
Refer to ISL System Variables for more information.
• Prorated itemizers are useful if the PMS is posting sales, discounts, tax, etc.
during the charge posting operation. When prorated totals are used, the totals
reflect the Current Payment’s share of a guest check. If the Current Payment is
voided, the totals will have the reversed polarity to reflect this. The only
exception (for example, the total that is not prorated) is a charged tip, which will
always be completely attributed to its associated payment. This mode is
supported by Simphony.
The following equations can be used by the PMS PC to determine the Current
Payment Total of the prorated transaction being posted:
Current Payment Total = + (+) Sales 1 Total
+ (+) Sales 2 Total
+ (+) Sales 3 Total
+ (+) Sales 4 Total
+ (+) Sales 5 Total
+ (+) Sales 6 Total
+ (+) Sales 7 Total
+ (+) Sales 8 Total
+ (+) Sales 9 Total
+ (+) Sales 10 Total
+ (+) Sales 11 Total
+ (+) Sales 12 Total
+ (+) Sales 13 Total
+ (+) Sales 14 Total
+ (+) Sales 15 Total
+ (+) Sales 16 Total
+ (-) Discount Total
+ (+) Service Charge Total (kybd)
+ (+) Service Charge Total (auto)
Notes:
• If Value Added Tax (VAT) is used, the tax totals represent the total sales
amounts (inclusive of VAT) for each of the VAT tax types and must not be
included in the Transaction Total or Current Payment Total equations.
• In non-prorated mode, if the Current Payment Amount field in the message data
block is less than the computed Transaction Total (above), then a partial amount
has been tendered.
• If U.S. inclusive tax is used, the tax total associated with this rate will be zero.
[Retain/Discard]GlobalVar
Description
These commands instruct the ISL to save all global variable values in between
transactions, or to discard them.
Syntax
RetainGlobalVar or DiscardGlobalVar
Remarks
• These commands are global, which means they remain in effect until the
alternative command is used or until the script file has been changed (for
example, until the script file is opened for edit and closed).
• The default action is to discard the global variable values after each event.
Example
The following example could be used to count the number of times Tender #1 has been
used. This value will be retained and incremented until the script is changed.
numtnd = numtnd + 1
.
.
.
endevent
Return
Description
This command is used to return from a subroutine procedure prior to reaching the end of
the routine (EndSub). It is provided as a means of breaking out of the subroutine under
certain conditions.
Syntax
Return
Remarks
The Return command is not allowed in an Event procedure.
Example
The following example shows a subroutine that takes as arguments the file number of an
open file and a search number. It tests the first field in each line for a number that matches
the search number. If a match is found, the subroutine Returns without executing the rest
of the commands in the subroutine. If no match is found before the end of file is
encountered, the subroutine exits normally.
sub finfnd_obj( ref fn, ref search_num )
var current_position : n6
var found_num : n6
prompt "Searching, please wait..."
while not feof( fn ) //Loop until end
// of file encountered
current_position = ftell( fn ) //Get the current
// file pointer position
fread fn, found_num, * //Fread the first field
// only from the file
if found_num = search_num // if it matches
// what user entered
fseek fn, current_position //Fseek to the beginning
// of the line
return // exit the subroutine
endif
endwhile
errormessage "Can't find that number" //If end of file
// is encountered then
search_num = 0 // we didn't find a
// match, tell user, set
endsub // search_num = 0,
// and return
ReTxMsg
Description
This command retransmits a message. When used in place of the TxMsg command, the
retransmit flag is set to “R” and the sequence number is not incremented.
Syntax
ReTxMsg
Remarks
This command should only be used with the UseISLTimeOuts command.
See Also
UseISLTimeOuts command
RxMsg
Description
This command defines the format of the data segment of an interface response message
by specifying a variable name for each piece of data it receives. The RxMsg command
will assign the values in the Applications Data Segment of the variables specified in the
RxMsg statement.
Syntax
RxMsg user_variable or list_spec[, user_variable or list_spec...] or RxMsg _Timeout
Table 90 RxMsg Command Arguments
Argument Description
user_variable A user_variable which will be assigned data.
list_spec is defined as: A user integer variable containing the
number_records number of records to be built from this
string.
field_array[:field_array] An array_variable that will hold one field per
record; field can be split into more than one
array by separating the array_variables using a
colon (:).
Remarks
• The Event RxMsg command is executed when a response is received from the
interfaced system. The Event must contain an RxMsg command. The first field in
a response message is always the Event ID and should not be declared using this
command. The RxMsg command defines all the fields (and their order)
following the Event ID field. The interface message fields are always separated
Example
event inq : 1
var room_num : a4
input room_num, “Enter Room Number”
waitforrxmsg
txmsg @CKEMP,@CKNUM,@TNDTTL,room_num
endevent
event rxmsg : charge_declined
var room_num : a4
rxmsg room_num
exitwitherror “Charge for room “, room_num,” declined”
endevent
See Also
Event, Split, TxMsg, UseISLTimeOuts, Var, and WaitForRxMsg commands
Syntax
SaveChkInfo expression[{output_specifier}][, expression\ [{output_specifier}]]...]
Table 91 SaveChkInfo Command Arguments
Argument Description
expression An expression that represents the information
to be saved; it may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
• Like other types of guest check detail, such as totals and definitions, guest check
information detail lines are only stored in the Guest Check files (stored in
workstations) temporarily and cleared upon closing a guest check. As a
consequence, this detail only has short-term value unless it is also written to a
third-party database or to Closed Check files.
Closed Check Files: Once stored in these files, guest check information detail can
be exported to an ASCII comma-separated file using the Simphony Data Access
Service or check detail can be written to a file using the ISL file I/O operations.
Then, an external program can be created to extract this information from these
files and manipulate the information for a variety of purposes.
Third-party System: If this information is captured by a third-party system, like
a delivery system, accessing the information depends on the resources of that
particular system.
• The SaveChkInfo command is issued once for each line of check information
detail written to the check. The process goes like this:
The first occurrence of SaveChkInfo in an event writes to the first check
information detail line.
Each subsequent call to SaveChkInfo writes to the next check information detail
line.
Introduction
Both SIM and Simphony must be used in the following ways to accomplish these tasks:
• A SIM script must be designed to collect and save the check information detail,
and
• Specific Simphony programming must be enabled to print and display the check
information detail to the specifications of the establishment.
Example
The ISL event below initiates a procedure for collecting and saving the following
customer information for a fictional delivery system at a restaurant: last and first name,
telephone number, street address, and up to four lines for directions.
event inq : 1
var field_name[8] : a24
var customer_info[8] : a24
field_name[1] = "Last: "
field_name[2] = "First: "
field_name[3] = "Phone: "
field_name[4] = "Addr: "
field_name[5] = “D1: “
field_name[6] = “D2: “
field_name[7] = “D3: “
field_name[8] = “D4: “
var rowcnt : n3
window 8, 40
touchscreen 13
for rowcnt = 1 to 8
display rowcnt, 2, field_name[rowcnt]
displayinput rowcnt, 10, customer_info[rowcnt],\
"Enter ", field_name[rowcnt]
endfor
windowedit
for rowcnt = 1 to 8
savechkinfo customer_info[rowcnt]
endfor
waitforclear
windowclose
touchscreen 3
endevent
See Also
ClearChkInfo command
SaveRefInfo
Description
This command is used to save the contents of an expression as part of tender reference
information.
Syntax
SaveRefInfo expression[{output_specifier}][, expression\ [{output_specifier}]]...]
Argument Description
expression An expression that represents the information
to be saved; it may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
{output_specifier} One or more of the output_specifiers that
determine the format of the output fields;
see full definition beginning on page 8-6.
Remarks
• The SaveRefInfo command will only work with the Event Tmed procedure.
• Every time this command is used, a new reference line is created.
• Up to eight references may be saved with each tender and each may be up to 19
characters long. Text or fields greater than 19 characters will be truncated.
Example
The following script allows a user to enter delivery information on a To Go check:
event tmed : 10
var rowcnt : n3
var deliv_desc[6] : a15
var deliv_info[6] : a20
var cnt : n3
deliv_desc[1] = “Name:”
deliv_desc[2] = “Company:”
deliv_desc[3] = “Address 1:”
deliv_desc[4] = “Address 2:”
deliv_desc[5] = “City:”
deliv_desc[6] = “Phone:”
//Display a window with address
// prompts, and accept delivery
// info from user
window 6, 43
for rowcnt = 1 to 6
display rowcnt, 2, deliv_desc[rowcnt]
displayinput rowcnt, 13, deliv_info[rowcnt], “Enter “, deliv_desc[rowcnt]
endfor
windoweditwithsave //Input can only be terminated
// by cancel or save
See Also
Event and SaveRefInfox commands
SaveRefInfox
Description
This command is used to save both the type and the contents of an expression as part of
tender reference information. SaveRefInfox requires the reference type as an argument
so that different types of reference detail can be distinguished if exported later.
Syntax
SaveRefInfox ref_type, expression[{output_specifier}][, expression\ [{output_specifier}]]...]
Table 93 SaveRefInfox Command Arguments
Argument Description
ref_type A type N3 integer that represents the
reference type; specify 0-255; 0 denotes no
reference type, as with SaveRefInfo.
expression An expression that represents the information
to be saved; it may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
• The SaveRefInfox command will only work with the Event Tmed procedure.
• Every time this command is used, a new reference line is created.
• Up to eight references may be saved with each tender and each may be up to 19
characters long. Text or fields greater than 19 characters will be truncated.
Example
The following script allows a user to enter delivery information on a To Go check:
event tmed : 10
var rowcnt : n3
var deliv_desc[6] : a15
var deliv_info[6] : a20
var cnt : n3
saverefinfox 15, “DELIVER TO:” //Save this line to check detail for cnt = 1
to 6 //If user made an entry on a
// line, save
// the entry to check detail
See Also
Event and SaveRefInfo commands
SetIslTsKey
Description
This command defines a key to be displayed on a touchscreen, allowing one to define a
key that normally would be programmed in the Touchscreens module.
Syntax
SetIslTsKey row, col, num_rows, num_cols, font, \key_expression, expression
Table 94 SetIsTSKey Argument
Argument Description
row Integer expression defining row coordinate
of key (1-6).
col Integer expression defining column
coordinate of key (1-10).
num_rows Integer expression defining the key height
in rows (1-6).
num_cols Integer expression defining the key width
in columns (1-10).
Remarks
• Up to nine keys may be defined with the SetIslTsKey.
• Any previously defined touchscreen keys are automatically cleared each time a
script executes. However, if two or more touchscreens are defined within an
event, the ClearIslTs command must be used to clear the touchscreen keys.
Example
The subroutine below first clears any previously defined touchscreen keys and displays
two touchscreen keys, [YES] and [NO], which are defined by the SetIslTsKey command.
This subroutine displays these keys as the operator is issued a prompt by the system and
captures the operator’s input.
sub get_yes_or_no( ref answer, var prompt_s:A38 )
var keypress : key
var data : A20
clearislts
setisltskey 2, 2, 4, 4, 3, @KEY_ENTER, "YES"
setisltskey 2, 6, 4, 4, 3, @KEY_CLEAR, "NO"
displayislts
See Also
ClearIslTs, DisplayIslTs, and PopUpIslTs commands
Syntax
SetReRead
Remarks
• Previously, OPS would always check if an ISL script had changed before
processing the event. Now that many more events have been added,
continuously checking file status would be an unnecessary strain on system
resources, especially since this feature is used only for debugging scripts.
• The ISL script will also be reread if /micros/simphony/etc/isl.reread is present
when POS Operations is started.
SetSignOn[Left/Right]
Description
These commands determine where ISL places the minus sign when formatting numbers.
Syntax
SetSignOnLeft or SetSignOnRight
Remarks
• This is a global command.
• By default, ISL puts the minus sign to the right of the number being displayed
(for example, -45 will display as “45-”). If this is not acceptable, then executing
the SetSignOnLeft command will cause ISL to format all numbers with the
minus sign on the left.
REMEMBER: Using the SetSignOnRight or SetSignOnLeft command does NOT
change the way ISL reads input data. Any external data read and interpreted by ISL,
such as received messages, file read operations, and operator input, must have the
negative sign on the left-hand sign of the value.
For example, if the ISL script prompted for an amount entry, and the operator
entered 1.23-, the value would not be accepted as positive. Any negative PMS entries
must have the sign on the left side of the field.
Example
event inq : 1
Syntax
SetString main_string, character_string[, count]
Table 95 SetString Command Argument
Argument Description
main_string The string in which characters will be
replaced; it can be any string_variable.
character_string A string whose first character will be used to
replace characters in main_string; it may be one
of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Example
The following script constructs and prints a date string bordered by hash marks at the
workstation’s check printer:
sub print_date
var date : a9
var hash_mark : a24 //Use format to build a date
// string
format date as @DAY, “-”, month_arr[@MONTH], “-”, @YEAR
Syntax
Split string_to_split, field_sep_char, user_variable or list_spec \ [, user_variable or list_spec...]
Table 96 Split Command Argument
Argument Description
string_to_split The field-separated string to split.
field_sep_char The character used to the separate fields in the
string_to_split; use the Chr function to define
the character required.
user_variable A user_variable which will be assigned one of
the individual fields from the string_to_split.
list_spec is defined as: A user integer variable containing the number
number_records of records to be built from the string_to_split.
field_array[: field_array] An array_variable that will hold one field per
record; a field can be split into more than one
array by separating the array_variables using a
colon (:).
Remarks
If the system variable @STRICTARGS is set to 1, ISL will ensure that the variable count in
the Split command matches the number of fields in the file record. If an incorrect number
of fields is specified in the statement or the file is corrupted, an error message will be
generated.
Example
The following example will assume the PMS has sent the guest name and room number
as one field. The name is separated by the room number with the [fs] character. Without
the Split command, the script would have to search through the field one character at a
time until the [fs] character was found. The Split command, however, will automatically
split the data into fields:
event rxmsg : guest
var name_and _room : a25
var name : a20
var room_number : n5
See Also
Format and SplitQ commands; Chr function
SplitQ
Description
This command is used to split a field-separated string into separate variables and strips
the quotes from the quoted string.
Syntax
SplitQ string_to_split, field_sep_char, user_variable or list_spec \ [, user_variable or list_spec...]
Table 97 SplitQ Command Arguments
Argument Description
string_to_split The field-separated string to split.
field_sep_char The character used to the separate fields in
the string_to_split; use the Chr function to
define the character required.
user_variable A user_variable which will be assigned one of
the individual fields from the string_to_split.
list_spec is defined as: A user integer variable containing the number
number_records of records to be built from the string_to_split.
field_array[: field_array] An array_variable that will hold one field per
record; a field can be split into more than one
array by separating the array_variables using a
colon (:).
Remarks
• The SplitQ command operates in the same way as the Split command, except
that it will strip quotes from quoted strings. The SplitQ command is generally
used to split lines from a file, where strings are usually quoted.
• If the system variable @STRICTARGS is set to 1, ISL will ensure that the variable
count in the SplitQ command matches the number of fields in the file record. If
an incorrect number of fields is specified in the statement or the file is corrupted,
an error message will be generated.
See Also
Format and Split commands; Chr function
Syntax
StartPrint printer_name|expression [, backup_dten [, reference_line]]
.
.
.
EndPrint [or EndPrintFF or EndPrintNOFF]
Table 98 StartPrint...EndPrint[FF/NOFF] Command Arguments
Argument Description
printer_name The object number of the printer.
expression Any variable that contains the object number
of a printer in the system.
backup_dten The object number for the backup printer that
overrides the backup printer programmed in
the database.
reference_line The text string to be displayed in the printer
error window if an error occurs during.
Remarks
• The expression is defined using one of the ISL Printer system variables in the
following table:
Table 99 ISL Printer System Variables for StartPrint…EndPrint[FF/NOFF]
POS Setup
To enable the printer, enter the Simphony database and verify that the printer:
• Is entered as a device in the Workstations module
• Has its object number entered as one of the printers in the Workstations module
Example
The following script allows a user to enter a 13 line message and print it at the kitchen
printer:
event inq : 1
for rowcnt = 1 to 13
displayinput rowcnt + 1, 2, kitchen_msg[rowcnt], “Enter kitchen message”
endfor
windowedit //Only save or cancel will
See Also
• PrintLine command
• “ISL Printing”
Sub... EndSub
Description
These commands are used to declare the start and end of a subroutine. A subroutine may
be used by an event or another subroutine by using the Call command.
Syntax
Sub name [( Ref | Var parameter [, Ref | Var parameter]...)]
.
.
.
EndSub
Argument Description
name The subroutine name
Ref ISL keyword
Var Var command, see page 8-113.
Remarks
• Each Sub command defines the number and type of parameters that can be
passed in. If the Call command has the incorrect number of arguments or the
incorrect type of arguments, an error will display.
• Sub commands are not allowed within an event.
event inq : 1
sub // will display error
.
.
.
endsub endevent
• Each subroutine has access to the calling event’s variables, all global variables,
and may declare their own local variables.
• The name may be any length up to 255 characters and must begin with a letter A
- Z, a - z, or the underscore character (_). It may include any character in the
range A - Z, 0 - 9, and the underscore character.
Using Subroutines
ISL subroutines can be passed parameters in the same way as C, BASIC, or Pascal
subroutines. Data can be passed in by two methods: value or reference.
By Value
• A parameter in a Sub command is considered to be by value if declared as a
normal ISL variable. Example:
sub get_name( var target_name:A20, var target_id:N5 )
Both target_name and target_id are local variables which are assigned the value
passed in with the Call command. A Call command to call this subroutine could be:
call get_name( "Smith", 145 )
Any type of ISL expression can be passed in. For example:
call get_name( "Smith", 145 + offset )
call get_name( user_input, elist[ 25 ] )
• The expression type (string, numeric,...) can be different from the one declared
in the Sub command. Example:
call get_name( "Smith", "45" )
• The assignment of the expression to the subroutine parameter follows the same
rules when setting a variable in a normal assignment expression.
By Reference
• There are two types of data that can be passed in by reference: variables and
arrays. To pass either, the Ref variable is used in the Sub statement. No type
information is specified for the referenced variable.
For example, in the following line status is passed by reference, and
prompt_string is passed by value.
sub mysub( ref status, var prompt_string:A20 )
The following example shows correct and incorrect ways to invoke mysub:
var result:N5
call mysub( result, "Enter data" ) // Correct
call mysub( result+1, "Enter data" )
// Incorrect: 'result+1' is not a variable.
call mysub( (result), "Enter data" )
// Incorrect: '(result)' is considered an
// expression
• To pass an array, empty brackets must be placed after the array name both in the
Sub and the Call commands. Example:
sub mysub( ref data[], var prompt_string:A30 )
The following example passes an array to mysub:
var array[ 10 ]:A20
call mysub( array[], "Enter data" ) // Correct
call mysub( array, "Enter data" )
// Incorrect. Need [] after array
• When a variable is passed in by reference, any change in the subroutine to the
variable affects the original value of the variable. The name after the Ref variable
can be thought of as being another name for the variable passed in.
event inq : 1
var i : n5 = 10 //Set i to 10
call mysub ( i ) //Pass in i by
//reference
waitforclear “i = “, i //i is now equal
//to 20
endevent
Example
The event below calls a subroutine, format_data, that formats the current date as follows:
dd-mmm-yyyy.
event inq : 1
var date : a11
sub format_date( ref date, var day : n5, var month : n5, var year : n5 )
var month_arr[12] : a3
month_arr[1] = "JAN"
month_arr[2] = "FEB"
month_arr[3] = "MAR"
month_arr[4] = "APR"
month_arr[5] = "MAY"
month_arr[6] = "JUN"
month_arr[7] = "JUL"
month_arr[8] = "AUG"
month_arr[9] = "SEP"
month_arr[10] = "OCT"
month_arr[11] = "NOV"
month_arr[12] = "DEC"
See Also
Call and Var commands
Syntax
TimerSet milliseconds, eventName
TimerReset eventName
TimerResetAll
Remarks
TimerResetAll will reset the SIM script’s timers, but does not affect other SIM scripts’
timers.
Example
event sign_in
TimerSet 5, "mytimer"
endevent
event sign_out
TimerReset "mytimer"
endevent
TxMsg
Description
This command defines the applications data segment of a message that will be
transmitted over the interface.
Syntax
TxMsg expression[{output_specifier}][, expression[{output_specifier}] \...]
Table 101 TxMsg Command Arguments
Argument Description
expression An expression that will be transmitted over
the interface; it may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
• The TxMsg command must be followed by the WaitForRxMsg command.
• If more than one field is required, multiple expressions must be separated by
commas. These commas will be replaced in the message received by the
interfaced system by field separator characters (ASCII 1CH).
• A statement may continue over multiple lines by including the line continuation
character (\) at the end of each line. The line continuation character is very useful
as TxMsg commands tend to be very lengthy.
Example
A transmission message that includes the check employee number, the check number,
tendered total, and a declared room number field could be defined as follows:
event inq : 1
var room_num : a4
input room_num, “Enter Room Number”
txmsg “charge_inq”,@CHKEMP,@CHKNUM,@TNDTTL,room_num
//The first field (charge_inq) is an
waitforrxmsg
endevent
event rxmsg : charge_declined //This is one of the PMS response
// possibilities
var room_num : a4
rxmsg room_num
exitwitherror “Charge for room “, room_num,” declined”
endevent
See Also
Event, RxMsg, TxMsgOnly, and WaitForRxMsg commands
TxMsgOnly
Description
This command sends a message to a PMS without waiting for a response.
Syntax
TxMsgOnly expression[{output_specifier}][, expression[{output_specifier}] \...]
Table 102 TxMsgOnly Command Arguments
Argument Description
expression An expression that will be transmitted over
the interface; it may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Example
A transmission message that includes the check employee number, the check number,
tendered total, and a declared room number field could be defined as follows:
event inq : 1
var room_num : a4
input room_num, “Enter Room Number”
txmsgonly “charge_post”,@CHKEMP,@CHKNUM,@TNDTTL,room_num
UpperCase
Description
This command is used to convert a string variable to uppercase.
Syntax
UpperCase string_variable
Table 103 UpperCase Command Arguments
Argument Description
string_variable The string that will be changed to an uppercase
user_variable (string).
See Also
LowerCase command
UseBackupTender
Description
This command instructs the ISL to switch to the programmed backup Tender.
Syntax
UseBackupTender
Remarks
• Tender Media PMS Option Switch to Alternate Tenders if PMS Timeout must be
enabled. If backup tender is not programmed, this command has no effect.
• This is useful for posting to other tenders when the primary PMS is not active.
Example
event rxmsg : _Timeout
waitforconfirm “Post to backup tender”
usebackuptender
exitcontinue
endevent
See Also
Event Tmed command
Use[Compat/ISL]Format
Description
These commands are used to instruct ISL to use the ISL message format or the
Simphony-standard message format.
Remarks
• These commands are global.
• If the Simphony-standard message format is selected, the Application Data
Segment will not contain the two-byte sequence number or the retransmission
flag, or the FS after the STX. For more information, see Message Formats and
Interface Methods.
Use[ISL/STD]TimeOuts
Description
These commands instruct ISL how to process a PMS timeout. UseISLTimeOuts will
search the script file for an RxMsg Event with an Event ID of _Timeout.
UseSTDTimeOuts will use the standard Simphony error messaging for a PMS timeout.
Syntax
UseISLTimeOuts or UseSTDTimeOuts
Remarks
• The Event ID _Timeout will bypass the standard Simphony error messaging for
a PMS timeout and process instructions from the ISL script file.
• For example, if the UseISLTimeOuts command is used and the PMS does not
respond to an ISL message within the timeout period, the ISL script may then ask
the user if the processing should be cancelled, or if a backup tender should be
used.
See Also
Event, TxMsg, and RxMsg commands
UseSortedDetail
Description
This command causes detail system variables to access consolidated detail.
Syntax
UseSortedDetail
Remarks
This command applies to the detail system variables only.
Example
The following example, which assumes that check information lines are equal to one,
displays the name, tax amount, and quantity for each line of detail. Use this event to see
how UseSortedDetail changes the detail output format for consolidated menu items.
event inq : 1
var chk_line = 1
UseSortedDetail
while chk_line <= @numdtlt
sub display_dtl
window 5,40
display 2,5, “Menu Item Name = ” , @dtl_name[chk_line]
display 3,5, “Tax Amount = ” , @dtl_taxttl[chk_line]
display 4,5, “Quantity = ” , @dtl_qty[chk_line] if @detailsorted = 1
display 5,5 “Detail Is Consolidated” else
display 5,5 “Detail Is Not Consolidated” endif
waitforclear
endsub
See Also
UseStdDetail command and @DETAILSORTED system variable
UseStdDetail
Description
This command causes the detail system variables to access raw detail.
Syntax
UseStdDetail
Remarks
This command applies to the detail system variables only.
See Also
UseSortedDetail command and @DETAILSORTED system variable
Var
Description
This command is used to declare user variables. When it is used outside an event or
subroutine, the user variable will be accessible globally. When it is used inside an event
or subroutine, the variable is considered “local” and is only allowed to be used by that
event or any subroutine called by the event.
Syntax
Var user_variable : variable_specifier
Table 104 Var Command Argument
Argument Description
user_variable A user-defined name for a variable. If an
array_variable is being declared, the
user_variable must be followed immediately
by brackets containing the maximum number
of items the array_variable may contain, (for
example, name[100]).
Example
var guest_name : A20
Remarks
• The user_variable name can be up to 255 characters in length and must begin with
a letter A - Z, a - z, or the underscore character (_). It may include any character
in the range A - Z, 0 - 9, and the underscore character. Case is insignificant and
the name must not contain spaces.
• It is possible to declare a variable with a size that is defined by an expression,
rather than a hard-coded number. These are known as variable-size variables. If
the ISL encounters a left parentheses immediately following the type of the
variable, it will assume that an expression follows, which defines the variable’s
size. Variable-size variables can be declared as follows:
var i : n3 = 15
var window_width : n(i + 15)
If i = 15, then the line shown above would be the same as:
var window_width : N30
• If the size of the variable is not known when the variable is being defined, then the
variable size may be placed within parentheses.
var string : A10
var string : A( 7 + 3 ) //Same as A10
var string : A( num_guests * 2 ) //Depends on value
// num_guests
• The type_specifier is different for each of the four types of user-defined variables.
Note that no size is specified when declaring a key variable.
Table 105 Type Specifiers for User-Defined Variables
See Also
[Retain/Discard]GlobalVar command
WaitForClear
Description
This command requires the operator to press the [Clear] key before proceeding. It is often
used after the Display command.
Syntax
WaitForClear [prompt_expression[{output_specifier}]]\ [,
prompt_expression[{output_specifier}]...]
Table 106 WaitForClear Command Arguments
Argument Description
prompt_expression An expression displayed on the prompt line,
usually to instruct the user what to enter; it
may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
{output_specifier} One or more of the output_specifiers that
determine the format of the output fields;
see full definition beginning on page 8-6.
Example
The following script would display some text, then require the operator to press the
[Clear] key before continuing:
event inq : 1
window 1, 14
display 1, 2, “Hello” //”You say Hello”
waitforclear
display 1, 2, “Goodbye” // ”and I say Goodbye”
waitforclear
endevent
See Also
Display, WaitForConfirm, WaitForEnter, and b commands
WaitForConfirm
Description
This command requires the operator to press the [Enter] key or the [Clear] key.
Syntax
WaitForConfirm [prompt_expression[{output_specifier}]]\ [,
prompt_expression[{output_specifier}]...]
Table 107 WaitForConfirm Command Arguments
Argument Description
prompt_expression An expression displayed on the prompt line,
usually to instruct the user what to enter; it
may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Example
The following script is a transmission message that includes the check employee number,
the check number, tendered total, and a declared room number field.
After the room_num is displayed, the script will wait for the [Enter] key or the [Clear]
key:
event inq : 1
var room_num : a4
input room_num, “Enter Room Number”
waitforconfirm
txmsg “charge_inq”,@CHKEMP,@CHKNUM,@TNDTTL,room_num
//The first field (charge_inq) is an
waitforrxmsg
endevent
event rxmsg : charge_declined //This is one of the PMS response
// possibilities
var room_num : a4
rxmsg room_num
exitwitherror “Charge for room “, room_num,” declined”
endevent
See Also
Display, WaitForClear, WaitForEnter, and WaitForRxMsg commands
WaitForEnter
Description
This command requires the operator to press the [Enter] key before proceeding.
Syntax
WaitForEnter [prompt_expression[{output_specifier}]]\ [,
prompt_expression[{output_specifier}]...]
Argument Description
prompt_expression An expression displayed on the prompt line,
usually to instruct the user what to enter; it
may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
{output_specifier} One or more of the output_specifiers that
determine the format of the output fields;
see full definition beginning on page 8-6.
Remarks
• The default prompt, “Press Enter to continue,” will appear on the prompt line of
the workstation. This may be overridden by providing a prompt_expression with
the command.
• The combined length of all prompt_expressions must not exceed 38 characters
(including spaces); extra characters will be truncated.
Example
The following script would display the guest’s name and require the operator to press
the [Enter] key before continuing:
event rxmsg : guest
var name : a20
rxmsg name
waitforenter “guest is “, name
endevent
See Also
Display, WaitForClear, WaitForConfirm, and WaitForRxMsg commands
WaitForRxMsg
Description
This command is used after a message has been transmitted over the interface so that the
system waits for a response.
Syntax
WaitForRxMsg [prompt_expression[{output_specifier}]]\ [,
prompt_expression[{output_specifier}]...]
Argument Description
prompt_expression An expression displayed on the prompt line,
usually to instruct the user what to enter; it
may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
• The default prompt, “Please Wait--Sending Message,” will appear on the prompt
line of the workstation. The default may be overridden by providing a
prompt_expression with the command.
• The WaitForRxMsg is not a stand-alone command; the TxMsg command must
precede the WaitForRxMsg. The WaitForRxMsg command is an implicit return.
• When a TxMsg statement is followed by a WaitForRxMsg statement and a
response message is received from the interfaced system, it will assume that
there is a return event (Event Rxmsg) that corresponds to the message from the
interfaced system.
Example
A transmission message that includes the employee check number, the check number,
tendered total, and a declared room number field could be defined as follows:
event inq : 1
var room : n5
input room, “Room? “ txmsg “room_inq”, room
waitforrxmsg //Script stops here
waitforclear //Not executed because
// waitforrxmsg has
endevent // terminated event
See Also
Event RxMsg, RxMsg, TxMsg, WaitForClear, WaitForConfirm, and
WaitForEnter commands
WaitPrompt/ClearWaitPrompt
Description
These commands are used to display a ‘wait prompt’ dialog while SIM is busy
processing a lengthy operation.
Remarks
• ClearWaitPrompt is called automatically when a script exits.
Example
This sample code display the dialog for 3 seconds, changing the text 3 times.
event inq:1
var i:n
for i = 1 to 3
WaitPrompt "Waiting ", i
MSleep 1000
endfor
ClearWaitPrompt
endevent
While...EndWhile
Description
The While command is used to implement a loop structure. The EndWhile is used to end
the loop.
Syntax
While expression
.
.
.
EndWhile
Table 110 While…EndWhile Command Arguments
Argument Description
expression The loop condition expression to be evaluated; it
may be one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Remarks
• When ISL encounters a While statement, it will execute all statements within the
While and its corresponding EndWhile command until the expression in the
The While example shown above is the standard method of using the Feof function
to test for the end of the file being processed.
endsub
• The While command can be nested within other While commands.
• The expression in the While command is similar to the conditional expression
within the If command.
Example
event inq : 1
while data_ok = 1
max_data = 10
while i < max_data
call get_next_line
i = i + 1
endwhile
endwhile
endevent
See Also
For, ForEver, and If commands; Feof function
Window
Description
This command will draw a window on the operator display and is required in order to
display information referenced by the various Display commands.
Syntax
Window row, column[, expression[{output_specifier}]...]
Table 111 Window Command Arguments
Argument Description
row The number of rows the window should
contain; valid entries are 1 to 14.
column The number of columns the window
should contain; valid entries are 1 to 78.
Remarks
• The row and column values in the window are a function of how much the
programmer needs to display. Refer to the Display commands to determine
these requirements.
• The optional window title may be a text string or a combination of user_variables
and string_variables.
• The maximum number of characters that will be displayed in the Window title is
the number of columns minus 1; extra characters will be truncated.
Example
The following script will read the information from Track 1 of a credit card and display it
in a window:
event inq : 1
var cardholder_name: a26
var account_num: n19
var expiration_date: n4
var track1_data: a79
window 3, 78
displaymsinput 1, 2, cardholder_name{m1, 2, 1, *}, “Enter Guest Name”, \
2, 2, account_num{m1, 1, 1, *}, “Enter Account Number”, \
3, 2, expiration_date{m1, 3, 1, 4}, “Enter Expiration”
windowinput
waitforclear
endevent
See Also
Display, DisplayInput, DisplayMSInput, WaitForClear, WaitForConfirm,
WaitForEnter, and WindowClose commands
WindowClose
Description
This command closes a currently displayed window.
Syntax
WindowClose
Example
The following script builds a window, displays some text, then closes the window (after
the operator presses [Clear]):
event inq : 1
window 1, 14
display 1, 2, “Hello” //”You say Hello”
waitforclear
windowclose
display 1, 2, “Goodbye” // ”and I say Goodbye” waitforclear
endevent
See Also
Window command
Window[Edit/Input][WithSave]
Description
One of these commands is required any time the DisplayInput and DisplayMSInput
commands are used. The WindowEdit and WindowInput determine whether or not the
contents of the variables are cleared before being displayed. The [WithSave] option, with
either command, determines how the input session will be terminated.
Syntax 1
WindowEdit[WithSave]
Syntax 2
WindowInput[WithSave]
Remarks
• When one of the WindowEdit or WindowInput commands is found, the SIM
will look for the first and subsequent DisplayInput or DisplayMSInput, since
the window was drawn and executes it. Therefore, the WindowEdit and
WindowInput command must be preceded by both a Window command and at
least one DisplayInput or DisplayMSInput command.
• The WindowEdit and WindowEditWithSave commands do not clear the
variables. If the input_variables contain data, the contents will be displayed in the
input window. These commands are useful when the operator must change only
a few fields or characters of a record. The WindowInput and
WindowInputWithSave commands clear the variables before they are
displayed. All previous information in the fields is lost after the command is
executed. These commands are useful for entering new information.
• WindowEdit\Input can be used with the Display[MS]Input commands to build
a screen of input fields in order to accept input from the user. Navigating among
the input fields is achieved with the movement keys: up arrow, down arrow,
Example 1
The following script will read the information from Track 1 of a credit card:
event inq : 1
var cardholder_name: a26
var account_num: n19
var expiration_date: n4
var track1_data: a79
window 3, 78
displaymsinput 1, 2, cardholder_name{m1, 2, 1, *}, “Enter Guest Name”, \
2, 2, account_num{m1, 1, 1, *}, “Enter Account Number”, \
3, 2, expiration_date{m1, 3, 1, 4}, “Enter Expiration”
windowinput
waitforclear
endevent
Example 2
The following script will allow input of customer information in a window:
event inq : 1
var name : a20
var address1 : a20
var address2 : a20
var city : a20
var state : a2
var zip : a10
var tel : a12
window 7, 33
display 1, 2, “ Name:”
display 2, 2, “ Address1:”
display 3, 2, “ Address2:”
display 4, 2, “ City:”
display 5, 2, “ State:”
display 6, 2, “ Zip:”
display 7, 2, “Telephone:”
endevent
See Also
DisplayInput, DisplayMSInput, and Window commands
Functions
In addition to commands, ISL provides a variety of functions to enhance text handling
and formatting facilities. Each function returns a value which may be useful for certain
applications.
All function arguments must be enclosed in parentheses.
Function Summary
The following table contains a list of function names, a brief description, and the function
type of the returned integer/character/key.
Table 112 ISL Function Summary
Syntax
Abs (integer or decimal)
Table 113 Abs Function Arguments
Argument Description
integer An integer expression to be converted.
decimal A decimal expression to be converted.
Example
event inq : 1
var int : N5 = -145
var mon : $8 = -12.35
waitforclear abs(int) //will display ‘145’
waitforclear abs(mon) //will display ‘12.35’
waitforclear abs(“-34”) //will display error
endevent
ArraySize Function
Description
This function returns the size (number of elements) of the array passed in.
Syntax
ArraySize (array_name)
Table 114 ArraySize Function Arguments
Argument Description
array_name The name of the array.
Remarks
The array name must be placed between the parentheses without brackets. For example,
the following references are illegal:
arraysize (list [ ])
arraysize (list [2])
The following entry is correct:
arraysize(list)
Example
The following subroutine returns the declared size (number of elements) of an array.
sub array_size
var array_test[100] : a50
waitforclear "Size of array_test is ", arraysize(array_test)
//Would prompt "Size of 100"
// array_test is
endsub
Syntax
Asc (string_expression)
Table 115 Asc Function Arguments
Argument Description
string_expression A place holder for text characters such as a
user_variable (string).
Remarks
The process of returning a value with the Asc function works opposite of the Chr
function.
Example
The following subroutine displays the ASCII value of the first character of a string:
sub asc_value
var asc_val : n3
asc_val = asc("MICROS")
waitforclear "The ascii value of M = ", asc_val
//Would prompt "The ascii
// value of M = 77"
endevent
See Also
Chr function
Bit Function
Description
This function will return the value (0 or 1) of a bit in a hexadecimal string.
Syntax
Bit (hex_string, bit_position)
Table 116 Bit Function Arguments
Argument Description
hex_string A place holder for the hexadecimal string
that will be examined.
bit_position The index of the bit whose value is desired.
Remarks
• The Bit function will generate an error if the string passed in contains non-hex
characters. For example, the following statement will generate an error since the
= character is not a hex digit:
Digit 1 2 3 4
Position
bit_position 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
digit value 1 2 F E
bit value 0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 0
Example
In the above example, the following command would result in i being set to 1.
i = bit(“12FE”, 7) //i will be set to 1
Thus in all hex_strings, bit_position 1 corresponds to the highest bit value in the first of
the string.
Chr Function
Description
This function returns a one-character string that is the character representation of the
integer passed in.
Syntax
Chr (integer)
Table 118 Chr Function Arguments
Argument Description
integer An integer in the range from 32 to 255.
Remarks
The process of returning a value with the Chr function is the opposite of the Abs
function.
Example
The following subroutine constructs the name of a POS company using ASCII values:
sub make_name
var ascii_array[6] : n3
var pos_king : a6
var arr_cnt : n3
ascii_array[1] = 77
ascii_array[2] = 73
ascii_array[3] = 67
ascii_array[4] = 82
See Also
Display command
CommandExists Function
Description
This function returns true if the SIM command exists
Syntax
CommandExists (string)
Table 119 Abs Function Arguments
Argument Description
String The string of the command
Example
event inq : 1
waitforclear CommandExists( “WaitForClear” )
endevent
DefKey Function
Description
This function returns a key value for LoadKybdMacro
Syntax
(see DefKey discussion in SIM addendum)
Env Function
Description
This function returns the value of a shell environment variable.
Syntax
Env (environment_variable)
Table 120 Env Function Arguments
Argument Description
environment_variable The environment variable to return.
Example
Assume that the environment variable “Term” is “ansi”:
var term : a20 = env("Term") //term will be "ansi"
Feof Function
Description
This function tests whether the file pointer is at the end of the file.
Syntax
Feof (file_number)
Table 121 Feof Function Arguments
Argument Description
file_number An integer variable which was assigned in the
FOpen statement when the file was opened.
Remarks
A 1 is returned if there is no more data left to read, and a 0 is returned if there is more
data left to be read.
Example
The following example shows how to use the Feof function as the condition of a
While command:
while not feof( fn )
call process_data( fn )
.
.
.
endwhile
See Also
FClose, FOpen, and While commands
FormatCheckData Function
Description
This function returns the image of the current check given the language ID.
Syntax
FormatCheckData (integer)
Table 122 Abs Function Arguments
Argument Description
Integer The language ID to use when formatting
FormatCurrentDate Function
Description
This function returns the formatted date/time with the given format string.
Syntax
FormatCurrentDate(string)
Table 123 Abs Function Arguments
Argument Description
String Format string. This method directly calls the
.net API System.DateTime.Now.ToString()
Example
event inq : 1
var text:A = FormatCurrentDate("yyyy/MM/dd HH:mm:ss" )
endevent
FormatDate Function
Description
This function returns the unformatted date/time with the given format string.
Syntax
FormatCurrentDate(string)
Table 124 Abs Function Arguments
Argument Description
String Format string. This method directly calls the
.net API System.DateTime.Now.ToString()
Example
event inq : 1
var text:A = FormatCurrentDate("yyyy/MM/dd HH:mm:ss" )
endevent
FormatStr Function
Description
This function will format a string given a format string and variable number of
arguments. This method uses the .net API String.Format() method.
Syntax
FormatStr(format,value1,value2,…)
Argument Description
Format The format string. See .net API documentation
for string.Format()
ValueX Elements to be formatted
Example
event inq : 1
var text:a = FormatStr( “Value must be between {0} and {1}”, min, max )
endevent
FormatValue Function
Description
This function returns the formatted value (integer, string, or decimal) given the format
string.
Syntax
FormatValue(value,string)
Table 126 Abs Function Arguments
Argument Description
Value The value to be formatted.
String Format string. This method directly calls the
.net API Int64, String, or Decimal method
Example
event inq : 1
var text:A = FormatValue(123, “N3”)
endevent
FTell Function
Description
This function returns the file position in a file.
Syntax
FTell (file_number)
Table 127 FTell Function Arguments
Argument Description
file_number An integer variable which was assigned in the
FOpen statement when the file was opened.
Example
The following example will read a certain field position:
sub find_emp
See Also
FClose, FOpen, FRead, FSeek, and While commands
FunctionExists
Description
This function returns the true if the SIM function exists
Syntax
FunctionExists (string)
Table 128 Abs Function Arguments
Argument Description
String The string of the function
Example
event inq : 1
waitforclear FunctionExists( “abs” )
endevent
GetHex Function
Description
This function will convert a Hex string to a decimal integer.
Syntax
GetHex (hex_string)
Argument Description
hex_string The string to be converted.
Remarks
• The GetHex function will generate an error if the string passed in contains non-
hex characters. The following statement will generate an error since the =
character is not a hex digit, for example:
i = gethex( "12AB=" )
• A string should be made up of any combination of the following characters 0- 9,
a - f, or A - F.
Example
The following subroutine converts a hex string to its decimal equivalent:
sub hex_2_dec
var hex_str : a4 = "FFFF"
waitforclear "The decimal equiv of 'FFFF' is ", gethex(hex_str)
endsub
GetValue Function
Description
This function returns the value of a key’s property. This method is useful to extract a
key’s individual components.
Syntax
FormatValue(key,string)
Table 130 Abs Function Arguments
Argument Description
Key The source key value
String The key to extract.
Example
event inq : 1
var myKey:key = defkey("Payment", N:2, A:"Cash:Cash")
endevent
Syntax
Instr (index, string_expression, character)
Table 131 Instr Function Arguments
Argument Description
index Starting position of the search for the
specified character
string_expression The string_expression to be searched; can be
one of the following:
• user_variable
• system_variable
• constant
• string
• function
• equation
Example
The following statement will set i equal to 5, since “E” is the 5th character in the string:
i = instr( 2, “ABCDEFGHIJ”, “E” ) //i will be set to 5
Key Function
Description
This function will execute the key function code defined.
Syntax
Key (key_pair)
Table 132 Key Function Arguments
Argument Description
key_pair A link to a specific workstation key in the
form of: key_type : key_number.
Remarks
• The key_type determines the type of key (for example, Function, Keypad); the
key_number designates the specific Key Code.
• For a list of key codes and names, see Key Types, Codes, and Names.
See Also
KeyNumber and KeyType functions
KeyNumber Function
Description
This function will return the key number (integer) portion of a key expression.
Syntax
KeyNumber (key_expression)
Table 133 KeyNumber Function Arguments
Argument Description
key_expression An expression that can be one of the following:
• @KEY ...system_variable
• user_variable (KeyType)
• Key function
Example
The following script reports the number and type of the [Enter] key:
event inq : 1
var key_var : a20 = "9,12"
window 3, 26
display 1, 2, “Enter key’s key pair is”, key_var
display 1, 2, “Enter key’s key type is”, keytype(key_var)
display 1, 2, “Enter key’s key number is”, keynumber(key_var) //keynumber = 12
waitforclear endevent
See Also
Key and KeyType functions
KeyType Function
Description
This function will return the key type (integer) portion of a key expression.
Syntax
KeyType (key_expression)
Argument Description
key_expression An expression that can be one of the following:
• @KEY ...system_variable
• user_variable (KeyType)
• Key function
Example
The following script reports the number and type of the [Enter] key:
event inq : 1
var key_var : a20 = "9,12"
window 3, 26
display 1, 2, “Enter key’s key pair is”, key_var
display 1, 2, “Enter key’s key type is”, keytype(key_var)//key_type = 9
display 1, 2, “Enter key’s key number is”, keynumber(key_var)
waitforclear
endevent
See Also
Key and KeyNumber functions
Len Function
Description
This function is used to determine the length of a string or string variable.
Syntax
Len (string_expression)
Table 135 Len Function Arguments
Argument Description
string_expression The string length to be returned.
Example
The following script takes a list of names from the PMS and tests each name for its
length. It then builds a window and displays the names. The longest string determines
the width of the window.
event rxmsg : guest_list
var guest_list_size : n3
var guest_list[14] : a78
var arrcnt : n3
var longestr : n3
Mid Function
Description
This function is used to extract text from a string. This function is not to be confused with
the Mid command.
Syntax
Mid (string_expression, start, count)
Table 136 Mid Function Arguments
Argument Description
string_expression A string or user_variable (string).
start The starting offset (character) within the field.
count The number of characters to be read.
Remarks
This command is similar to the BASIC language “mid$” function.
Example
The following subroutine searches a string for a specified character, starting at a specified
place in the string, then returns the location of the character. The extracted text is
compared to the desired characters. This example assumes that the calling routine
declares the following four variables, and defines the first three:
//start: n3 position in string to start search, 1 if not defined
// string :a?? string to search
// search_char :a1 character to search for
// charpos :n3 the subroutine will set this variable equal to the
// location where the search_char is found in the
// string; it will be 0 if search_char is not found
sub instr
if start <= 0 //If user didn't define start
// set it = 1
start = 1
endif
return
endif
endfor
charpos = 0 //If not found, set charpos = 0 endsub
SplitString Function
Description
This function will split the passed in value given the separator and return a .net
ArrayList.
Syntax
FormatValue(value,string)
Table 137 Abs Function Arguments
Argument Description
Value The value to split. This can be integer,
decimal, or string. All values will be
converted to strings before the split operation.
String The separator. This method uses the .net API
String.Split method.
Example
event inq : 1
// items will contain 4 elements.
var items:object = SplitString( “a,b,c,d”, “,” )
endevent
Str Function
Description
This function will convert the passed in value into a string.
Syntax
Str(value)
Table 138 Abs Function Arguments
Argument Description
Value The value to convert to a string. Integers and
decimals will be converted, strings will
remain as-is.
Example
event inq : 1
// items will contain 4 elements.
var items:object = SplitString( “a,b,c,d”, “,” )
endevent
Syntax
SystemVariableExists (string)
Table 139 Abs Function Arguments
Argument Description
String The string of the system variable
Example
event inq : 1
waitforclear SystemVariableExists( “ckemp” )
endevent
ToInteger Function
Description
This function returns an integer from a decimal value by removing the decimal point.
This assumes that the new value will be interpreted correctly. For example, the PMS will
know where the decimal is placed.
Syntax
ToInteger (decimal)
Table 140 ToInteger Function Arguments
Argument Description
decimal A decimal expression to be converted.
Remarks
The decimal point will be removed when returned.
Example
event inq : 1 var n : N5
n = 12.45 //n will equal ‘12’
n = tointeger( 12.45 ) //n will equal ‘1245’
endevent
Trim Function
Description
This function is used to remove leading and trailing spaces from text or variable fields.
Syntax
Trim (string_expression)
Argument Description
string_expression A string or user_variable (string).
Example
The following subroutine trims leading and trailing spaces from a string:
sub trim_spaces
var string : a32 = “ many spaces ” var trimmed_str : a11
trimmed_str = trim(string) //Result would be “many spaces”
endsub
TypeOf Function
Description
This function will return a string representation of the .net Type name passed in.
Syntax
TypeOf(value)
Table 142 Abs Function Arguments
Argument Description
Value The type name of the .net class. This name
does not have to be fully qualified. This allows
a script writer to troubleshot scripts when
class names do not appear to resolve to the
appropriate value.
Example
event inq : 1
// text will contain “System.String”
var text:A = TypeOf( “String”)
endevent
VarExists Function
Description
This function returns true if the user-defined variable exists at the current scope.
Syntax
VarExists(string)
Table 143 Abs Function Arguments
Argument Description
String Name of the variable
Example
event inq : 1
var myVar:n
var exists:n = VarExists( “myVar” )
endevent
Syntax
VarSize (user_variable)
Table 144 VarSize Function Arguments
Argument Description
user_variable The name of the user_variable to be “sized”.
Example
The following script displays the declared size of a very large string:
event inq : 12
var big_string : a200
waitforclear “BIG_STRING’S size is ”, varsize(big_string)
//would prompt “BIG_STRING’S size is 200”
Endevent
Variable Descriptions
• <error text>: specifies a detailed explanation of what the error condition or syntax
error may be.
• <line>: specifies the line number where the error occurred.
• <column>: specifies the column number where the error occurred.
• <error text ( )>: specifies a detailed explanation, including the specific erroneous
data, enclosed in parentheses.
Format 1
ISL error
<error text>
Example
ISL error
No match for event
Format 2
ISL error on line <line>
<error text>
Example
Example
Format 4
Another type of error occurs when the ISL expected specific text, but encountered
different text. This error is displayed as:
ISL error on line <line>
expected <text>, encountered <text>
For example, if the Format command is issued, and the as (which is required as part of
the syntax) is missing, the following error would display:
Format 5
Format 5 is for the KWS (Keyboard Workstation) only.
ISL error:<line number>
<error text>
Example
Error Messages
Array Index Out Of Range
This message occurs if an index number used to access a list_array is invalid.
var array[10] : N5
array[12] = 1 //Valid range is 1-10
array[-2] = 4 //No negative numbers
Decimal Overflow
This message occurs if an attempt to assign a value to a real exceeded the real’s storage
size.
var n : $3
n = 123.45 //n only holds 3 digits
Divide by Zero
This message occurs if an attempt was made to divide a numeric value by 0.
i = a / 0
Evaluation Nesting
This message occurs if an overly complex expression was specified on the command line.
i = (((((((((((((((((( a + 5 ))))))))))))))))))
A-Expected Decimal
There are places in ISL where the script writer must specify a decimal number (and not
an integer or a string). Using any expression other than a decimal expression results in
this error.
For example: the function tointeger() expects a decimal number as its argument.
i:N5
i = tointeger( 12.34 ) //OK
i = tointeger( 1234 ) //Not ok. 1234 is not
// decimal.
i = tointeger( "12.34" ) //Not ok. "12.34" is
// not decimal.
Expected Operand
This message occurs if an invalid expression was encountered.
var i : n5
i = 5 + //Invalid expression
Expected String
This message occurs if a command or function expected a string as one of its arguments,
and a non-string expression was encountered.
var i : n5
setstring i, “a” //n : 5 is a non-string
// expression
Integer Overflow
This message occurs if an attempt to assign a value to an integer exceeded the integer’s
storage size.
var n : N3
n = 12345 // n only holds 3 digits.
Length Invalid
This message occurs if the third argument in the Mid command and/or function was less
than 0.
Memory Allocation
This message occurs if an internal memory error has occurred.
No ISL File
This message occurs if the script was not found or did not exist.
No Ops on Strings
This message occurs if the declared string operation is not allowed.
a = “123” - “abc”
Not a Variable
This message occurs if a variable was expected but not encountered.
input 123, “Enter value” //123 not variable
String Overflow
This message occurs if an attempt to assign a value to a string exceeded the string’s
storage size.
var n : A3
n = “message” //n only holds 3 characters
Undefined Call
This message occurs if a Call was made to a subroutine that did not exist within the
script.
Undefined Function
This message occurs if an undefined function was called.
Undisplayable Variable
This message occurs if the variable cannot be displayed.
display 2, 3, @TRDTL //@TRDTL cannot be
// displayed
Unmatched Endevent
This message occurs if an Endevent was encountered without a corresponding
Event command.
Unmatched EndFor
This message occurs if a For/EndFor nesting error occurred.
Unmatched If
This message occurs if an If, ElseIf, Else, or EndIf nesting error occurred.
Variable Undefined
This message occurs if an undefined variable was referenced.
#include <stdio.h>
#include <fcntl.h>
#include <signal.h>
#include <sysexits.h>
#include <sys/types.h>
#include <netdb.h>
#include <tiuser.h>
#include <stropts.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/netinet/in.h> extern int t_errno;
/* operating-system specific device name: */
#define TCP_DEVICE_NAME “/dev/inet/tcp”
void run_sim_server(void)
{
int listen_fd, conn_fd;
struct sockaddr_in *sin;
struct servent *servp;
struct t_bind *bind;
struct t_call *call;
u_short serviceport;
int retries;
if (retries == 0) {
fprintf(stderr, “run_sim_server: could not get port %d\n”,
ntohs(serviceport));
t_close(listen_fd);
exit(EX_TEMPFAIL);
}
while (1) {
}
}
}
}
#define SOH 1
#define STX 2
#define ETX 3
#define EOT 4
#define ACK 6
#define NAK 21
if (n == 0) {
fprintf(stderr, “transfer_pos_messages: connection closed\n”);
close(fd); /* this connection is finished */
return;
}
case STX:
if(NEXT_STATE(sim_msg_id, sim_msg_data)) {
/* NUL-terminate header, and remember the position
* of the (upcoming) first byte of the body
*/
msg_buf[msg_buf_len++] = ‘\0’; body = &msg_buf[msg_buf_len];
}
case ETX:
if (NEXT_STATE(sim_msg_data, sim_msg_cksum)) {
/* NUL-terminate the body. */ msg_buf[msg_buf_len++] = ‘\0’;
}
else
STATE_ERROR
break;
case EOT:
if(NEXT_STATE(sim_msg_cksum, sim_msg_begin)) {
if (body[0] != ‘\0’)
process_pos_request(header, body, reply_body);
sprintf(reply_buf, “%c%s%c%s%c%c”,
SOH, header, STX, reply_body, ETX, EOT);
reply_len = strlen(reply_buf);
if (write(fd, reply_buf, reply_len) != reply_len) {
perror(“transfer_pos_messages: write”); close(fd);
return;
}
}
else
STATE_ERROR
break;
default: switch(state) {
case sim_msg_begin: case sim_msg_cksum: default:
}
}
}
}
Sample Makefile
Simtest: Simtest.o Simsrv.o
cc -o simtest simtest.o simsrv.o -lsocket -lnsl_s -lc_s
simtest.o: simtest.c
cc -c -W2 -strict -g simtest.c
simsrv.o: simsrv.c
cc -c -W2 -strict -g simsrv.c
Data Types
Table 145 Data Types
Alphanumeric Returns the These variables may include var name : a20
ASCII integer any non- control character,
value of the including punctuation marks.
first character They may comprise x
of the string characters.
Key key This system variable is used var keypressed :
for key press variables. key
NOT Will negate the result of the The NOT operator will negate
expression. The NOT operator the result of the expression.
can be applied to expressions For example, the following
in the same way as the unary expression is always TRUE:
minus operator.
(3<4)
The NOT operator will negate
the sense of the above
expression; thus the following
expression is always FALSE:
NOT ( 3 < 4 )
Binary Operators
Table 147 Binary Operators
division / Nx, $x
modulus % Nx, $x
plus + Nx, $x
minus - Nx, $x
bit-wise or | Nx
logical or OR Nx
C-System Variables
Table 148 System Variables
Format Specifiers
Input Specifiers
Table 149 Format Specifiers
Mn, field, start, count | * Mn: the track number (M1 or M2); this can be
followed by a star (*) to specify all fields on the
track, or use the following fields to read
specific information:
field: the field position within the specified
track; this is a positive integer.
start: starting offset (character) within the field;for
example, if one wants to take the lastfour
characters of the “Blaine Richard” string, the offset
would start at 11.
count: number of characters to be read from the start
(first character) to the end of the field (place an
asterisk * to include all characters)
For example:
Input auth_code{ M2,1,3,10
}, \ “Enter authorization
code”
Output Specifiers
The proper syntax for using the output_specifiers is as follows:
[<|=|>|*] [+] [0] [size] [D|X|O|B] [^] ["] [:format_string]
Output specifiers must also be placed in the order listed in the following table:
Table 150 Output Specifiers
Commands
Note that:
• All arguments enclosed in brackets [ ] are considered optional.
• The meaning of the data within the braces will be explained later.
Table 151 Commands
Functions
Table 152 Functions
What is a DLL?
The Simphony System Interface Module (SIM) can use Microsoft Windows Dynamic
Link Libraries (DLLs). DLLs are modules that contain functions and data. They provide a
way of separating applications into small manageable pieces that can be easily modified
and reused.
Dynamic Linking
Dynamic linking provides a means of giving applications access to function libraries at
run-time. DLLs are not copied into an application’s executable files. Instead, they are
linked to an application when it is loaded and executed.
Dynamic link libraries reside in their own separate files. Applications load them into
memory when they are needed, and share a single copy of the DLL code in physical
memory. A single DLL can be used by several applications simultaneously. This in turn
saves memory and reduces swapping.
Microsoft Windows allows only a single instance of a DLL to be loaded into memory at
any time. When a DLL is being loaded, Microsoft Windows checks all the modules
already in memory. If it doesn’t find a match, then it loads the DLL. If it does find a
match, and the matching module is a DLL, it doesn’t load it again.
The following are steps that an application takes when calling a function in a DLL:
• The application uses the LoadLibrary or LoadLibraryEx function to load the
DLL at run-time. This, for example, can be a .DLL or .EXE.
• The application calls the GetProcAddress function to get the addresses of the
exported DLL functions and it is mapped into the address space of the calling
process.
• The application then calls the exported DLL functions using the function pointers
returned by GetProcAddress.
Using DLLs
DLLs are used for three general purposes:
• Sharing components
• Encapsulating (hiding) data and code
• Performing system-level operations
Sharing Components
DLLs provide an easy way for multiple applications to share components. These
components can be:
• Code: a DLL provides one copy of its code for all applications that need it.
• Data: by storing and retrieving data, applications can communicate with each
other. The DLL provides a function for applications to store and retrieve data in
its data segment.
• Custom Controls: these can be placed in DLLs for use by multiple applications.
They can be written by developers and marketed as separate DLLs or used in
applications.
• Resources: icons, bitmaps, fonts, and cursors can be placed in DLLs. Device
drivers are also DLLs that provide system resources.
Customization
Using DLLs allows the flexibility of customization. Now the programmer is no longer
confined to the text based window that SIM uses for input and output. For example, one
could create a custom interface to a PMS that returns guest information to the Simphony
POS Operations module.
Third-party Development
If the programmer is not interested in writing DLLs, one can take advantage of DLLs that
can be, or already have been, written by a third party for Simphony SIM.
Creativity
Using the resources available with DLLs, fonts, bitmaps, cursors, etc. can be used to
create appealing user interfaces.
DLLLoad
The DLLLoad command is used to load the external DLL. It needs to be called only once
during the lifetime of the SIM script. The syntax is:
DLLLoad handle, name
Where handle is a SIM N9 variable, and name is a SIM string expression. The ‘name’
parameter is used to identify the DLL, and the resulting handle is stored in the ‘handle’
variable. An example of this would be:
var dll_handle:N9
DLLLoad dll_handle, “myops.dll”
If the command fails, then dll_handle will be 0. If not, then dll_handle is the handle
used for any further accesses for the other DLL functions.
DLLCall
The DLLCall command is used to call a function contained in the DLL. The syntax for
this command is:
DLLCall handle, dll_name( [parm1 [parm2 [parm3...]]] )
Where handle is the previously loaded library handle, dll_name is the name of the
function, and parm# are the optional parameters.
This command performs two tasks:
• Get the address of the function using the Microsoft Windows
GetProcAddress() function. If this function fails, then an ISL error is
generated.
• Call the DLL function.
Since it is not possible for SIM to check the validity of the parameters, it is up to the SIM
script writer to ensure that the proper number and type is used.
DLLCallW
The DLLCallW command is used for string variables. The value is interpreted as Unicode
data when passed back into SIM. This command calls a function contained in the DLL
with Unicode. The syntax for this command is:
DLLCallW handle, dll_name( [parm1 [parm2 [parm3...]]] )
Where handle is the previously loaded library handle, dll_name is the name of the
function, and parm# are the optional parameters.
This command performs the same tasks as DLLCall.
Since it is not possible for SIM to check the validity of the parameters, it is up to the SIM
script writer to ensure that the proper number and type is used.
DLLFree
The DLLFree command is used to free a loaded DLL. The syntax is:
DLLFree handle
Where handle is the handle obtained in a DLLLoad command. This function is
automatically called when OPS exits, or the SIM script is reread. It can be called to free
up resources loaded by the DLL.
Parameter Passing
There are three types of variables in SIM:
• integers
1 int a // integer
Integers
By Value
N1-N9 integers are passed in as 32-bit signed values. N10 and above are passed in as
pointers to a string which contains the numeric value expressed as a string.
For example, an N12 numeric variable whose value is 12345 will be passed in as “12345.”
If the number is negative, then a “-” will be the first character in the string. (The reason
for this is that a 32-bit integer can only have nine digits.)
By Value Examples
var a:N9 = 4
var b:N10 = 3012108000
DLLCall handle, my_function( a, 10, (1 + a) * 10, b )
The DLL prototype should look as follows:
void my_function( int p1, int p2, int p3, char *p4 );
The DLL function should expect these parameters:
4
10
50
“3012108000”
By reference examples
var a:N9 = 12
var b:N12 = 3012108000
DLLCall handle, my_function( ref a, ref b )
The DLL prototype should look like:
void my_function( int *p1, char *p2 )
The dll function should expect these parameters:
pointer to 12
“3012108000”
Strings
All string parameters are passed in as a pointer. When by reference, SIM will copy the
string data back into the original variable.
By Value
The string parameter is passed in as a pointer to a nul-terminated string.
By Value Examples
var a:A20 = “12345”
DLLCall handle, my_function( a, “hello” )
The DLL prototype should look like:
void my_function( char *p1, char *p2 )
The DLL function should expect these parameters:
“12345”
“hello”
By Reference
The string parameter is passed in as a pointer to a nul-terminated string. However, the
memory reference will be guaranteed to have allocated enough space for the declared
string.
For example, if a string is declared as A20 but is set to “12345,” then the string passed in
will be “12345,” but will have 20 characters allocated (not including the nul terminator)
The DLL can then write up to 20 characters into the string.
By reference example
var a:A20
DLLCall handle, my_function( ref a )
Monetary Data
All SIM monetary data ($ variables) are kept as strings internally. Each string consists of
the digits which make up the value. There is no representational difference between
monetary amounts and numeric data N10 and greater.
The difference between the two is determined by the operations allowed on the values.
The operations involved are the assignment and arithmetic ones.
Therefore, monetary amounts are passed to the DLL as numeric strings. However, they
will have the decimal point inserted into the proper place.
By Value
The string parameter is passed in as a pointer to a nul-terminated string. A ‘-’ will be
placed at the beginning of the string if it is negative.
By Value Example
var a:$12 = 12.34
DLLCall handle, my_function( a, a + 1.11, 5.67 )
The DLL prototype should look as follows:
void my_function( char *p1, char *p2, char *p3 )
The DLL should expect these parameters:
“12.34”
“13.45”
“5.67”
By Reference
The string parameter is passed in as a pointer to a 0-padded nul-terminated string. The
string will be padded with as many zeroes to make it the same as its declared length. A
$12 variable string will have 12 digits and one decimal point. (The nul is not included.)
By Reference Example
var a:$12 = 12.34
DLLCall handle, my_function( ref a )
The DLL prototype should look like:
void my_function( char *p1 )
The DLL should expect these parameters:
“0000000012.34”
// Passing in by value.
// DLL prototype should be: void my_function( int array[] );
DLLCall handle, my_function( array[] )
// Passing in by reference.
// DLL prototype should be: void my_function( int *array[] );
DLLCall handle, my_function( ref array[] )
// Passing in by value
// DLL prototype should be:
// void my_function( char *array1[], char *array2[] );
DLLCall handle, my_function( array1[], array2[] )
// Passing in by reference
// DLL prototype should be:
// void my_function( char *array1[], char *array2[] );
DLLCall handle, my_function( ref array1[], ref array2[] )
Note: If the DLL itself has an error in the function, or the wrong values
are passed into it, the Ops process of the workstation running the SIM
application will fail, and a signal 11 error will display on the server.
To correct this problem, restart the workstation from the System/Control
Workstations module within the Enterprise Management Console
(EMC).
Overview
SIM events can be categorized as:
• Directly triggered by a keystroke (for example, INQ and TMED)
• Indirectly triggered by an event in Ops (for example, SIGN_IN and
FINAL_TENDER)
• Triggered by a SIM script (for example, TIMER and RXMSG)
Event-Specific Variables
Many of the events have system variables (for example, @ variables) that are specific to
that event only.
END_EVENT Unused
O N ERR_MSG Error message has occurred @errormessage - error message
event mi
waitforclear “You have entered menu item ” , @obj
endevent
When a menu item key is first pressed, the confirm event will be run first. If the user
presses the Clear key, the ordering of the menu item will be cancelled. If Enter is pressed,
the item will be ordered, and the normal event will be run afterwards.
Note: One important point about confirm events is that, like the normal events, each
SIM script will have a chance at running it. That means that each SIM script will be
able to cancel the operation. It should not be assumed that allowing an operation in a
confirm event will result in the operation taking place.
In addition, a particular item cannot be specified. The events occur for all items (menu
items, discounts, tenders, etc.).
event inq:2
call Sub1()
endevent
sub Sub1()
call Sub2()
endsub
sub Sub2()
call Sub3()
endsub
sub Sub3()
pancakes
endsub
When “inq:2” is run an exception window with two tabs will be raised:
If one wanted to access separately compiled code in other products the only options
were:
• Create a C DLL
• Run the ‘system’ command
While both work they can be awkward. The characteristics of SIM.net are:
• A new data type: “object”. It is peer level with N, A, and $. For example: var
sb:object
• Object data types are always .net objects.
• The .net objects can be either .net framework objects such as StringBuilder or
custom objects
• Object data types are weakly typed. There is no compilation phase on a SIM
script. When a method, field, or property is accessed SIM uses reflection at the
moment of expression evaluation to determine if the reference is valid.
• Since objects are weakly typed they can be assigned different types during their
lifetime. For example, an object ‘X’ can be a StringBuilder on one line and an
Int32 on the next.
• Static references are supported.
• The syntax for creating and referencing objects has been kept as close to the C#
syntax as possible.
Limitations (current):
• One cannot create new class definitions as one can in C#.
• Nested class references not supported. That is, one cannot access in SIM a class
nested in another class.
• Generic instantiations not support. Use non-generic equivalents. For example,
List<string> is not available. Use ArrayList.
• User-written DLLs are not supported on iPad
• .net arrays cannot be created even though they can be accessed. To create one use
ArrayList.
• The .NET framework on Microsoft Windows CE is more limited that the full
framework on Win32. Use MSDN to verify which properties/fields/methods are
available for your objects.
• No support for foreach. Use iterators (sample below).
• No support for delegates.
SIM.net G-1
Construction
• Objects are constructed using the ‘new’ keyword in the same was as C#.
• Overloading of constructors is supported. SIM will try to match the most
appropriate constructor. Note the word ‘try’. If there are multiple constructors
then SIM will first match on parameter count. After that SIM will try to find the
first matching constructor. Unfortunately SIM can ‘guess’ wrong and the method
rejects the attempt. The solution is to try a different constructor. If you encounter
a constructor that makes it impossible to create an object please post on the
Sharepoint site so that we can look into it.
Examples:
var sb:object
// overloaded
sb = new System.Text.StringBuilder()
sb = new System.Text.StringBuilder( "this is a string" )
Usage
It would be difficult to explain all usages so the following script shows the power of
SIM.net and also how to access the various .net types. The following simple script shows
how one could leverage .net in a SIM script.
// Params support
text = System.String.Format( "hello world" )
text = System.String.Format( "hello world {0}", 0, 1, 2 )
text = System.String.Format( "hello world {0} {1}", 0, 1 )
text = System.String.Format( "hello world {0} {1} {2}", 0, 1, 2 )
text = System.String.Format( "hello world {0} {1} {2} {3}", 0,
System.Convert.ToDateTime( "11/22/2003" ), 2, 3 )
G-2 SIM.net
Access to C# extensibility events
The C# extensibility provides a very rich set of events that until recently was not
available to SIM. Starting with version 2.6 (build 0.99) SIM has complete access to all
extensibility events and their arguments. The C# extensibility events are much more
detailed and there are many more of them.
It is easiest to explain with an example script dealing with the sign-in event.
The legacy way to hook into the sign in event was the “sign_in” keyword:
event sign_in
@OpsContext.ShowMessage( "inside sign_in " )
endevent
event init
SubscribeToEvent "OpsSignInEvent", "SignInEvent"
endevent
The ‘event’ command now has a new syntax for these new event types. It is compatible
with the old syntax. The new event syntax is:
Notes:
• The only parts of the event syntax that you can change are scriptEventName,
senderVariableName, argsVariableName. The rest of the line must remain exactly as
is. For example, the following lines will not work:
o event OpsSignInEvent( ref sender, ref args )
o event OpsSignInEvent( sender, args )
SIM.net G-3
• You may name the ‘sender’ and ‘args’ variables anything you like but you may
want to keep them as ‘sender’ and ‘args’ to keep them consistent with the .net
framework eventing style.
• You do not have to cast the args to the type appropriate for the event. SIM uses
late binding for all object types and therefore you can access any field directly
from args.
• The sender and args variables are the same as what is passed into a C#
extensibility EventMonitorDelegate delegate.
• When subscribing to events consult the extensibility documentation for a list of
all event types and event arguments.
• When a script is ‘destroyed’ (for example, when a change is made to the script in
EMC while OPS is running) all events will automatically be unsubscribed.
• ExitContinue will allow any preview event to continue, ExitCancel will abort the
event. ExitCancel has no meaning on non-preview events.
Multiple Subscriptions
A script can subscribe to the same event (for example, “OpsSignInEvent”) with multiple
SIM event handlers. For example:
event init
SubscribeToEvent "OpsSignInPreviewEvent",
"SignInPreviewEvent"
SubscribeToEvent "OpsSignInPreviewEvent",
"SignInPreviewEvent2"
endevent
G-4 SIM.net
// this will be called twice
event SignInPreviewEvent( var sender:object, var args:object )
var text:A = System.String.Format( "Sign in preview event:
employee {0}", args.EmployeeID.Value )
@OpsContext.ShowMessage( text )
endevent
Accessing args properties
This example shows how to access the EmployeeID field on args in the preview event.
This example shows how to access the object number field in the menu item master in the
OpsMiEvent.
event init
SubscribeToEvent "OpsMiEvent", "MiEvent"
endevent
Exception handling
In previous SIM implementations it was not possible to ‘catch’ errors in a script. SIM has
implemented a try/catch mechanism with the following characteristics:
• All SIM exceptions are .net objects. Therefore any exceptions thrown by SIM and
regular .net framework objects are equivalent.
• Try/catches can be nested.
• One can only catch a single exceptions. In .net one can have multiple catch
statements per ‘try’, in SIM there is only one catch statement
• There is no ‘finally’.
• One can throw an exception in SIM as a way of unwinding the stack in a more
graceful way.
Example:
event inq:1
try
call TestTryCatch2()
catch ex
// many options; log to disk, raise error window, ...
Outputdebugstring ex.Message
SIM.net G-5
Outputdebugstring ex.Details
Outputdebugstring ex.SimStackTrace
endtry
endevent
sub TestTryCatch2()
call TestTryCatch3()
endsub
sub TestTryCatch3()
throw new System.Exception( “exception inside sim” )
endsub
PrintSimFeatures
The PrintSimFeatures command is used to print out all commands, system variables, and
functions for the current build. The syntax is:
PrintSimFeatures printer_object_number
These two objects are discussed in the extensibility documentation. SIM provides access
to them via these two system variables. Since they are both .net objects one can access
them in the same way that one would access .net framework objects.
event inq:1
@OpsContext.ShowMessage( System.String.Format( "The current
seat is {0}", @OpsContext.ActiveSeat ) )
endevent
event inq:2
var dbObject :object
// discount
dbObject = @DataStore.ReadDiscountByNum( 1 )
call ShowObjectName( dbObject )
G-6 SIM.net
endevent
The first statement is used in a production environment when OPS writes the DLLs to
disk from the database. The second form is used to load the DLL from a disk file. (Note
the &) This can make troubleshooting DLLs much easier as they do not have to go into
the database first. And example of the second one is:
One can also put namespaces in the NetImport command immediately after the
NetImport word. The namespaces are separated by a comma and are equivalent to the
‘using’ statement in C#.
NetImport SimTestLibrary.Classes, \
SimTestLibrary.Definitions \
from "SimTestLibrary.dll"
NetImport statements must be at the top of a SIM script and cannot be run inside an
event or sub. Once the assembly has been imported it can be referenced by SIM. The
following is a sample c# class called “TestClass”.
using System.Collections.Generic;
using System.Reflection;
using System.Text;
namespace SimTestLibrary.Classes
{
public enum Colors
{
Blue = 20,
Red,
Green,
}
SIM.net G-7
public enum Colors
{
Blue = 20,
Red,
Green,
}
// Constructors.
public TestClass()
{
}
// Properties
public int IntProperty
{
get { return m_IntProperty; }
set { m_IntProperty = value; }
}
// Indexers
public string this[ string s ]
{
get { return s.ToUpper(); }
}
G-8 SIM.net
public int IntField = 5;
event inq:1
// Overloaded constructors
var obj:object = new TestClass()
obj = new TestClass( 1 )
obj = new TestClass( 1, "asildjlasdjklaj" )
// Properties
obj.IntProperty = 12312
var i:n = obj.IntProperty * 2
var text:A = obj.StringProperty
// Functions on object.
text = obj.GetString().ToUpper()
text = obj.GetString( "aaa" ).ToUpper()
text = obj.GetString( "aaa", "bbb" ).ToUpper()
// Array access.
i = obj.ArrayField[ 2 ]
// Field access.
obj.IntField = 123
i = obj.IntField
// Function call.
text = obj.Concatenate( "a", "b", "c" )
// Enums.
SIM.net G-9
var num:n
num = SimTestLibrary.Classes.Colors.Blue
num = SimTestLibrary.Classes.TestClass.Colors.Blue
num = SimTestLibrary.Classes.TestClass.Colors.Green
// Generics access.
var dictionary : object = TestClass.StaticDictionary
text = dictionary[ 1 ]
OutputDebugString TestClass.StaticDictionary.ContainsKey( 2 )
endevent
G-10 SIM.net
Glossary
Argument
An argument is a generic term for an item or group of items that is used in the syntax of
a command that refers to the information that is required by the command. It may be an
alphanumeric character, group of characters, or word(s) that receive the action of a
command or function. For example, the Call command requires an argument (such as the
variable name) in order to work.
See also: Array, Constant, Equation, Expression, Function, Input Expression, Prompt
Expression, String Expression, Syntax, System Variable, and User Variable.
Array
An array is a set of values, based on the name of a User Variable. A User Variable Array
(or Array Variable) identifies each value by the variable name and the index number, in
brackets. For example, an Array called Rooms that has 20 values would be identified
from Rooms [1] to Rooms [20].
See also: User Variable
Concatenate
Concatenate means to join two or more text strings together to form a single contiguous
string.
Constant
A constant is a value that does not change (the opposite of a variable). For example, the
Window command can use a constant (such as window 5, 36).
See also: Expression and Variable
Equation
An equation is a mathematical formula. The ISL may use the following operators within
a formula: addition (+), subtraction (-), division (/), multiplications (*), greater than (>), or
less than (<). Parentheses may be used to isolate parts of the equation, as necessary.
See also: Expression, Formula, and Operator
Expression
An expression is a place holder argument that can be one of the following:
• User Variable
• System Variable
Glossary H-1
• Constant
• String
• Function
• Equation
See also: Argument, Hex Expression, Input Expression, Numeric Expression, and String
Expression
Format Specifiers
See Operators.
Formula
A formula can be used to calculate numeric values, compare one value to another, and
select an action based on a comparison, and join multiple string expressions into a single
string. The ISL may use the following operators within a formula: addition (+),
subtraction (-), division (/), multiplications (*), greater than (>), or less than (<).
Parentheses may be used to isolate parts of the equation, as necessary.
See also: Equation and Operator
Function
A function is a built-in ISL procedure used to evaluate fields, make calculations, or
convert data.
See also: Expression
Global Command
A global command is a command that is allowed outside of an event procedure. They
are initialized at the beginning of each script and then maintained for the duration of that
script. The following ISL commands are global:
• ContinueOnCancel
• DiscardGlobalVar
• ExitOnCancel
• Prorate
• RetainGlobalVar
• SetSignOnLeft
• SetSignOnRight
• UseBackUpTender
• UseCompatFormat
• UseISLFormat
• UseISLTimeOuts
• UseSTDTimeOuts Var
See also: Local Command
H-2 Glossary
Global Variable
A global variable is declared outside an event procedure, and usually initialized at the
beginning of each script. The value of each global variable is maintained throughout all
Events, unless the script is changed or the DiscardGlobalVar command is used.
See also: Local Command
Hex Expression
A hex expression is a variable or function whose value must be a hexadecimal number.
This variable is used with the GetHex and Bit functions.
See also: Expression
Input Expression
An input expression is an Array or User Variable that requires user input. The input
expression is used by the DisplayInput, DisplayMS, Input, and InputKey commands.
See also: Array, Expression, and User Variable
Integer
An integer is a positive or negative whole number or a zero, always without decimal
places.
ISL
See Interface Script Language.
Language Element
Language Elements are indivisible pieces of information which, if broken apart with
whitespace, will generate an ISL error. The following items are considered language
elements:
• Command Names
• Function Names
• System Variables
• Relational and Boolean Operators
• Input and Output Specifiers
• Comment Symbols (//)
• Continuation Line Symbol (\)
Glossary H-3
• Commas
• Any Word and/or Symbol required by the Syntax
Local Command
Most ISL commands are considered local commands, in that they must be placed inside
an Event procedure and only affect the processing within that event.
See also: Global Command
Local Variable
A local variable must always be declared inside an event procedure, and will only be
used by the event and any subroutines called by that event. Local variables are purged
after each event is complete, (when an EndEvent is executed).
See also: Global Variable
Nesting
Nesting is the act of using an If, For, Forever, or While command inside another. Since
each of these commands is executed until its corresponding EndIf, EndFor, or EndWhile
command is found, the entire If...EndIf, For...EndFor, ForEver...EndFor, or
While...EndWhile nest must exist before the outer End... command. Nesting also refers
to the ability to call a subroutine from within another subroutine.
Null String
A null string (" ") is a string expression that contains no characters. All string variables
are initially set to null at the beginning of each Event procedure.
See also: Expression and Variable
Number of Records
Number of Records is used to send and receive variable amounts of data via a list or a
list array.
Numeric Expression
A numeric expression is a variable or function whose value must be a number. A
number expression is used when specifying a touchscreen number within the Simphony
database.
See also: Expression
Offset
An offset is a decimal integer that is used to calculate a position of a field within a string.
For example, this may be used to extract certain field information from a credit card.
H-4 Glossary
Operator
An operator is a mathematical symbol that determines what action is taken on variables
or constants in the equation. For a complete list of operators, see Relational and Logical
Operators.
See also: Expression and String Expression
Script
A Script contains a series of commands, functions, and arguments that perform a
particular task at the workstation and/or the PMS.
SIM
See System Interface Module.
String
A string is a series of connected characters (letters, numbers, symbols, spaces) stored and
used as text. In ISL, a string is always in quotes.
See also: Subroutine and User Variable
String Expression
A string expression is a variable or function whose value must be a string. See also:
Expression
Subexpression
A subexpression is an expression within an expression. Subexpressions are used with
binary operators. For example in the following expression: a + (b + c) + d, (b
+ c) is a subexpression.
See also: Expression and Operators
Subroutine
A subroutine allows common code to be used by multiple events. Each subroutine has a
unique name which is used to define it within the script, outside any event procedure.
Use the Call command to execute a subroutine.
Syntax
A command or function syntax is used to show the proper usage and rules that are
required to execute it correctly within a script.
Glossary H-5
System Variable
A system variable is a predefined name that identifies a value which contains
information from the Simphony database.
See also: Argument and Expression
Token
A token can be any individual language element inside a script. See also: Language
Element and Token Error.
Token Error
A token error can occur any time an individual language element is used incorrectly. For
example, incorrect use of whitewashes, missing commas, or erroneous data at the end of
a command statement, and so on. See Appendix A for a complete list of error messages.
See also: Language Element and Token
TTY
See Asynchronous Serial Interface.
User Variable
A user variable is a user-defined name which is assigned a value within a script. The
value will remain the same until a newer value is assigned; if no newer value is assigned,
the original value is maintained.
See also: Argument and Expression
Variable
A variable is a container whose value changes (the opposite of a constant). See also:
Constant
H-6 Glossary