You are on page 1of 129

MySabre Scribe

SCRIPTING REFERENCE

GUIDE
Table of Contents

Table of Contents ...................................................................................................................... 1


Introduction ................................................................................................................................ 3
Overview ............................................................................................................................... 3
How this Reference Is Organized.......................................................................................... 4
Understanding Command and Feature Descriptions............................................................. 5
MySabre Scribe Commands Overview ...................................................................................... 7
CALL ..................................................................................................................................... 8
CHAIN................................................................................................................................. 10
CLOSE................................................................................................................................ 12
DEFAULT............................................................................................................................ 13
DEFINE............................................................................................................................... 14
DELETE .............................................................................................................................. 16
EMUFIND............................................................................................................................ 17
EXIT .................................................................................................................................... 35
EXTERNAL ......................................................................................................................... 36
GOTO ................................................................................................................................. 38
IF/THEN/ENDIF .................................................................................................................. 40
IF/THEN/ELSE/ENDIF ........................................................................................................ 41
IF/ELSEIF/ELSEIF/ENDIF .................................................................................................. 43
IF/ELSE/IF/ELSE/ENDIF (Nested IFs) ................................................................................ 45
MENU/ENDMENU .............................................................................................................. 47
OPEN.................................................................................................................................. 51
READ .................................................................................................................................. 52
RENAME............................................................................................................................. 57
REPEAT/UNTIL .................................................................................................................. 58
REQUIRE............................................................................................................................ 59
RETURN ............................................................................................................................. 61
SPAWN............................................................................................................................... 63
SUBROUTINE/ENDSUBROUTINE..................................................................................... 65
WAIT ................................................................................................................................... 67
WHENEVER/ENDWHENEVER .......................................................................................... 68
WHILE / ENDWHILE........................................................................................................... 71
WINDOW/ENDWINDOW .................................................................................................... 73
WRITE ................................................................................................................................ 75
MySabre Scribe Extended Features ........................................................................................ 79
CSV:.................................................................................................................................... 80
EMAIL: ................................................................................................................................ 82
OPEN EXEC: ...................................................................................................................... 84
GLOBAL VARIABLES......................................................................................................... 85
Appendix A .............................................................................................................................. 86
System Variables ................................................................................................................ 86
Predefined Command Buttons ............................................................................................ 89
Generic Command Buttons ................................................................................................. 90
Switches.............................................................................................................................. 92
Appendix B .............................................................................................................................. 93
System Error Codes............................................................................................................ 93
Appendix C .............................................................................................................................. 94
Compiler Error Messages ................................................................................................... 94
Appendix D ............................................................................................................................ 120
Run Time Error Messages ................................................................................................ 120
Glossary................................................................................................................................. 123
Index ...................................................................................................................................... 126

Edition 1.2 (December 2007)

© 2007 Sabre Inc. All rights reserved.

This documentation is the confidential and proprietary intellectual property of


Sabre Inc. Any unauthorized use, reproduction, preparation of derivative
works, performance, or display of this document, or software represented by
this document, without the express written permission of Sabre Inc. is strictly
prohibited.

Sabre, Sabre Travel Network, the Sabre logo design,


MySabre, MySabre Scribe, and MySabre Scribe
Developer, the Sabre logo design and Personal Trainer
are trademarks and/or service marks of an affiliate of
Sabre Inc. All other trademarks, service marks, and trade
names are owned by their respective companies.
MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Table of Contents 2
Introduction

Welcome to MySabre Scribe® software! MySabre Scribe software is a PC-based


scripting development software package. It allows you to automate and customize
Sabre® computer reservation system processes through the development of scripts.

Overview

Who Should This manual is intended as a reference for anyone planning to build scripts. It is
Use this designed for agents who have attended the MySabre Scribe Basic class.
Reference?
This reference complements the materials provided in the class to assist you in
developing the basic skills necessary to write your own scripts. It assumes you are
familiar with basic Sabre system formats and basic travel industry terminology and
knowledge.
Whether you are an existing MySabre Scribe software developer or a newcomer to
the scripting world, you should soon be able to create basic or sophisticated scripts
for your office through the use of MySabre Scribe software.
MySabre Scribe software is designed for use by people without programming
background; however, programming experience is recommended for developing
complex scripts.

Purpose of This reference provides information to help you design and develop scripts. It
this contains detailed information about the MySabre Scribe scripting language,
Reference including:
A description of each command, showing the correct syntax and an example
A listing of the steps required—a suggestion for completion of a successful script
A listing of error messages for the MySabre Scribe software
After attending the MySabre Scribe Basic class, you will find this reference manual a
useful tool when building scripts. As your skills increase, you can expect to apply
more and more elements contained in this manual.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Introduction 3


How this Reference Is Organized

The remainder of this reference includes:


Section 2 - MySabre Scribe Commands
Lists the commands with the function, syntax, and uses for each along with
sample code to help you build your script
Section 3 - MySabre Scribe Extended Features
Lists the extended features with the function, syntax, and uses for each along
with sample code to help you build your script
Appendix A - System Variables
Shows the names and attributes of the MySabre Scribe system variables
Appendix B – System Error Codes
Lists the system error codes and their translations
Appendix C – Compiler Error Messages
Provides the messages displayed, their translations, and course of action
Appendix D - Runtime Error Messages
Lists the messages displayed during execution of a script on the agent’s
workstation
A glossary and index are also available to help you find information in this reference.

Related In addition to this reference, Sabre Travel Network has a variety of information and
Documents training available:
and Training
Scripting Guide which helps you develop good scripts
Installation Guide which helps you to install MySabre Scribe software
All this documentation and training complements the information provided in your
MySabre Scribe Basic classroom training.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Introduction 4


Understanding Command and Feature Descriptions

Conventions The commands and features descriptions include the following conventions:
used in
subsections
Syntax: Describes the structure, parameters, and rules for the
command.
Description: Provides an explanation of the command and its purpose.
Example: Provides one or more code examples using the command in
a script.
Comments: Provides possible uses of the command and references to
other commands for this task.
In the syntax and description of the commands, the following conventions appear for
clarity:
KEYWORDS Bold type indicates text that must be typed exactly
as illustrated. Text that is illustrated in bold type
includes commands and special characters, including
punctuation.
Required Parameters Terms in bold italics that appear in the syntax
descriptions or text are being used as place holders
that you must replace with specific terms or values
in your script. For example:
CALL name
name appears in italics to indicate that you must
supply a specific identifier for the parameter name.
Optional Parameters Standard italics indicate a parameter that is not
required. For example:
MENU
R=xx C=yy H="alphanumeric text"
In this command, the attribute R=xx, for row, is
optional. If this parameter is omitted, the software
assigns default values.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Introduction 5


Repeating Elements Vertical ellipsis dots are used in the examples and in
syntax to indicate that a portion of the program is
omitted. For example:
IF name = (expression)
THEN
statement
ELSEIF name = (expression)
THEN
statement
.
.
.
ENDIF
Horizontal ellipsis illustrate that more items of the
same form may appear. For example:
= (expression [, expression]…)
• indicates that one or more expressions separated by commas may appear between
the parentheses ().

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Introduction 6


MySabre Scribe Commands Overview

MySabre Scribe uses the following commands:

• CALL
• CHAIN
• CLOSE
• DEFAULT
• DEFINE
• DELETE
• EMUFIND
• EXIT
• EXTERNAL
• GOTO
• IF/THEN/ENDIF
• IF/THEN/ELSE/ENDIF
• IF/ELSEIF/ELSEIF/ENDIF
• IF/ELSE/IF/ELSE/ENDIF (Nested IFs)
• MENU/ENDMENU
• OPEN
• READ
• RENAME
• REPEAT/UNTIL
• REQUIRE
• RETURN
• SPAWN
• SUBROUTINE/ENDSUBROUTINE
• WAIT
• WHENEVER/ENDWHENEVER
• WHILE / ENDWHILE
• WINDOW/ENDWINDOW
• WRITE
For an explanation of conventions used in this section, please see ‘Understanding
Command and Feature Descriptions’.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 7
CALL

Description Use this command to invoke a subroutine in the same script.

Syntax CALL Subroutine_name

Where Subroutine_name
The name of the subroutine to be invoked. This name must match the characters and
length of the corresponding parameter in the SUBROUTINE command.
Note: Do not use the terminating colon of the subroutine name in the CALL
command. When this statement is executed, the script advances to the
location of the subroutine. Upon completion of the subroutine, control
automatically returns to the line following the original CALL command.

This command enables you to re-use sections of your script instead of


duplicating the commands at each calling location. This reduces the size of
your scripts.

The subroutine will only be executed if it is invoked by a CALL command.


Example:

WINDOW

R=11 C=80
Origin City: [ORIGIN.CTY] Destination City: [DESTIN.CTY]
Departure Date: [DEPART.DATE] Departure Time: [DEPART.TIME]
ENDWINDOW

IF [DESTIN.CTY] = "COS" OR [DESTIN.CTY] = "DEN" OR [DESTIN.CTY] =


"WBU" THEN
CALL SPECIAL
ENDIF

»1[ORIGIN.CTY][DEST.CTY][DEPART.DATE][DEPART.TIME]{ENTER}«

SUB SPECIAL:
WINDOW
R=13 C=5 H="Special Car Rate Available"
Offer the customer the SPECIAL ABC Travel Rental Car rate
with XYZ Car Rental Company.
ENDWINDOW
ENDSUB

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 8
In this example, if the agent enters one of the city codes COS, DEN, or WBU in the
destination city variable, the script will call the subroutine “SPECIAL”. The
subroutine “SPECIAL” will display a reminder message to the agent and then
execute the availability command.
See Also: SUBROUTINE/ENDSUBROUTINE, RETURN, CHAIN, GOTO

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 9
CHAIN

Description This command terminates the script containing the command and begins execution of
another script.

Syntax CHAIN expression

Where expression
Evaluates to the name of the next script to be executed. The expression could be a
character string, a variable, or an equation.
Note: Existing scripts containing script_name without quotation marks are
still supported in this release.

The CHAIN command enables you to create modular scripts.

Use EXTERNAL variables to pass user input or other variable contents to


the specified script. You can create a series of “mini-scripts” and reuse the
same source code customized by the EXTERNAL variables.

If you want to pause this script, execute another script and return to this one,
use the SPAWN command.

If the script you specify does not exist, execution stops and an error
message displays. For example, if script “A” chains to script “B”, and script
“B” does not exist, the script “A” stops processing when it executes the
CHAIN command.
Example:

WINDOW

R=1 C=80
Origin City: [ORIGIN.CTY] Destination City: [DESTIN.CTY]
Departure Date: [DEPART.DATE] Departure Time: [DEPART.TIME]
ENDWINDOW

IF (([DESTIN.CTY] >= "AAA") AND ([DESTIN.CTY] < ="AZZ")) THEN


CHAIN "CITYA"
ELSEIF (([DESTIN.CTY] >= "BAA") AND ([DESTIN.CTY] <
="BZZ")) THEN
CHAIN "CITYB"
ELSEIF (([DESTIN.CTY] >= "CAA") AND ([DESTIN.CTY] <
="CZZ")) THEN
CHAIN "CITYC"
ELSEIF (([DESTIN.CTY] >= "DAA") AND ([DESTIN.CTY] <
="DZZ")) THEN
CHAIN "CITYD"
ELSEIF (([DESTIN.CTY] >= "EAA") AND ([DESTIN.CTY] <
MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 10
="EZZ")) THEN
CHAIN "CITYE"
ELSEIF (([DESTIN.CTY] >= "FAA") AND ([DESTIN.CTY] <
="FZZ")) THEN
CHAIN "CITYF"
ELSEIF (([DESTIN.CTY] >= "GAA") AND ([DESTIN.CTY] <
="GZZ")) THEN
CHAIN "CITYG"
ELSEIF (([DESTIN.CTY] >= "HAA") AND ([DESTIN.CTY] <
="HZZ")) THEN
CHAIN "CITYH"
.
.
.
.
ENDIF

In this example, the script prompts the agent to enter travel information into a
window that includes the destination city/airport codes. If the agent enters the airport
code “BOS”, the first ELSEIF statement would be TRUE. The script would then
CHAIN to the script “CITYB”, terminating the original script and beginning the
execution of the script “CITYB”.
See Also: SPAWN, EXTERNAL, SUBROUTINE/ENDSUBROUTINE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 11
CLOSE

Description This command closes a file that has been opened with the OPEN, READ, or WRITE
command.

Syntax CLOSE file_path

Where file_path
Evaluates to the fully qualified path and file name of the file to be closed. The
file_path could be a character string, or a variable.
Note: Any open files are closed automatically when MySabre Scribe terminates.

This command enables you to close files before the user terminates the
script. Any changes made to the open file are saved.

This command provides added flexibility to close files, allowing other users
to access or write information to data files, rather than waiting until
MySabre Scribe terminates.
Example:
CLOSE "F:\THIRD\WINWORD\DATAFILE.TXT"

In this example, the file DATAFILE.TXT is closed.


See Also: READ, WRITE, OPEN, DELETE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 12
DEFAULT

Description This command enables you to specify a default value for a script variable.

Syntax DEFAULT [Variable_name] = expression

Where Variable_name
Is the name of a defined variable for this script.
expression
Evaluates to the default value to be displayed each time the variable specified in
Variable_name is used in the script.
Note: The value displays in the variable whenever it is used in an input field. Each
subsequent window that uses the variable displays the assigned value from
the DEFAULT statement. Any change to the value of the input variable
must be processed prior to its use in a subsequent window. A new
DEFAULT command must be used to change the value in subsequent
displays.

Using a DEFAULT value can help reduce the keystrokes and time required
for frequently repeated input. This format allows the agent the flexibility of
changing the value only when necessary for a particular transaction.
Example:

DEFAULT [ORIGIN.CTY] = "LAX"

WINDOW

R=1 C=80

Origin City: [ORIGIN.CTY] Destination City: [DESTIN.CTY]

Departure Date: [DEPART.DATE] Departure Time: [DEPART.TIME]

ENDWINDOW

»1[ORIGIN.CTY][DEST.CTY][DEPART.DATE][DEPART.TIME]{ENTER}«

In this example, the default value of the variable [ORIGIN.CTY] is defined as


“LAX”. The window the agent views shows the Origin City value as “LAX”. The
agent can accept the value and tab to the next field or retype the correct value for the
customer. If the agent changes the value, the new value is entered in the availability
entry instead of the DEFAULT value of “LAX”.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 13
DEFINE

Description This command allows you to create variables.

Syntax DEFINE [Variable_Name = Type:Length:Mandatory Indicator:Must Fill


Indicator:DefaultValue:Description]

Where Variable_Name
The name used to identify this variable any place in this script. The name can consist
of up to 15 ASCII characters. The first character of the variable name cannot be the
“@” sign.
Type
The type of data that can be input for this variable. If any additional parameters are
specified for this variable, type must be preceded by the equal sign “=” and followed
by a colon “:”. These following variable types can be used in MySabre Scribe
software:
ALPHA—Allows alphabetic characters only, including spaces. For example, a
variable defined as type ALPHA:3 will accept LAX, BOS, YYZ, SJU, LHR, and so
on. This type can be specified as ALPHA or A.
NUMERIC—Allows whole numbers, 0–9 only. For example, a variable defined as
type NUMERIC:3 will accept the whole numbers 468, 550, 145, 326, and so on. This
type can be specified as NUMERIC, NUM, or N. Numeric is the default variable
type.
DECIMAL—Converts values into a decimal format. For example, a variable defined
as type DECIMAL with a variable length of at least 6 characters will accept the
decimal number 468.00 or 468 and convert it to 468.00. When defining the variable
length for decimal numbers, you must include room for the decimal point and the
numeric values that follow the decimal point. This type can be specified as
DECIMAL or “.” (the period symbol).
ALPHA/NUMERIC—Allows a combination of alphabetic and numeric characters.
For example, a variable defined as type ALPHA/NUMERIC:6 will accept ABC123,
A1B2C3, 123ABC, and so on. This type can be specified as ALPHA/ NUMERIC,
A/N, or / (the slash symbol).
TIME—Allows input using either 12- or 24-hour time. For example, 11P, 2300,
830A, 830, and so on. This type can be specified as TIME or T.
DATE—Allows date input in the Sabre system format including DDMMMYY
"23SEP99" or DDMMM "23SEP". This type can be specified as DATE or D.
ANY—Accepts any characters. This type can be specified as ANY or “*” (the asterisk
symbol).

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 14
MASK—Permits you to specify the variable type, position
by position, for each character to be entered into the variable. With the MASK
option, you must specify the exact value to be entered in the input field, separating
MASK from its values with a hyphen “–”. For example:
DEFINE [NAME_FIELD=MASK-AAANNNAA]
Specify this parameter with MASK or M plus a hyphen and the masking characters.
Length
The maximum number of characters that can be entered as the value for this variable.
If any additional parameters are specified for this variable, Length must be followed
by a colon (:). A variable can be from 1 to 80 characters, unless the Type is DATE (5
or 7 characters), TIME (2 - 5 characters), or DECIMAL (4-80 characters).
Mandatory Indicator
Specifies if data must be entered for this variable. If no data is entered before
processing the screen or window displaying this variable, a run time error message is
displayed. If any additional parameters are specified for this variable, Mandatory
Indicator must be followed by a colon (:). This parameter is specified as MAND or
M if data is required. If data is not required, use OPT or O. The default value of the
mandatory indicator is O.
Must Fill Indicator
Specifies if data must be entered in each space of the variable input field. If the field
is not filled before processing this screen or window, a run time error message is
displayed. If any additional parameters are specified for this variable, Must Fill
Indicator must be followed by a colon “:”. This parameter is specified by FILL or F.
If each space is not required to be filled in, do not specify this parameter.
Default Value
The value to be displayed automatically each time this variable is used in an input
field. The user can replace this value by backspacing over the entry and retyping a
value for this field. This entry must meet the type, length, and must fill parameters
specified earlier. If any additional parameters are specified for this variable, Default
Value must be followed by a colon “:”. This parameter is specified by entering a
value or by typing only the colon or closing bracket.
Description
The text to be displayed to the agent explaining the use or requirements for this
variable. A maximum of 30 ASCII characters are allowed. This parameter is
specified by entering the text to be displayed or by typing only the closing bracket.
Example:

DEFINE [ORIGIN_CITY=ALPHA:3:MAND:FILL:BOS:ORIGIN CITY CODE]

In this example a DEFINE variable statement creates a variable called


ORIGIN_CITY with the parameters: alpha type, length of 3, mandatory, must
fill, default value of “BOS”, and a description of origin city code.
MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 15
DELETE

Description This command removes or deletes a specified file from its directory. The user who
executes a script that contains this command must have the necessary rights to the
directory where the file is to be deleted.
Use this command with the other MySabre Scribe software file input/output
commands, to remove outdated or unnecessary files.

Syntax DELETE file_path

Where file_path
Evaluates to the fully qualified path and file name of the file to be deleted. The
expression could be a character string, a variable, or an equation.
Example:

DELETE "F:\THIRD\EXCEL\HTLLIST.XLS"
In this example, the text following the DELETE command removes a specified file from the workstation.

See Also: READ, WRITE, CLOSE, OPEN

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 16
EMUFIND

Description

Use EMUFIND: device to parse the emulator screen using strings, regular
expressions, or number of characters to skip. Example of an EMUFIND statement is:

READ F="EMUFIND:1ROW" R=2 C=1 "ABC", [VARLEN4], "{[A-


Z]{3}}", [VARLEN3], "|2|", [VARLEN5]

The runtime logic is as follows:

1) READ EMUFIND: is encountered. If it is the first time this device type has been
used, an object of that device type is created. Upon creation of the object default
values of row 1 column 1 are placed into the internal data pointer. If an object of this
device type already exists, the existing object is used and the existing values of
internal data pointer are used.

2) xxxROWS is encountered. This specifies how many rows to limit the search to. If it
is omitted, the default is ALLROWS. This value applies to the current READ statement
only. In other words, the value is not carried on to successive READ statements.
Examples of the suggested formats are, “1ROW”, “2ROWS”, “999ROWS”, “ALLROWS”.
However, abbreviated forms are accepted also. Abbreviated forms of the previous
examples are “1”, “2”, “999”, “ALL”.

3) R= is encountered. This specifies the row to start the search on. If omitted, the
current value of the internal row pointer is used.

4) C= is encountered. This specifies the row to start the search on. If omitted, the
current value of the internal row pointer is used.

5) [VAR], “Delimiter” pair is encountered. This is a variable followed by a delimiter.


Data is read in from wherever the internal data pointer is currently at. It reads data
into the variable until it finds the delimiter. If the length of the variable is exceeded,
the string is truncated. If the delimiter is not found the variable will be filled in up to its
full length, the internal data pointer is updated to point to the character following the
last character of the variable, and a SEARCH_ERROR (value 101) is recorded in
@SYSTEM_ERROR. If the delimiter is found, then the internal data pointer is updated
to point to the character following the last character of the delimiter.

If [VAR] is omitted, it behaves as if a variable of length 0 were specified, thus no data


is put into a variable. If the delimiter is found, the internal data pointer will point to the
character following the delimiter. If the delimiter is not found, the internal data pointer
is unchanged. The example above starts with a delimiter, thus the first [VAR],
“Delimiter” pair comes in with [VAR] omitted.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 17
If “Delimiter” is omitted, the variable is filled to its full length with data starting from
wherever the current data pointer is at.

6) [VAR], “Delimiter” pairs can be encountered successively until the end of the
READ statement is reached.

Note that “Delimiter” can be a string, a regular expression or a skip statement.


Strings can contain an embedded pipe symbol meaning use this string or that string.
Regular expressions must be enclosed by curly braces. Skip statements are enclosed
by pipe symbols. For example:

String Delimiter Examples–with a string delimiter, the pointer looks for the first
occurrence of the string, if found, the pointer is moved to the character following the
string. If a variable follows the string, then the variable is filled in with the characters
following the string.

“ABC” Search for the string “ABC”

“ABC|XYZ” Search for the string “ABC” or “XYZ”

Regular Expression Examples – with regular expressions, the pointer looks for
something that matches the regular expression, if found, the pointer is moved to the
first character of string returned by the regular expression. If a variable follows the
regular expression, then the string returned by the regular expression is placed in the
variable.

“{[A-Z]{3}}” Find a match containing 3 characters, each character must be A-Z

“[0-9]{3,4}[APMN]” Find a match with 3 or 4 characters, each character must be


0-9. The next character after that must be ‘A’, ‘P’, ‘M’, or ‘N’. Thus this is a way to look
for a time in formats such as 345P, 1000A, 1200N, or 1200M.

“ ([0-9]{3,4}[APMN]) ” Look for a space followed by 3 or 4 characters, each


character must be 0-9. The next character after that must be ‘A’, ‘P’, ‘M’, or ‘N’. The
final character must be a space. Thus this is a way to look for a time in formats such as
345P, 1000A, 1200N, or 1200M. In addition the time must have a space on either side.
The parentheses indicate to only return what is inside of the parenthesis. In other
words, look for a time enclosed by spaces but only return the time.

“{ *}” This is a space character followed by an asterisk. This will find a series of
successive space characters. If you place a dummy variable after this regular
expression, the pointer will be advanced to the character following the first series of
space characters that it finds.

Skip Statement example -

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 18
Skip statement Example – with skip statements you are specifying the number of
characters to skip.

“|3|” This will move the pointer 3 characters ahead, thus skipping 3 characters.

Note: The above conventions use the curly brace and pipe symbol as special characters
and means there is no way to search for a curly brace or a pipe character. Sabre
responses never contain a curly brace or a pipe character so this is not a serious
limitation.

System Variables

EMUFIND: updates the following system variables:

@SYSTEM_ERROR – After doing a READ statement using EMUFIND this system variable
will be 0 if no error occurred. It will be 101 if the last item searched for was not found.

@DATA_ROW, @DATA_COL – The row and column of the first character of the most
recent data or delimiter item handled. In other words, if you do an READ statement
using EMUFIND and then access the values in @DATA_ROW and @DATA_COL, they will
contain the position of the last variable or delimiter that was on the READ statement.

@NEXT_DATA_ROW, @NEXT_DATA_COL - The row and column of the first character of


the next data or delimiter item. In other words, if you do a READ statement using
EMUFIND and then access the values in @NEXT_DATA_ROW and @NEXT_DATA_COL,
they will contain the position at which the next READ statement will start if no Row and
Col are specified in that READ statement.

Syntax

READ F="EMUFIND:xxxROWS" R=xx C=yy (list of [VAR],


"delimiter" pairs)

• EMUFIND: - constant device descriptor

• xxxROWS: - number of rows to search (defaults to All Rows)

• R=xxx C=yyy: Row and Column to start search from (optional)

• [VAR], “delimiter” pairs – a list of variable/delimiter pairs

In the following examples the variables are defined as:

DEFINE [VARLEN3=ALPHA/NUMERIC:3]
DEFINE [VARLEN4=ALPHA/NUMERIC:4]

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 19
Example 1: Read data into one variable

Emulator screen:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

READ F="EMUFIND:" R=1 C=1 [VARLEN3]


This will start reading from row 1 column 1 for the length of the variable which is 3.
The result is:

[VARLEN3]= “ABC”

@SYSTEM_ERROR=0 (0 means no error in the search)

@DATA_ROW=1

@DATA_COL=1

@NEXT_DATA_ROW=1

@NEXT_DATA_COL=4

Example 2: Read data into two variables with one read statement

Emulator screen:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

READ F="EMUFIND:" R=1 C=1 [VARLEN3], [VARLEN4]


The characters from row 1 column 1 will be read into [VARLEN3], the internal index
pointer will be bumped to the character following the data read in which is row 1
column 4. Then the characters from row 1 column 4 will be read into [VARLEN4]. The
result is:

[VARLEN3]= “ABC”

[VARLEN4]= “DEFG”

@SYSTEM_ERROR=0 (0 means no error in the search)

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 20
@DATA_ROW=1

@DATA_COL=4

@NEXT_DATA_ROW=1

@NEXT_DATA_COL=8

Example 3: Read data into two variables with two read statements

Emulator screen:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

READ F="EMUFIND:" R=1 C=1 [VARLEN3]


READ F="EMUFIND:" [VARLEN4]
The characters from row 1 column 1 will be read into [VARLEN3], the internal index
pointer will be bumped to the character following the data read in which is row 1
column 4. Since row and column are not specified in the second READ, the internal
index pointer will remain at row 1 column 4 and the characters from row 1 column 4
will be read into [VARLEN4]. Thus the result after executing both lines will be identical
to previous example where [VARLEN3] and [VARLEN4] were placed in the same READ
statement.

[VARLEN3]= “ABC”

[VARLEN4]= “DEFG”

@SYSTEM_ERROR=0 (0 means no error in the search)

@DATA_ROW=1

@DATA_COL=4

@NEXT_DATA_ROW=1

@NEXT_DATA_COL=8

Example 4: Read data into one variable with one leading delimiter

Emulator screen:

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 21
ABCDEFGHI
JKLMNOPQR
STUVWXYZ

READ F="EMUFIND:" R=1 C=1 "JKL", [VARLEN3]


Starting at row 1 column 1 the screen will be searched for the delimiter “JKL”, then the
characters following “JKL” will be read into [VARLEN3].

[VARLEN3]= “MNO”

@SYSTEM_ERROR=0 (0 means no error in the search)

@DATA_ROW=2

@DATA_COL=4

@NEXT_DATA_ROW=2

@NEXT_DATA_COL=7

Example 5: Read data into one variable with one trailing delimiter

Emulator screen:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

READ F="EMUFIND:" R=1 C=1 [VARLEN4], "DEF"


Starting at row 1 column 1 data will be read into [VARLEN4] up until the delimiter. The
internal index pointer will be bumped to the character after the delimiter.

[VARLEN4]= “ABC”

@SYSTEM_ERROR=0 (no error in the search)

@DATA_ROW=1

@DATA_COL=4

@NEXT_DATA_ROW=1

@NEXT_DATA_COL=7

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 22
Example 6: Read data into one variable with one leading and one trailing
delimiter

Emulator screen:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

READ F="EMUFIND:" R=1 C=1 "JK", [VARLEN4], "NOP"


Starting at row 1 column 1 the screen will be searched for “JK”, then the characters in
between “JK” and “NOP” will be placed into [VARLEN4]. The internal index pointer will
be bumped to the character after “NOP”.

[VARLEN4]= “LM”

@SYSTEM_ERROR=0 (no error in the search)

@DATA_ROW=2

@DATA_COL=5

@NEXT_DATA_ROW=2

@NEXT_DATA_COL=8

Example 7: Read with string truncation

Emulator screen:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

READ F="EMUFIND:" R=1 C=1 "JK", [VARLEN4], "Q"


Starting at row 1 column 1 the screen will be searched for “JK”, then the characters in
between “JK” and “Q” will be placed into [VARLEN4]. The internal index pointer will be
bumped to the character after “NOP”. However, the characters between “JK” and “Q”
are “LMNOP” which is longer than will fit into the variable which has a length of 4. The
first 4 characters will be placed into [VARLEN4].

[VARLEN4]= “LMNO”

@SYSTEM_ERROR=0 (no error)

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 23
@DATA_ROW=2

@DATA_COL=8

@NEXT_DATA_ROW=2

@NEXT_DATA_COL=9

Example 8: Read with delimiter not found error

Emulator screen:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

READ F="EMUFIND:" "JK", [VARLEN4], "QVX"


Starting at row 1 column 1 the screen will be searched for “JK”, and then it will
attempt to place the characters in between “JK” and “QVX” into [VARLEN4]. However,
since “QVX” does not exist it will generate a delimiter not found error and behave the
same as if the “QVX” delimiter was not specified.

[VARLEN4]= “LMNO”

@SYSTEM_ERROR=101 (search error)

@DATA_ROW=2

@DATA_COL=3

@NEXT_DATA_ROW=2

@NEXT_DATA_COL=7

Example 9: Search for delimiter in one row, delimiter not found

Emulator screen:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 24
READ F="EMUFIND:1ROW" R=1 C=1 "JK"
Starting at row 1 column 1 the screen will be searched for “JK” within 1 row. In this
case, “JK” does not exist on row 1 so the internal index pointer will remain at row 1
column 1 and a delimiter not found error will be reported.

@SYSTEM_ERROR=101 (search error)

@DATA_ROW=1

@DATA_COL=1

@NEXT_DATA_ROW=1

@NEXT_DATA_COL=1

Example 10: Search for delimiter in one row, delimiter is found

Emulator screen:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

READ F="EMUFIND:1ROW" R=1 C=1 "F"


Starting at row 1 column 1 the screen will be searched for “F” within 1 row. In this
case, “F” exists in row 1 so the internal index pointer will be placed at the location of
the character “F”.

@SYSTEM_ERROR=0 (no error)

@DATA_ROW=1

@DATA_COL=6

@NEXT_DATA_ROW=1

@NEXT_DATA_COL=7

Example 11: Read one variable using regular expression for the delimiter

Emulator screen:

THIS IS A RESPONSE FROM A COMMAND


1000P LAX PDX
MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 25
READ F="EMUFIND:" R=2 C=1 "{[A-Z](3}}", [VARLEN4]
The search will start at row 2 column 1. Delimiters encompassed by curly braces are
interpreted as a regular expression. In this case the regular expression is “[A-Z]{3}”.
The code will search for the 3 characters all of which must be A-Z or in other words it
searches for 3 successive alpha characters. In this example it will find “LAX” and place
them into [VARLEN4].

@SYSTEM_ERROR=0 (no error)

@DATA_ROW=2

@DATA_COL=7

@NEXT_DATA_ROW=2

@NEXT_DATA_COL=10

Example 12: Read one variable using pipe symbol in delimiter

For the following example, assume the emulator screen contains:

9:44 DPT:DFW ARR:SFO

READ F="EMUFIND:" R=1 C=1 "DPT:|ARR:", [VARLEN3]


The search will start at row 1 column 1. The pipe symbol within a delimiter means “or”,
in this case it means search for “DPT:” or “ARR:”. The first thing it finds is “DPT:” so
the results are

[VARLEN3]=”DFW”

@SYSTEM_ERROR=0 (no error)

@DATA_ROW=1

@DATA_COL=10

@NEXT_DATA_ROW=1

@NEXT_DATA_COL=13

Example 13: Read one variable using “skip characters” as a delimiter

Emulator screen:

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 26
ABC DEF GHI JKL

READ F="EMUFIND:" R=1 C=1 "|4|", [VARLEN3]


The search will start at row 1 column 1. The number encompassed by pipe symbols
indicates the number of characters to skip. In this case 4 characters will be skipped.

[VARLEN3]=”DEF”

@SYSTEM_ERROR=0 (no error)

@DATA_ROW=1

@DATA_COL=5

@NEXT_DATA_ROW=1

@NEXT_DATA_COL=8

Regular Expression Mini-Tutorial

Regular expressions are used to search for character patterns. In MySabre Scribe
regular expressions are enclosed by curly braces so all of our examples will be
enclosed in curly braces. The regular expression inside the curly braces consists of
characters and operators. Characters are just characters and match themselves.
Operators have special meaning. The operators we will discuss are:
. dot – this matches one occurrence of any character
* asterisk – this repeats the occurrence of the
previous operator one or more times
[ ] square brackets – this is the list operator. It is
used to list characters to match.
{ } curly braces – this is the range operator. It is
used to indicate the number of times to repeat the
previous operator. {3} means repeat 3 times. {3,6} means
repeat 3-6 times.
( ) parenthesis – this is the paren operator. The paren
operator encloses what is desired to be returned. In
other words, the search criteria outside of the
parenthesis are used in the search but only the string
matching the criteria inside of the parenthesis are
returned.
| pipe symbol – this is the “or” operator.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 27
\ Backslash – This is sometimes called an escape
character. It is placed in front of an operator to
indicate that the operator should be used as a character.

Examples:

{USD} – This will search for the first occurrence of


“USD”. In the search string “12.67USD” the match
returned would be “USD”.

{[A-Z]{3}} – This will search for first occurrence of 3


successive alpha characters. In the search string
“12DECDFWLAX” the match returned would be “DEC”.

{ *} – This is a space character followed by an asterisk.


This will match one or more space characters. In the
search string “ FOR MORE” the match returned would be
the first two spaces. But the search string must start
with a space, so for the search string “FOR MORE
AVAILABILITY” no match would be returned.

{.*} – This looks for any number of any characters. In


the search string “FOR MORE AVAILABILITY” the match
returned would be “FOR MORE AVAILABILITY”.

{ *(.*)} – This searches for one or more spaces and then


returns all the characters following the spaces. In the
search string “ 2401” the match returned would be
“2401”.

{P7|A7} – This searches for P7 or A7. In the search


string “F7 A7 P7” the match returned would be “A7”.

{\*} – This searches for the character asterisk. Since


asterisk is an operator, the backslash is used to change
it to a character. In the search string “H7 K7*DFW” the
match returned would be “*”.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 28
{ ([0-9]{3,4}[APMN]) } – This will search for a space
followed by 3 or 4 numbers followed by A, P, M, or N,
followed by a space and will return only what is in the
parenthesis. In the search string “DFWLAX 8 1200N 800A”
the match returned would be “1200N”.

Comparing Use of EMUFIND versus EMULATOR: device

The following is a real life example of a script showing the


advantage of using the new EMUFIND: device instead of the
EMULATOR: device. The script is designed to read from the PQ
the:

1. Total airline fare


2. Total taxes
3. Currency code

The script compares those three fields with the ones currently
in udid 99 (U*99) in the remarks field. If the fields do not
match, the script gives the agent the opportunity to update
the udid with the correct fare.

The new EMUFIND: device has several advantages:

1. We do not need to clear the list of accumulated


responses that the agent depends on (formats can be
entered from any row on the screen).
2. The programmer does not need to learn the REPEAT/UNTIL
or WHILE/ENDWHILE commands to read from the screen.
3. The programmer does not need to understand how
terminating characters work with EMULATOR: for example
that “ ” skips any and all spaces.
4. The coding is significantly shorter and does not require
that as many variables be defined.
5. Regular expressions can also be used to find data on the
screen.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 29
The old EMULATOR: device code is highlighted in red and
commented out with the semi-colon, the new EMUFIND: device
code is highlighted in green and prefaced with a script
comment. Text in black is needed for both devices.

Note: ”I-” in the description indicates internal variable not


used in a window or menu

DEFINE [5NBR=ANY:3::::I-5 field line number]

DEFINE [COL=NUM:2::::I-Column on MySabre Screen]

DEFINE [ROW=NUM:2::::I-Row on MySabre Screen]

DEFINE [CODE=ALPHA:3::::I-USD or other currency code]

DEFINE [PQTAX=ANY:10:MAND:::Comparison for udid 99]

DEFINE [PQTTL=ANY:10:MAND:::Comparison for udid 99]

DEFINE [TAXES=ALPHA:5::::I-"TAXES" from *PQ]

DEFINE [TAX=ANY:5:MAND:::Tax until decimal point from *PQ for U99]

DEFINE [TAX_DECIMAL=NUM:5:MAND:::Tax number after decimal from *PQ for U99]

DEFINE [TOTAL=NUM:5:MAND:::Total fare until decimal point from *PQ for U99]

DEFINE [TTL_DECIMAL=NUM:5:MAND:::Total fare number after decimal from *PQ/U99]

DEFINE [TRASH=ANY:20::::I-Data until space before currency code]

DEFINE [T2=ANY:2::::I-Trash next 2 characters]

DEFINE [T3=ANY:3::::I-Trash next 3 characters]

DEFINE [UTAX=ANY:10::::I-Tax from Udid 99]

DEFINE [UTTL=ANY:10::::I-Total fare from Udid 99]

DEFINE [UCODE=ALPHA:3::::I-Currency code from Udid 99]

DEFINE [U*99-CC=ANY:7::::I-.U*99 in udid 99]

;*** This section uses the old EMULATOR: ;device code.

;»{CLEAR_ALL}*.{ENTER}«

;{CLEAR_ALL}to clear accumulated responses for EMULATOR:


device

;[ROW] = 2 ;set row and start reading row by row

;REPEAT

; [ROW] = [ROW] + 1

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 30
; READ F = "EMULATOR:" R=[ROW] C=1 [5NBR],".",

; [U*99-CC],[UCODE],[T3],[UTAX],

; "/",[T2],[UTTL]," "

;UNTIL ([U*99-CC] = "U*99-CC") OR ([ROW] = 21)

;*** This section uses the new EMUFIND: device instead.

»*.{ENTER}« ;enter from any row on the screen

READ F = "EMUFIND:" R=1 C=1 "U*99-CC"

[ROW] = [@DATA_ROW]

READ F = "EMUFIND:" R=[ROW] C=1 [5NBR],"..",[U*99-


CC],[UCODE],[T3],[UTAX],

"/",[T2],[UTTL]

;The code below in gray below is used to show the programmer


;that the code is working ;but is not necessary to run the
;script.

DEFAULT [ROW] = [ROW]

DEFAULT [5NBR] = [5NBR]

DEFAULT [U*99-CC] = [U*99-CC]

DEFAULT [UCODE] = [UCODE]

DEFAULT [T3] = [T3]

DEFAULT [UTAX] = [UTAX]

DEFAULT [T2] = [T2]

DEFAULT [UTTL] = [UTTL]

WINDOW

The script found U*99-CC on row [ROW]

The value of variables is

<5NBR> <U*99-CC> <UCODE> <T3> <UTAX> <T2> <UTTL>

[5NBR] [U*99-CC] [UCODE] [T3] [UTAX] [T2] [UTTL]

ENDWINDOW

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 31
;***This section continues to use the old EMULATOR: device
;Even if [ROW] = 21 then the udid not present so ;the script
continues to comparison.

;»{CLEAR_ALL}*PQ1{ENTER}«

;[ROW] = 4

;[COL] = 17

;NEXTROW:

;REPEAT

; [COL] = [COL] + 1

; READ F = "EMULATOR:" R=[ROW] C=[COL] [TAXES]

;UNTIL ([TAXES] = "TAXES") OR ([COL] = 60)

;IF [COL] = 60

; THEN [COL] = 17

; [ROW] = [ROW] + 1

; GOTO NEXTROW

;ENDIF

;*** This section achieves the same as above with EMUFIND:

»*PQ1{ENTER}« ;accumulated responses or not, enter


anywhere

READ F = "EMUFIND:" R=1 C=1 "TAXES"

[ROW] = [@DATA_ROW] ;EMUFIND: tracks the row and column


in the new System

[COL] = [@DATA_COL] ;Variables [@DATA_ROW] and


[@DATA_COL]

;the code below in gray below is used to show the programmer


;that the code is working ;but is not necessary to run the
;script.

DEFAULT [ROW] = [ROW]

DEFAULT [COL] = [COL]

WINDOW

Found 'TAXES' at row: [ROW] column: [COL]

ENDWINDOW

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 32
[COL] = [COL] - 2 ;7 Character taxes start 2 columns
before taxes

[ROW] = [ROW] + 1 ;1 row underneath "TAXES" are the


tax amounts

;*** Using the old EMULATOR: device:

;READ F=”EMULATOR:"R=[ROW] C=[COL][TAX],".",


;[TAX_DECIMAL],[TRASH]," ",

;[CODE],[TOTAL],".",[TTL_DECIMAL]

;*** Using the new EMUFIND: device:

READ F = "EMUFIND:" R=[ROW] C=[COL] [TAX],"." ,[TAX_DECIMAL],


"|2|","{ *([A-Z]{3})}",[CODE],[TOTAL],".",[TTL_DECIMAL]

;note the use of regular expressions above to skip multiple


;spaces and the 2 character

;tax code "{ *([A-Z]{3})}" rather then having to define trash


;variables.

;the code below in gray below is used to show the programmer


;that the code is working ;but is not necessary to run the
;script.

DEFAULT [TAX] = [TAX]

DEFAULT [TAX_DECIMAL] = [TAX_DECIMAL]

DEFAULT [TRASH] = [TRASH]

DEFAULT [CODE] = [CODE]

DEFAULT [TOTAL] = [TOTAL]

DEFAULT [TTL_DECIMAL] = [TTL_DECIMAL]

WINDOW

variables read in are

<TAX> <TAX_DECIMAL> <TRASH> <CODE> <TOTAL> <TTL_DECIMAL>

[TAX] [TAX_DECIMAL] [TRASH] [CODE] [TOTAL] [TTL_DECIMAL]

ENDWINDOW

;This final portion of the script allows the agent to update


the ;udid field

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 33
[PQTAX] = [TAX] + "." + [TAX_DECIMAL] ;pass the 2 variables to
1 for ease of editing

[PQTTL] = [TOTAL] + "." + [TTL_DECIMAL]

IF ([PQTAX] <> [UTAX]) OR ([PQTTL] <> [UTTL]) OR ([UCODE] <>


[CODE]) THEN

»{CLEAR_ALL}*.{ENTER}«

DEFAULT [PQTAX] = [PQTAX]

DEFAULT [PQTTL] = [PQTTL]

DEFAULT [CODE] = [CODE]

WINDOW H="Check Udid 99!" R=70 C=70

The fare in PQ1 is not documented correctly in Udid 99

should the script add these new amounts?

[@YES] [@NO]

TAX:[PQTAX]

TOTAL: [PQTTL]

CURRENCY CODE: [CODE]

ENDWINDOW

ENDIF

IF [@BTN_PRSD]= [@YES] THEN

»{CLEAR_ALL}5[5NBR]¤.U*99-
CC[CODE]/TX[TAX].[TAX_DECIMAL]/TF[TOTAL].

[TTL_DECIMAL]{ENTER}«

ENDIF

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 34
EXIT

Description This command terminates the execution of the current script.

Syntax EXIT

Example:

MENU
R=1 C=80 H="Transaction Options"
"AIRLINE AVAILABILITY"
CHAIN "AIRLINE"
"CAR AVAILABILITY"
CHAIN "CAR"
"HOTEL AVAILABILITY"
CHAIN "HOTEL"
"EXIT SABRESCRIPT"
EXIT
ENDMENU

In the example, if the agent selects the menu choice “EXIT SABRESCRIPT”, the
script is terminated and the agent is returned to the Sabre system.
See Also: CHAIN, SPAWN

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 35
EXTERNAL

Description This command allows the value of a variable to be passed to another script executed
by the SPAWN or CHAIN command. The values remain intact until the MySabre
Scribe run time module has been terminated, returning the agent to the Sabre system.

Syntax EXTERNAL [Variable_Name1], [Variable_Name2]


or
EXTERNAL [Variable_Name1]
EXTERNAL [Variable_Name2]

Where Variable_Name
Specifies the variable to be written to memory for use by another script executed by
the CHAIN or SPAWN command. Multiple external variables can appear separated
by commas after the EXTERNAL command. They can each appear on a separate line
with an EXTERNAL command.
Note: All external variables must have been previously defined, either using a
DEFINE command or in one of the variable lists. The EXTERNAL
command must also appear in the other script to access the value of the
specified variable.

You no longer have to repeat questions or request input for the same
information the user entered in a previous script. Passing variable values
allows you to re-use an existing script with custom operation based on the
previous agent entry.
Example: (This is script "A")

DEFINE [DIVISION_NUMBER=MASK-NNN:3:MAND:FILL]
EXTERNAL [DIVISION_NUMBER]

WINDOW
R=1 C=5 H="Employee Information"
DIVISION #: [DIVISION_NUMBER]
ENDWINDOW
SPAWN "XYZCORP"

(This is script "XYZCORP")

DEFINE [DIVISION_NUMBER=MASK-NNN:3:MAND:FILL]
EXTERNAL [DIVISION_NUMBER]

IF [DIVISION_NUMBER] < 200 THEN


WINDOW
This employee from XYZ Corporation works in the Sales
Division. I know this because the division number is
between 100 and 199.
ENDWINDOW
ELSEIF [DIVISION_NUMBER] < 300 THEN
WINDOW
MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 36
This employee from XYZ Corporation works in the Research
Division. I know this because the division number is
between 200 and 299.
ENDWINDOW
ELSEIF [DIVISION_NUMBER] < 400 THEN
WINDOW
This employee from XYZ Corporation works in the Marketing
Division. I know this because the division number is
between 300 and 399.
ENDWINDOW
ELSEIF [DIVISION_NUMBER] >= 400 THEN
WINDOW
This employee from XYZ Corporation works in the Accounting
Division. I know this because the division number is equal
to or greater than 400.
ENDWINDOW
ENDIF

In the example, script “A” asks the agent to enter the division number of an
employee from a corporate account. The EXTERNAL command is used to pass
the value of variable [DIVISION_NUMBER] to script “XYZCORP.”
In the spawned script “XYZCORP”, an IF/ENDIF statement determines the
value of the variable [DIVISION_NUMBER]. The value was input by the user in
script “A” and passed to script “XYZCORP”.
See Also: CHAIN, SPAWN

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 37
GOTO

Description This command directs the script to find the specified label name and execute the
statements that follow it.

Syntax GOTO Label_Name

Where Label_Name
Specifies the segment of this script to be executed immediately after this command is
invoked. The unique name for the label consists of up to 79 alphanumeric characters
excluding spaces, and cannot be a command name. The first character must be an
alpha character.
Note: Do not use a terminating colon of the label name in the GOTO command.

The GOTO command allows the user to jump over sections of the script
through menu selections or window input. All commands between the
GOTO command and label name are skipped.

Use GOTO statements as sparingly as possible to eliminate confusion while


testing or modifying the script at a later time.
Example:

WINDOW

R=1 C=5 H="Air Availability"


ORIGIN: [ORIGIN_CITY] DESTINATION: [DESTIN_CITY]
DEPART: [DEPART_DATE] TIME: [DEPART_TIME]
ENDWINDOW

IF [DESTIN_CITY] = "BOS" THEN


GOTO BOSTON
ELSEIF( ([DESTIN_CITY] = "ORD") OR ([DESTIN_CITY] = "CHI")) THEN
GOTO CHICAGO
ENDIF

BOSTON:
WINDOW
Be sure to explain ABC Corporation’s Car Pool Policy for
Boston.
(Press any key to execute airline availability)
ENDWINDOW

GOTO CONTINUE

CHICAGO:

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 38
WINDOW
Be sure to explain ABC Corporation’s Car Pool Policy for
Chicago.
(Press any key to execute airline availability)
ENDWINDOW

GOTO CONTINUE

CONTINUE:
»1[DEPART_DATE][ORIGIN_CITY][DESTIN_CITY][DEPART_TIME]{ENTER}«

See Also: CHAIN, CALL, SPAWN, SUBROUTINE/ ENDSUBROUTINE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 39
IF/THEN/ENDIF

Description This command performs a test and executes an action or group of actions only if the
test is true.

Syntax IF Conditional_expression THEN


Action_statement
ENDIF

Where Conditional_expression
Specifies the conditions that must be true before the action statement is executed.
Multiple conditional expressions can be combined with logical operators. For more
information about logical operators, refer to the MySabre Scribe Scripting Guide.
Action_statement
Specifies the command or commands to be executed if the previous conditions are
true. If the condition is not true, this action statement is skipped.
Note: The simplest form of an IF statement gives you the choice of executing the
action statement or skipping it. The IF statement permits you to test the
condition or value of a variable. You can execute commands based on the
value of a variable. The ENDIF is required to complete the IF statement.

To repeat the test and continue to execute the statements, use a loop
statement, such as WHILE/ENDWHILE or REPEAT/UNTIL.
Example:

IF ([NUMBER_PARTY] > 0) AND ([NUMBER_PARTY] < 2)

THEN

»0[NUMBER_PARTY]Y3*{ENTER}«

ENDIF

The example is checking to see if the number of people in the party traveling is
greater than 0 and less than 2. This means the sell entry will execute if the value of
the variable [NUMBER_PARTY] is equal to 1.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 40
IF/THEN/ELSE/ENDIF

Description This command performs a test and executes one action or group of actions if the test
is true and another action or group of actions if the test is false. It allows you to take
action when a condition offers two choices.

Syntax IF Conditional_expression THEN


Action_statement1
ELSE
Action_statement2
ENDIF

Where Conditional_expression
Specifies the conditions that must be true before the action statement is executed.
Multiple conditional expressions can be combined with logical operators. For more
information about logical operators, refer to the MySabre Scribe Scripting Guide.

Action_statement11
Specifies the command or commands to be executed if the previous conditions are
true. If the condition is not true, this action statement is skipped.
Action_statement2
Specifies the command or commands to be executed in all cases that the previous
conditions are not true. All commands between the ELSE and ENDIF statements are
processed. If the condition is true, this action is skipped.

Note: The ENDIF is required to complete the IF/THEN/ELSE/ENDIF statement.

To repeat the test and continue to execute the statements, use a loop
statement, such as WHILE/ENDWHILE or REPEAT/UNTIL.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 41
Example:

WINDOW
Enter caller’s name: [RECEIVED_FLD]
Do you wish to book a car reservation at this time? [CAR_Y/N]
ENDWINDOW

IF [CAR_Y/N] = "Y" THEN


SPAWN "BOOK_CAR"
ELSE
»5C#CAR WAS REFUSED BY [RECEIVED_FLD] [@DATE] [@TIME]{ENTER}«
ENDIF

In this example, the IF statement determines if the expression is true. The expression
is false; therefore, the ELSE statement is executed.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 42
IF/ELSEIF/ELSEIF/ENDIF

Description This command allows you to evaluate multiple expressions and select from a
multiple number of paths.

Syntax IF Conditional_expression_1 THEN


Action_statement_1
ELSEIF Conditional_expression_2 THEN
Action_statement_2
ELSEIF Conditional_expression_3 THEN
Action_statement_3
ELSEIF Conditional_expression_4 THEN
Action_statement_4
ELSE
Action_statement_others
ENDIF

Where Conditional_expression
Specifies the conditions that must be true before the Action_statement is to be
executed. Multiple conditional expressions can be combined with logical operators.
For more information about logical operators, refer to the MySabre Scribe Scripting
Guide.

Action_statement
Specifies the command or commands to be executed if the conditional expression
in the preceding IF or ELSEIF statement is true. All statements between THEN
and the next ELSEIF, ELSE, or ENDIF are executed. If the conditional
expression is not true, this action is skipped and the next ELSEIF or ELSE
statement is processed.
Action_statement_others
Specifies the command or commands to be executed in all cases that the previous
conditions are not true. All commands between the ELSE and ENDIF statements are
processed. If any IF or ELSEIF condition is true, this action is skipped. The ELSE
statement is not required if all options are listed under an ELSEIF statement.

Note: Each statement is evaluated in sequence beginning with the IF statement.


The first true statement executes its associated commands and stops the
processing of the IF/ELSEIF/ELSEIF/ENDIF statement. The script then
continues with the commands following the ENDIF unless a GOTO
command is executed during this statement.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 43
Example:

WINDOW
R=1 C=80
Origin City: [ORIGIN.CTY] Destination City: [DESTIN.CTY]
Departure Date: [DEPART.DATE] Departure Time: [DEPART.TIME]
ENDWINDOW

IF [DESTIN.CTY] = "ABE" THEN


CHAIN "CITYA"
ELSEIF [DESTIN.CTY] = "BNA" THEN
CHAIN "CITYB"
ELSEIF [DESTIN.CTY] = "CAE" THEN
CHAIN "CITYC"
ELSEIF [DESTIN.CTY] = "DFW" THEN
CHAIN "CITYD"
ELSEIF[DESTIN.CTY] = "EVV" THEN
CHAIN "CITYE"
ENDIF

In the example, five expressions are evaluated for the program to follow. If one of the
expressions is true (or equal to the city/airport identified in the string), the script will
CHAIN to CITYA, CITYB, CITYC, CITYD, or CITYE. If no expression is true, the
script continues with any commands following the ENDIF. There is no ELSE
statement in this example because any [DESTIN.CTY] entries not matching the IF or
ELSEIF conditions are processed by the commands following the ENDIF.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 44
IF/ELSE/IF/ELSE/ENDIF (Nested IFs)

Description Your script can consist of an IF/ELSE statement where the command portion of the
IF or ELSE statement is another IF/ ELSE statement. The second IF/ELSE statement
is said to be “nested” in the first. Use nested IF statements to group entries that meet
at least one similar condition, but can be subdivided by meeting different secondary
conditions.
Nested IF statements allow you to shorten your script source code. They also allow
the software to process more quickly than having to evaluate a large series of
IF/ELSEIF/ELSEIF/ ENDIF statements.

Syntax IF Shared_condition THEN


IF conditional expression THEN
Action_statement1
ELSE
Action_statement2
ENDIF
ELSE
Action_statement_others
ENDIF

Where Shared_condition
Specifies the conditions that must be true before the following nested IF is to be
processed. Multiple conditional expressions can be combined with logical operators.
For more information about logical operators, refer to the MySabre Scribe Scripting
Guide.
Conditional_expression
Specifies the conditions that must be true before the following
Action_statement is to be executed. Multiple conditional expressions can be
combined with logical operators. For more information about logical operators, refer
to the MySabre Scribe Scripting Guide.
Action_statement
Specifies the command or commands to be executed only if the conditional
expressions in the preceding IF or ELSEIF statement are true. All statements between
THEN and the next ELSEIF, ELSE, or ENDIF are executed. If the expression is not
true, this action is skipped and the next ELSEIF or ELSE statement is processed.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 45
Action_statement_others
Specifies the command or commands to be executed in all cases that the previous
conditional expressions are not true. All commands between the ELSE and ENDIF
statements are processed. If any IF or ELSEIF expression is true, this action is
skipped.

Example:
WINDOW
R=1 C=5 H="Book Hotel?"
Does the customer need a hotel reservation? [HOTEL_Y/N]
ENDWINDOW

IF [HOTEL_Y/N] = "Y" THEN

WINDOW
R=1 C=5
Do you wish to book the hotel now? [BOOK_HTL_NOW]

If you answer "N", you will be prompted to book hotel at


the end of your transaction.)
ENDWINDOW

IF [BOOK_HTL_NOW] = "Y" THEN


SPAWN "BOOKHTL"
ELSE

WINDOW
You will be prompted to book hotel at the end of
your transaction.

(Press any key to continue).


ENDWINDOW

ENDIF

ELSE

»{HOME}5H#HTL WAS REFUSED


BY[RECEIVED_FLD][@DATE][@TIME]{ENTER}«

ENDIF
The example begins with one IF expression to determine if the customer needs to
book a hotel [HOTEL_Y/N]. If the agent enters “Y” into this variable, a window
appears asking the agent if they want to book it now or at the end of the transaction.
If the value of the variable [BOOK_HTL_NOW] equals “Y”, then another script is
spawned. If the answer is “N”, a window is displayed with a message that the agent
should book the hotel at the end of the transaction. If the agent indicates the customer
does not want a hotel, an historical remark is entered stating that the hotel was
refused.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 46
MENU/ENDMENU

Description This command allows you to define choices to appear on a menu.

Syntax MENU
R=xx C=yy H=expression
; MENU ATTRIBUTES
; ROW
"SELECTION TEXT"
Single or multiple Sabre system and/or MySabre Scribe software commands
"-" (HYPHEN SYMBOL)
"CASCADE TEXT ►"
WINDOW
Window text
ENDWINDOW
[VARIABLE]
Single or multiple Sabre system and/or MySabre Scribe software commands
ENDMENU

ENDMENU

Where MENU ATTRIBUTES


Defines the row and column placement on the screen, the shadow, and the header of
this menu. If this line is omitted, the default attribute values are used for this menu.
R=xx—The row attribute specifying the placement of the upper left corner of the
menu on the screen. “xx" indicates a row number from 1 to 24. If the row attribute is
not specified, the menu is centered on the screen. This command must be placed on
the optional line immediately following the MENU command.
Note: If the row specified is greater than 24, the menu is placed at the bottom of
the screen during run time or test mode execution. The Release 2.0 attribute
of “R-” is supported in this release.

C=yy—The column attribute specifying the placement of the upper


left corner of the menu on the screen. “yy” indicates a column
number from 1 to 80. If the column attribute is omitted, the
menu is centered on the screen. This command must be
placed on the optional line immediately following the MENU
command.
If the column specified is greater than 80, the menu is right justified to
accommodate the MENU shadow attribute, if applicable, as well as the
widest menu choice up to 74 characters. The attribute of “C-” is supported
in this release.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 47
H=expression—Evaluates to the character string for an optional
header on the menu. The header is automatically centered on the
menu and cannot exceed 74 characters. The header can be added on
a menu by specifying this attribute. It is most commonly used with
alphanumeric text enclosed in quotation marks (" "). This command
must be placed on the optional line immediately following the
MENU command. The attribute of H- is supported in this release.
"SELECTION TEXT"
Specifies the text to be displayed on the menu for selection by the
agent. The text must be enclosed in quotation marks. The maximum
length of the text for each choice in the menu is 74 characters. Each
menu choice can be followed by one or more commands. There is no
limit on the number of commands that can follow a menu choice. An
ampersand (&) can be placed before a character in the selection text
to specify an accelerator character. This accelerator character enables
the agent to select the specified option by pressing the highlighted
key. If no accelerator is specified, the first unique character of each
menu choice is highlighted as the default. The ampersand is not
displayed as part of the menu choice when executed in the run time
or test mode.
"–"

Specifies the location where a dividing line is to be drawn across the


width of the menu. Type a hyphen “–” on a separate line between the
item choices you wish to separate. The hyphen must be enclosed in
quotation marks. A menu can contain up to 22 choices, including
dividing lines.
"CASCADE TEXT ►"

Specifies text to be displayed on the menu for selection by the agent.


When you include the cascade symbol (►), the menu remains
displayed while the associated commands are executed. The
cascading menu symbol is specified by placing a right-pointing (►)
triangle after the menu item name. If you are using an editor other
than MySabre Scribe Developer software, the ASCII value of the
cascading attribute is 16.
VARIABLE
Specifies the variable whose value is to be displayed on the menu for
selection by the agent. The maximum length of the text for each
choice in the menu is 74 characters. If the variable is blank, no
choice displays. Each menu choice can be followed by one or more
Sabre system commands or MySabre Scribe software commands.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 48
Note: You can define up to 22 choices to appear in a vertical menu. The maximum
length of the choice in the menu is 74 characters.

You must place quotation marks around each menu choice that is not a
variable.

Each menu choice must be followed by one or more commands.

There is no limit on the number of commands that can follow a menu


choice.

A MENU/ENDMENU can be placed anywhere in the script, except within a


WINDOW/ENDWINDOW.

There is no limit on the number of menus you may use in a script. They are
frequently used when very specific options are applicable, thus saving the
agent time by reducing the number of keystrokes. A menu allows quick
selection of options instead of stepping through multiple windows.

Use the cascading symbol to complete menu options and return to the menu.
Cascaded menus are supported in that a menu choice can result in multiple
menu layers. If you do not specify any coordinates, each layer of cascaded
menus overlaps the menu underneath it as a default setting by moving the
secondary menu down one row and over two columns. The positioning of
secondary menus can be specified by including the row and column
coordinates to avoid the default overlapping.

The agent can press ESC to exit the secondary menu structures until the
primary menu is reached. If ESC is pressed while in the primary menu, a
dialog box asks, “Do you wish to Terminate?”

Menu cascading can also be used to execute commands without the menu
being removed.
In the following examples, there are two menu items with a right-pointed triangle.
When either of those two items is selected, the Transaction Options menu remains
inactive in the background while the Car or Hotel Transaction Options menu
becomes active in the foreground. The menus are cascaded (or staggered). When the
agent chooses an item with the Hotel or Car Transaction Options menu, that menu is
removed and the original Transaction Options menu is re-displayed.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 49
Example 1:
MENU
R=1 C=80 H="Options"
"DISPLAY AIR INFORMATION"
»{CLEAR}«
»*IA{ENTER}«
"DISPLAY SEAT INFORMATION"
»{CLEAR_ALL}«
»*S#{ENTER}«
"DISPLAY &BOTH CHOICES"
»{CLEAR}«
»*IA{ENTER}«
»{CLEAR_ALL}«
»*S#{ENTER}«
"BOOK RETURN FLIGHT"
IF [DESTIN.CTY] <> [HOME.CTY] THEN
CALL RETURN
ELSE
CALL CONTINUE
ENDIF
"-" ; this will create a dividing line
"EXIT SABRESCRIPT"
EXIT
ENDMENU

Example 2 with cascading menus:

MENU
R=1 C=80 H="Transaction Options"
"BOOK RENTAL CAR ►"
MENU
R=1 C=80 H="Car Transaction Options"
"BOOK CAR REFERENCING SEGMENT"
CALL BOOK_CAR_WITH_SEGMENT
"BOOK CAR WITHOUT REFERENCING SEGMENT"
CALL BOOK_CAR_W/O_SEGMENT
"EXIT SABRESCRIPT"
EXIT
ENDMENU
"BOOK HOTEL ►"
MENU
R=1 C=80 H="Hotel Transaction Options"
"BOOK HOTEL REFERENCING SEGMENT"
CALL HOTEL_SEGMENT
"BOOK HOTEL WITHOUT REFERENCING SEGMENT"
CALL BOOK_HOTEL_W/O_SEGMENT
"EXIT SABRESCRIPT"
EXIT
ENDMENU
"EXIT SABRESCRIPT"
EXIT
ENDMENU

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 50
OPEN

Description This command allows you to open an ASCII file.

Syntax OPEN FILE = file_path

Where file_path
The file path of the file to be opened. The file path could be a character string, a
variable, or an equation.

Note: Files are automatically opened whenever a READ or WRITE command is


executed. By default, the carriage return at the end of each line specifies the
line length. (A carriage return is automatically inserted by most text
editors.) To format the file into even rows, specify a line length other than 0.
Each row contains that number of characters, counting from the top left
margin of the file. This does not change the format of the original file. It
only defines the number of characters considered to be in each row in the
copy of the file in memory.

If using files with formatted delimited data, use the new OPEN (CSV:)
extended feature (see Section 3 for more information).
Example:

OPEN FILE="F:\THIRD\WINWORD\TEST.TXT" LENGTH=10

(TEXT in F:\THIRD\WINWORD\TEST.TXT)
THIS FILE HAS 54 CHARACTERS OF TEXT, INCLUDING SPACES.

(TEXT in F:\THIRD\WINWORD\TEST.TXT as it appears in memory)


THIS FILE
HAS 54 CHA
RACTERS OF
TEXT, INC
LUDING SPA
CES.
In this example, the file TEST.TXT is opened.

See Also: READ, WRITE, CLOSE, DELETE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 51
READ

Description This command allows you to read data into a variable from:
A text (ASCII) file
The Sabre system BEFORE it displays on the agent’s screen
The agent’s screen, sent to the desktop from the Sabre system
The Windows clipboard
Formatted delimited data file such as .CSV file

Syntax READ FILE = read_data R=expression C=expression


Variable_1, Variable_x, "terminating_char"
or
READ F = read_data R=row_num C=col_num
Variable_1, Variable_x, "terminating_char"

Where: read_data
Specifies the location of the data to be read. The sources allowed for the READ
command are:
READ FILE = file_path
Where file_path evaluates to the file name of the data to be read. The
file_path could be a character string, or a variable.
READ FILE = "CSV:"
See section 3 for details.
READ FILE = "SABRE:"
Reads the data returned by the Sabre system without displaying it on the
emulator screen when it immediately follows the WRITE FILE="SABRE:"
command. This is considered an input/output device and must be followed
by a colon.
READ FILE = "EMULATOR:"
Reads the data displayed on the screen in the active PARTITION. This is
considered an input/output device and must be followed by a colon.

Note: When reading from the EMULATOR, it is best to perform a


{CLEAR_ALL} before the Sabre system entry is made, to reset the
cursor to row 1 and column 1

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 52
READ FILE = "CLIPBOARD:"

Reads the data held in the Windows clipboard. This is considered an


input/output device and must be followed by a colon.
R = expression
Where expression evaluates to the row number in the file or data specifying
the beginning point for this READ command. If the row attribute is not
specified, the READ begins at the first row in the file or the current row
where the file was previously accessed. If the row specified is greater than
the total number of rows in the file, the READ command defaults to the last
row. If you specify a row attribute without specifying a column attribute,
then the column is reset to the first column.
C = expression
Where expression evaluates to the column number in the file or data
specifying the beginning point for this READ command. If the column
attribute is not specified, the READ begins at the first column in the file or
the current column if the file was previously accessed. If the column
specified is greater than the total number of columns in the file, the READ
command defaults to the last column.
Variable_1
Specifies the name of the user-defined variable or variable specified in a
DEFINE statement where the data is to be placed. This parameter is
required.
Variable_x
Specifies the name of any additional user-defined variable or variable
specified in a DEFINE statement where the data is to be placed. Use
additional variables as needed to read and process data. If this optional
variable is used, it must be preceded by a comma “,”.
"terminating_char"
Specifies the character that ends the READ command when it is
encountered in the data. If additional variables are specified, all characters
matching the terminating expression are skipped before reading more
characters for the next variable. If the terminating character is used, it must
be separated from the preceding variable name by a comma “,”. This can
also be used as the first parameter to skip the leading characters.
The following statement specifies / as the terminating character:
READ F = "SABRE:" R=1 C=5 [LNAME], "/"

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 53
Note: These special (non-printing) characters can be used:

"\n" Line feed character


"\t" Tab character
"\b" Back space
"\r" Carriage return
"\\" Backslash
"\"" Double quote

The READ command reads the data string and puts each character from the
string into the variable until:
An invalid character type for the variable is encountered. Valid characters
are specified in the user-defined variable list or in a DEFINE statement
in this script.
The maximum number of characters for the specified variable are read from
the data
A character defined as a terminating expression is encountered
If any additional variables are specified, the READ command begins
reading data into the next variable after one of these conditions has been
encountered.
Each READ command leaves a file pointer at the last character processed in
a file. If the file is not closed, any subsequent READ commands that do not
contain an R= or C= begin at that file pointer. To specify the location of the
data in the source file, use the row and column parameters in the READ
command statement.
You can read Sabre system responses using either the Sabre system or
emulator device parameter so the agent does not see the Sabre system
response. The Sabre system device can only be used to capture data
returning from a WRITE to the Sabre system device command. The WRITE
command must be immediately preceding the READ command.
The emulator device reads the Sabre system response already appearing on
the screen. The agent can view the response and see the action performed by
the script.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 54
Example:

DEFINE [LINE=NUM:1:MAND::LINE REFERENCE NUMBER]


DEFINE [AIRLINE=ALPHA:2:MAND::AIRLINE CODE]
DEFINE [FLIGHT=NUM:4::FLIGHT NUMBER]
DEFINE [CITIES=A/N:6::CITY PAIR CODES]
DEFINE [EXIT=NUM:1::TERMINATOR NUMBER]
DEFINE [ROW=NUM:2::ROW INDICATOR]
DEFINE [COLUMN=NUM:2::COLUMN INDICATOR]
In this example, the script is designed to read the Sabre system response and alert the
agent to sell a specific airline in a specific market when it appears in the availability
display. This script reads the availability response.
After the DEFINE variable statements, the script begins with a REPEAT loop
statement that provides instructions to read the system response and input the first
numeric character into the variable [LINE] that has a length of 1. The READ
continues to input the next two alpha characters into the variable [AIRLINE] and
skip the terminating character defined in the quotation marks that is a SPACE. Next,
it inputs up to a four-digit flight number into the variable [FLIGHT], stopping at the
terminating SPACE character, and then the script continues with the next REPEAT
loop statement.
Example:

[ROW] = 4
[COLUMN] = 1

REPEAT
READ FILE="EMULATOR:" R=[ROW] C=[COLUMN] [LINE], [AIRLINE], " ",
[FLIGHT], " "

[ROW] = [ROW] + 1
[COLUMN] = 1

The second REPEAT loop statement instructs the script to read data into the
variable [CITIES], stopping at the terminating SPACE character. The script
tests to verify that [CITIES] has six alpha/numeric characters, and if not, it
repeats the command. This logic is used so the READ command can ignore all
the class of service codes and the inventory they denote.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 55
Example:

REPEAT
READ FILE="EMULATOR:" [CITIES], " "
UNTIL $[CITIES] = 6

When six characters of data are found in the variable, the script processes the IF
statement to determine if the data in the variable [CITIES] equals the “SEAIAH”
market and if the [AIRLINE] equals “AA”. If they do, a window appears
advising the agent to offer the special fare on American Airlines. When the agent
presses a key to remove the window, the variable [EXIT] is set to a value of “1”
to meet the condition specified for the UNTIL condition and terminates the loop.
Example:

IF (([CITIES] = "SEAIAH") AND ([AIRLINE] = "AA")) THEN


WINDOW
R=1 C=5 H="ABC Travel Special Airfare"
Be sure you offer the ABC Travel Special fare on
American Airlines.

(Press any key to continue)


ENDWINDOW
[EXIT] = 1
ENDIF

UNTIL (([EXIT] = 1) OR ([ROW] = 12))


SABRE RESPONSE

120NOVSEAIAH7A«

20NOV FRI SEA/PST IAH/CST¥2


FOR MORE AVAILABILITY SEE -IAH HOU EFD
1CO 240 F0 A7 Y7 Q0 H7 K7 SEAIAH 9 620A 1232P M80 B 0 XJ DC
B7 V7
2CO 783 F0 A7 Y7 Q7 H7 K7 SEAIAH 7 1255A 658A 733 S 0 DC
B7 V7
3CO1681 F0 A7 Y7 Q7 H7 K7 SEAIAH 9 151P 802P M80 L 0 XJ DC
B7 V7
4AA 396 F6 Y0 B0 M0 Q0 V0 SEAIAH 8 1145P 806A¥1 72S V/ 1 DC
H0 K0
5AA1202 F7 Y7 M7 B7 Q7 V7 SEADFW 8 626A 1212P S80 B 0 DC
H7 K7
6AA 420 F7 Y7 M7 Q7 V7 B7 IAH 9 1258P 208P S80 0 DC
H7 K7

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 56
RENAME

Description This command renames a file. You must specify a current file name and then the new
file name. In order to use the RENAME command, the file must be closed.

Syntax RENAME expression1 AS expression2

Where expression1
Evaluates to the file name of the file to be renamed. The expression could be a
character string, a variable, or an equation. The user executing this command must
have the necessary rights to the directory where the file is to be renamed.
expression2
Evaluates to the file name of the file name to be assigned to the file. The expression
could be a character string, a variable, or an equation.
You cannot rename a file that is open.
Example:

RENAME "f:\third\excel\results.xls" AS
"f:\third\excel\stats.xls"
In this example, the current file “results.xls” is RENAMEd as “stats.xls”.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 57
REPEAT/UNTIL

Description This command enables you to have your script execute a group of statements in a
repetitive manner.

Syntax REPEAT
Action_statement
UNTIL conditional_expression
Where Action_statement
The set of commands to be executed repeatedly until the conditional_expression is
true.
conditional_expression
The set of conditions to be tested after each repetition of the Action_statement.
Multiple conditional expressions can be combined with logical operators. For more
information about logical operators, refer to the MySabre Scribe Scripting Guide.
Note: The REPEAT/UNTIL loop statement evaluates the expression AFTER it
has executed the commands.

REPEAT/UNTIL allows you to repeat tasks without having to add more


source code. For example, you can use this type of command to do error
checking until the input is correct.

If you need to evaluate the expression before the commands are executed,
use the WHILE/ENDWHILE loop statement.
Example:

REPEAT

WINDOW
R=1 C=13
DO YOU WISH TO VIEW MORE AVAILABILITY? [MORE.Y/N]
ENDWINDOW

IF [MORE.Y/N] = "Y" THEN


»{HOME}1*{ENTER}«
ENDIF

UNTIL [MORE.Y/N] = "N"


In the example, a REPEAT loop is used to prompt the user with a window asking if
the user wants to display more availability. If the user answers “Y”, the Sabre system
command is executed to display more availability and the window reappears
prompting the user again. If the user answers “N”, the loop is terminated.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 58
REQUIRE

Description This command allows you to control the access of variables that are present in a
window or screen during execution.

Syntax REQUIRE Conditional_expression FOR


[VARIABLE_A], [VARIABLE_B], [VARIABLE_C]

Where Conditional_expression
Specifies the conditions that must be true before allowing data input for
VARIABLE_A. If a variable is specified for the Conditional_expression, valid data
entered for this variable fulfills the requirement and allows data to be input in the
target variables. Multiple conditional expressions can be combined with logical
operators. For more information about logical operators, refer to the MySabre Scribe
Scripting Guide.
VARIABLE_A
Specifies the variable controlled by the data in the Conditional_expression. Multiple
variables following the FOR must be separated by a comma.
Note: You can REQUIRE a condition to be true before access is permitted to one
or more variables that appear in the same window or screen. You can allow
the agent to navigate past variables that are not applicable. You can provide
source code that is shorter and easier for you to write.

The REQUIRE statement becomes active when MySabre Scribe run time
first encounters it. The REQUIRE statement remains active throughout the
script until the REQUIRE conditional expression is changed again within
the script.

If you need to use a variable following the FOR statement in a subsequent


section of your script, you must remove the REQUIRE instructions. Use
another REQUIRE statement comparing the variable you wish to release to
something that is always TRUE, such as variable < >
“abcdefghijklmnopqrstuvwxyz.”

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 59
Example:

REQUIRE [DEPART.TIME] = "" FOR [ARRIVE.TIME]


REQUIRE [AIRLINE1] FOR [AIRLINE2], [AIRLINE3]

WINDOW
R=1 C=5 H="Airline Availability"
ORIGIN: [ORIGIN.CTY] DESTINATION: [DESTIN.CTY]
DATE: [DEP.DATE] DEPARTURE TIME: [DEPART.TIME]

ARRIVAL TIME: [ARRIVE.TIME]

SPECIFY CARRIERS: [AIRLINE1] [AIRLINE2] [AIRLINE3]


ENDWINDOW
In this example, one of the REQUIRE statements is for controlling access to the
variable for [DEPART.TIME] and [ARRIVE.TIME]. Only one of these variables can
be used for this entry, so the [DEPART.TIME] variable must be blank before access
to [ARRIVE.TIME] is allowed.
The user is able to access both [AIRLINE2] and [AIRLINE3] if [AIRLINE1] has
data. However, in this case the user can enter data in [AIRLINE1], skip the variable
[AIRLINE2], and enter data in [AIRLINE3], causing an error with your script. You
have better error-checking and variable control if you build the data one step at a
time as in the next example.

REQUIRE [AIRLINE1] FOR [AIRLINE2] ;will not allow access to


;[AIRLINE2] unless [AIRLINE1]
;has data
REQUIRE [AIRLINE2] FOR [AIRLINE3] ;will not allow access to
;[AIRLINE3] unless [AIRLINE2]
;has data
The next section will undo the REQUIRE parameter for the variable
[ARRIVE.TIME] in case you will be using it elsewhere in the script and do not wish
the variable to continue observing the same parameter.

REQUIRE [DEPART.TIME] <> "X" FOR [ARRIVE.TIME]

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 60
RETURN

Description This command terminates a subroutine before reaching the end of the subroutine or
ENDSUB command.

Syntax RETURN
Note: Control of the script returns to the next command that follows the CALL
command used to invoke the subroutine.

The RETURN command can only be used within a subroutine and can be
used any number of times.

The RETURN command allows you the flexibility to terminate a subroutine


when a condition occurs without having to wait until the entire subroutine
has been executed.
Example:

WINDOW
Do you wish to book a car reservation? [NEED.CAR]
ENDWINDOW

IF [NEED.CAR] = "Y" THEN


CALL CAR
ENDIF

WINDOW
Do you wish to book a hotel reservation? [NEED.HOTEL]
ENDWINDOW

IF [NEED.HOTEL] = "Y" THEN


CALL HOTEL
ENDIF

commands...
commands...
commands...

SUB CAR:
MENU
"CAR SHOPPERS QUOTE"
CALL SHOPPER
"RATE QUOTE"
CALL RATES
"LIST CAR RENTAL LOCATIONS"
CALL RENTAL_LOCATIONS
"ACCESS CAR DRS"
CALL CAR_DRS
"EXIT MENU"
RETURN
ENDMENU
ENDSUB

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 61
In the example, a window asks the agent if a car is needed. If the answer is “Y”, the
subroutine CAR is called. When the subroutine CAR is executed, a menu appears
providing the user with several options to book a car reservation. If the agent chooses
“EXIT MENU”, the subroutine is terminated and the agent is returned to the next
command that follows the CALL command. In this case, another window asks the
agent if a hotel is needed.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 62
SPAWN

Description This command pauses the source script and launches a new script. When the new
script is completed or terminated, control is returned to the next line following the
SPAWN command in the source script.

Syntax SPAWN "expression"

Where expression
Evaluates to the file name of the script to be invoked at this point when the current
script is running. The expression could be a character string, a variable, or an
equation. When the new script completes, control returns to the source script.
Note: This command enables you to create smaller scripts, reducing the amount of
memory necessary for the script to run on the workstation.

This also allows you to use a modular design instead of creating one large
script. You can use EXTERNAL variables to pass client information and
agent input to another script. For example, instead of creating four different
scripts that use the same commands and menus to complete a task, you can
create one script with the common instructions needed by your other scripts.
You can use the SPAWN command to run the one common script and
return to the original script. This re-uses the code in all four scripts without
duplicating the same instructions four times.

If the SPAWN command is executed from a menu in the source script, when
control is returned to the source script, the next command listed under the
menu choice is executed. If the SPAWN command is the only command
listed under the menu choice, the script closes the menu and returns control
to the next command following the ENDMENU command.

If the SPAWN is the only command under a MENU cascade option, the
script returns control to the original menu, displaying it again for another
selection.
Example:

MENU
"Sell Hotel"
SPAWN "HOTEL"
"Sell Car"
SPAWN "CAR"
ENDMENU
In this example, when the agent selects a desired task, the appropriate script begins
executing.
The agent can choose to book a car, a hotel, a return flight, or exit the script. If the
agent selects “BOOK CAR”, the “AIRLINE” script is paused and the “CARSELL”

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 63
script is launched. When the “CARSELL” script completes, the “AIRLINE” script
begins executing at the next command following the SPAWN command. In this case,
the top partition of the agent’s screen is refreshed to the original state before the
“CARSELL” menu selection. After the Sabre system entry is executed, the menu
disappears and the script begins executing at the next command following the
MENU/ ENDMENU construct.

MENU
R=1 C=80 H="Transaction Options"
"BOOK CAR"
SPAWN "CARSELL"
»{HOME}*IA{ENTER}«

"BOOK HOTEL"
SPAWN "HTLSELL"
"RETURN AVAILABILITY"
SPAWN "RTNAVAIL"
"CONTINUING AVAILABILITY"
CALL CONTINUE
"EXIT SABRESCRIPT”
EXIT
ENDMENU

»{HOME}*S{ENTER}«

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 64
SUBROUTINE/ENDSUBROUTINE

Description A subroutine is a section of source code that can be called or used as often as needed.
The subroutine is used to complete a series of commands instead of repeating them
throughout the script.

Syntax SUBROUTINE Subroutine_Name:


Action_statement
ENDSUBROUTINE

or
SUB Subroutine_Name:
Action_statement
ENDSUB

Where Subroutine_Name
Specifies the name to be used to invoke this Subroutine. The name is separated
from the command by a space and is followed by a colon (:). The name can contain
up to 79 alphanumeric characters. The first character must be an alpha character. The
name cannot be a MySabre Scribe software command name.
Action_statement
Represents the command or commands to be executed in this subroutine. All
commands and constructs are allowed and are processed in order up to the
ENDSUBROUTINE command. When execution of the subroutine is complete,
processing continues on the line immediately following the original CALL
command.
Note: Using this command makes your scripts smaller and easier for you to read
in the future.

A subroutine is only executed using the CALL command. When execution


of the subroutine is complete, control returns to the next line immediately
following the CALL command.

A script processes all cocommands in sequence starting from the top. If a


subroutine is encountered that has not been called, the subroutine is ignored
or skipped.

Place subroutines at the end of your script to aid in reviewing or modifying


the program flow.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 65
Example:

»Y/SAB/HOT{ENTER}«

SCROLL_MENU1: ; this Label is so MENU can be


accessed continuously
MENU
"MOVE DOWN" ; MENU choice #1
CALL DOWN ; Calls the Subroutine "DOWN"
"MOVE UP" ; MENU choice #2
CALL UP ; Calls the Subroutine "UP"
"EXIT SABRESCRIPT"
EXIT ; MySabre Scribe command to
terminate SABRESCRIPT
ENDMENU
GOTO SCROLL_MENU1 ; this GOTO command to the MENU
Label will keep
; re-displaying the MENU until "EXIT
SABRESCRIPT"
; is selected.

SUB DOWN:
»MD{ENTR}«
ENDSUB

SUB UP:
»MU{ENTER}«
ENDSUB
In the example, a Sabre system entry is executed and a MENU appears for the user to
access function options that relate directly to what is on the screen. If the option
“MOVE DOWN” is selected, the subroutine “DOWN” is called. Once the “move
down” entry is executed within the subroutine “DOWN”, control is returned to the
next command following the MENU structure, which is a GOTO command to
“SCROLL_MENU1”. The MENU then reappears and the MENU functions can be
repeated until the “EXIT script” MENU choice is selected, terminating the script.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 66
WAIT

Description When a Sabre command is sent, the script will always wait for the first response. If a
command has two responses, such as a car shopping command, use the WAIT
command to wait for the second response.

Syntax WAIT
Example:

Sabre system entry: >>CFPHL/7JUL-10JUL/9A-4P/ICAR{ENTER}<<


First host response: RATE REQUEST BEING PROCESSED
Second host response: (rates are displayed)
The commands to handle this situation are:

>>CF[CITY]/[DEP.DTE]-[ARR.DTE]/[PU.TIME]-[DO.TIME]/
[CAR.TYPE]{ENTER}<<

WAIT ;will wait until the second


;response is received
In this example, the WAIT command instructs the script to wait for the second host
response before continuing. MySabre Scribe software expects only one response
from the Sabre system for each {ENTER} command in the script unless instructed
otherwise with the use of the WAIT command.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 67
WHENEVER/ENDWHENEVER

Description This command enables you to execute a series of commands, whenever a statement
becomes true.

Syntax WHENEVER Conditional_expression or


@Command_Button]
Action_statement
ENDWHENEVER

or
WE Conditional_expression or [@Command_Button]
Action_statement
EW

Where Conditional_expression
Specifies the conditions that must be true before executing the following
Action_statement. Multiple conditional expressions can be combined with
logical operators. For more information about logical operators, refer to the MySabre
Scribe Scripting Guide.

Command_Button
Specifies the command button system variable that invokes the commands in the
Action_statement. This must be preceded with the “@” symbol and enclosed
in brackets [ ].
The system variables designed for use as command buttons are:

[@OK], [@CANCEL], [@HELP], [@IGNORE], [@YES], [@NO]


[BTN0] through [@BTN9]
[BTN_8_0] through [BTN_8_9]
[@BTN_L10_0] through [@BTN_L10_9]
[@BTN_L15_0] through [@BTN_L15_9]
[@BTN_L20_0] through [@BTN_L20_9]

Action_statement
Represents the command or commands to be executed when the agent activates the
command button or the conditional expression becomes true. Most commands and
constructs are allowed and are processed in order up to the ENDWHENEVER
command. The exceptions are the commands that exit the WHENEVER statement
before the ENDWHENEVER is reached, such as GOTO, CALL, CHAIN, and
SPAWN.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 68
Note: This command can be used with any comparison, including the system
variables and command buttons.

This command can also be used in the short form, beginning with WE and
ending with EW.

When using buttons in a WHENEVER statement, the script will return to


the window containing the button when it reaches the ENDWHENEVER.

Using this feature, you can customize your scripts by providing a “Help”
system to help the agents interpret procedures and complete tasks within the
window

Caution: Use GOTO, CHAIN, and SPAWN with extreme caution within a
WHENEVER statement.

When using a GOTO inside a WHENEVER, be careful not to transfer


execution to a label outside the WHENEVER. Transferring execution
outside the WHENEVER may cause an unexpected execution failure.

CHAINS should not be used in a WHENEVER since the current script


will terminate before reaching the ENDWHENEVER.

SPAWNS should be used with care since the current script is


“swapped” out of memory and therefore the WHENEVERs are not
active.

Example 1:

WE ([@LOGIN_NAME]="CAK1") AND ([@DAY_NUMBER]=1)


SPAWN "EXPENSE"
EW
In the example, the script “EXPENSE”, which is an expense report generating script,
is executed when the active script (example 1) executes the WHENEVER statement
AND the current login name is CAK1 as well as the current day is the first of the
month.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 69
Example 2:

WHENEVER @HELP
WINDOW
R=13 C=5 H="Car Help System"
This text can be anything you wish to help the agent
understand the functionality of the "Car Availability"
Window. You can create your own help system with anything you
wish!
(Press any key to return to the previous Window)

ENDWINDOW

ENDWHENEVER

WINDOW
R=1 C=5 H="Car Availability"
RENTAL CITY: [RENTAL_CITY] CAR VENDOR: [CAR_VENDOR]
PICKUP DATE:[PKUP_DATE]PICKUP TIME:[PKUP_TIME]
DROP-OFF DATE: [DROP_DATE]DROP-OFF TIME:[DROP_TIME]
[@HELP]
ENDWINDOW
;the "H" in HELP is underlined or mnemonic which means that the
;agent can press the key sequence <ALT + H> to invoke the action
of
;the "@HELP" command button. When the agent finishes reading the
;"Help System Information" you provided, they will be returned to
;the previous Window to complete the task.

WHENEVER @HELP
WINDOW
R=13 C=5 H="Hotel Help System"
This text can be anything you wish to help the agent
understand the functionality of the "Hotel Availability"
Window. You can create your own help system with anything you
wish!
(Press any key to return to the previous Window)
ENDWINDOW
ENDWHENEVER

WINDOW
R=1 C=5 H="Hotel Availability"
CITY:[HOTEL_CITY]HOTEL VENDOR:[HOTEL_VENDOR]
CHECKIN DATE:[CHECKIN_DATE]CHECKOUT DATE:[CHECKOUT_DATE]

[@HELP]
ENDWINDOW
In this example, the system variable “@HELP” automatically displays the window
defined in the script WHENEVER the [@HELP] button is pressed.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 70
WHILE / ENDWHILE

Description This command enables you to have your script execute a group of statements in a
repetitive manner.

Syntax WHILE Conditional_expression


Action_statement
ENDWHILE

Where Conditional_expression
Specifies the conditions that must be true before executing the Action_statement.
Multiple conditional expressions can be combined with logical operators. For more
information about logical operators, refer to the MySabre Scribe Scripting Guide.
Action_statement
Specifies the command or commands to be executed or repeated only if the
conditional expressions are true. If the conditional expression is not true, this action
is skipped.
Note: This command allows you to repeat tasks without having to add more
source code. For example, you can use this type of command to do error
checking until the input is correct.

This command evaluates the expression BEFORE it executes one or


multiple commands.

If you want to execute a set of statements at least one time before testing a
conditional expression to repeat the instructions, use the REPEAT/UNTIL
loop statement. It evaluates the expression AFTER it has executed its
commands.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 71
Example 1:

WHILE [LNNBR] = "*"


»1*{ENTER}«

WINDOW
Enter the line number of your choice: [LNNBR]
For more availability type an "*".
ENDWINDOW

ENDWHILE
City pair availability has been displayed. A window is displayed to request the
desired line number.
In this example, as long as an asterisk is entered in the input field [LNNBR], the
script continues to request additional availability using 1*{ENTER}, and then re-
displays the window. If the input field [LNNBR] has any other value, the WHILE is
no longer true, so the commands following the ENDWHILE command are executed.
Example 2:
WHILE ([DONE] <> "C") OR ([DONE] <> "F")

WINDOW
This section of the script will repeat
unless you enter "C" to continue,
or "F" if finished: [DONE]
ENDWINDOW

ENDWHILE
This example demonstrates the ability to test multiple conditions within a single
WHILE/ENDWHILE construct using the two logical operators AND and OR. When
AND is used, all of the individual conditions must be true for the WHILE portion to
be true. When OR is used, only one of the individual conditions must be true for the
WHILE portion to be true as noted here.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 72
WINDOW/ENDWINDOW

Description This command defines a user interface or “pop-up window” on the Sabre system
screen. This user interface allows the agent to view information and input
information.

Syntax WINDOW
R=expression C=expression H="expression" ATTRIBUTES ROW
Text_or_Variables
ENDWINDOW

Where ATTRIBUTES ROW


An optional line immediately following the WINDOW command that defines the
row and column placement on the screen, the shadow, the border, and the header of
this window. If this line is omitted, the default attribute values are used for this
window.
R=expression
Expression evaluates to the row attribute specifying the placement of the upper left
corner of the window on the screen. “xx” indicates a row number from 1 to 24. If the
row attribute is not specified, the window is centered on the screen. This command
must be placed on the optional line immediately following the WINDOW command.
Note: If the row specified is greater than 24, the window is placed at the bottom of
the screen during run time. The attribute of “R-” is supported in this release.
C=expression
Expression evaluates to the column attribute specifying the
placement of the upper left corner of the window on the screen. “yy”
indicates a column number from 1 to 80. If the column attribute is
omitted, the window is centered on the screen. This command must
be placed on the optional line immediately following the WINDOW
command.
Note: If the column specified is greater than 80, the window is right justified to
accommodate the window. The attribute of “C-” is supported in this release.
H=expression
Where expression evaluates to the character string for an optional
header on the window. The header is automatically centered on the
window and cannot exceed 74 characters. It is commonly added by
specifying and alphanumeric text enclosed in quotation marks (" ").
This command must be placed on the optional line immediately
following the WINDOW command. The attribute of “H-” is
supported in this release.
Text_or_Variable

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 73
Specifies the descriptive text or input fields to be displayed in the
window. You can define up to 22 lines to appear in a window. The
maximum length of each text line, including input fields, in the
window is 74 characters.

Note: All text and variables are indented relative to the WINDOW command. If
you indent the WINDOW command 10 spaces and the text 13 spaces, the
text in the compiled script will be indented 3 spaces from the left of the
window.

Character sizes vary in MySabre v1.x and higher. When writing scripts for
MySabre, leave additional space on each side of variables. If two variables
are touching, one variable may display over the other when you run your
script in MySabre v1.x and higher.

The maximum width of the text in a window is 74 characters. The left edge
of the window is directly below the letter “W” in the WINDOW command.
This character position is defined as the first character of the window. A
window can contain a maximum of 22 lines.

You can place an input field into a window by typing the variable name and
enclosing it in square brackets or by selecting the desired variable from one
of the variable lists in the MySabre Scribe Developer software. Pressing the
ESC key or selecting the [@CANCEL] button in a popped-up window
causes all variables to return to their pre-window state.

Because windows are created in the command design work area, only the
variable name is shown. When the script is executed, the input field displays
with the defined length of the variable. Make sure you allow sufficient room
on each line for the maximum number of allowable characters.
Example:

WINDOW
R=10 C=25 H="Airline Availability"
ORIGIN: [ORIGIN.CTY] DESTINATION: [DESTIN.CTY]
DATE: [DEPART.DATE] TIME: [DEPART.TIME]
ENDWINDOW
In the example, a window is created with its beginning position on row 10, column
25. A “Header” is created describing the purpose of the window. Inside the window
are four variables with a label identifying the information to be placed in each
variable.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 74
WRITE

Description The WRITE command provides MySabre Scribe run time the ability to write to:
A text (ASCII) file
Directly to Sabre without displaying to the agent’s screen
The agent’s screen
The Windows clipboard
A Windows printer
Formatted delimited data file such as .CSV file

Syntax WRITE FILE = write_data R=row_num C=col_num


[Variable_1], [Variable_x], "String" , "\r\n"
or
WRITE F = write_data R=row_num C=col_num
[Variable_1], expression, "String" , "\r\n"

Where write_data
Specifies the location of the target for writing this data. The targets allowed for the
WRITE command are:
WRITE FILE = file_path
File_path evaluates to the file name to which you want data written. The file_path
could be a character string, or a variable. For example, “F:\WINWORD\TEST.TXT”
writes to a word processing file that has been saved in ASCII text format.
WRITE FILE = "SABRE:"
Writes the data to the Sabre system without displaying it on the emulator screen. This
is considered an input/output device and must be followed by a colon.
Note: This parameter must be used to send an entry to the Sabre system
before you can capture the response using the READ
FILE="SABRE: command.
When specifying variables for the Sabre system device, you must separate [VAR1]
and [VAR2] with a comma or a + sign. When separated with a comma, [VAR1] is
written to the Sabre system, followed by an ENTER. When separated with a + sign,
[VAR1] and [VAR2] would be concatenated first, then written to the Sabre system,
followed by an ENTER.
WRITE FILE = "EMULATOR:"
Writes the data to the screen in the active PARTITION. This is considered an
input/output device and must be followed by a colon.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 75
When writing to the emulator device, you must specify these special characters
(carriage return and line feed character) to add an {ENTER} to your command: “\r\n”
WRITE FILE = "CLIPBOARD:"
Writes the data to the Windows clipboard. This is considered an input/output device
and must be followed by a colon.
WRITE FILE = "PRINTER:"
Writes the data directly to the attached printer as defined in the Printers icon in the
Windows Control Panel. Follow the printer device with the text to print. Example:
WRITE F="PRINTER:" "My name is" + [F.NAME] + "\r\n". Row and column
parameters are allowed, however you may only move forward. Example: You can
tell MySabre Scribe software to print on ROW 24, and later to print on ROW 26, but
not ROW 10. To start a new page, a new character has been added to the list of
special non-printing characters (see page 40). Because Windows spools (or holds)
your print job until it is finished, you must close the printer in order to retrieve the
last page. (CLOSE "PRINTER:").
R=row_num
The row number on the page specifying the beginning point for this WRITE
command. If the row attribute is not specified, the WRITE begins at the first row on
the page or the current position if a row or column was previously specified. If the
row specified is greater than the total number of rows in the file, the WRITE
command appends the data to the last row by default.
C=col_num
The column number on the page specifying the beginning point for this WRITE
command. If the column attribute is not specified, the WRITE begins at the first
column on the page or the current position if a row or column was previously
specified. If the column specified is greater than the total number of columns in the
file, the WRITE command defaults to the last column.
[Variable_1]
Specifies the name of a variable where the data to be written is located.
[Variable_x]
Specifies the name of any variables where the data to be written is located. Use
additional variables as needed to write and process data. If this optional variable is
used, it must be preceded by a comma “,”.
"String"
Specifies a string of characters to be written. All strings must be enclosed in
quotation marks. Use additional "Strings" as needed to write static text. Place this
parameter in the same order as the data to be written, before or after variables as
required. If this optional variable is used, it must be preceded by a comma “,”.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 76
"\r\n"
Are the special characters (carriage return and line feed character) required to add an
{ENTER} to your command if using the WRITE FILE = "EMULATOR:" parameter.
The special characters insert a new line for all other devices.

You can also use “\f” to start a new page when using this command to write to a
printer.
Note: You can use these sources for the data to be written:
User-defined variable from the MySabre Scribe software Variables menu
System variable from the MySabre Scribe software Variables menu
Variable specified in a DEFINE statement for this script
Static character string that is always the same for each task or transaction
WRITE FILE = "CSV:"
See Section 3 for details about WRITE FILE=”CSV:”

You place these sources in your WRITE command in the sequence they are to be
written to the destination location. You can place either a string or a variable as the
first parameter, and you can use multiple strings and variables to complete the
information you need to write. If more than one source parameter is specified, the
parameters must be separated by a comma. All strings must be enclosed in quotation
marks.
Each WRITE command leaves a file pointer at the last character processed in a file.
If the file is not closed, any subsequent WRITE commands begin at that file pointer.
To specify the location to place the data in the source file, use the row and column
parameters in the WRITE command statement.

You can write to the Sabre system using either the Sabre system or emulator device
parameter. The functional difference between them is that the use of the WRITE
command with the Sabre system device sends the entry to the Sabre system without
it appearing on the screen, so the agent does not see the entry.

The emulator device sends the entry to the screen, which then sends it to the Sabre
system. The agent can view the entry performed by the script. You must use the
WRITE FILE = "SABRE:" command if you need to capture the response with the
READ FILE = "SABRE:" command.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 77
Examples:
WRITE FILE="DATAFILE.TXT" R=05 C=01 [VAR1], [VAR2], "ABCDEF"

WRITE FILE="SABRE:" [VAR1] + [VAR2] + "ABCDEF" + [VAR3]

WRITE FILE="EMULATOR:" R=05 C=01 [VAR1], "ABCDEF", [VAR2],


"\r\n"

WRITE F="C:\PROGRAM FILES\MICROSOFT


OFFICE\OFFICE\WINDWORD.EXE\DATA" R=9999 C=1 [V],", ",[V2],
"\r\n"

WRITE F="C:\PROGRAM FILES\MICROSOFT


OFFICE\OFFICE\EXCEL.EXE\DATA1" + [@LOGIN_NAME] R=5 C=1 [VAR],
"\r\n"

If row and column are omitted, the file pointer defaults to the current position of a
file that has been updated previously. Data is appended at the end of the file if it is
closed at the time of this command. When you read or open a file, the pointer
remains at the last character processed there until changed. If the row and column
indicated is beyond the end of the file, the data is appended to the end of the file as a
default.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 78
MySabre Scribe Extended Features

MySabre Scribe provides the following extended features:


• CSV
• EMAIL
• OPEN EXEC (launches external application)
• Global Variables
Note: Features described in this section are available for MySabre users only.
They are not available for Sabre For Windows users.

For an explanation of conventions used in this section, see Section 1.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Extended Features 79
CSV:

Description CSV: is a device to read/write comma separated files or similar files (e.g. tab
separated).
Note: This device allows writing and reading to and from empty cells.

Syntax READ F="CSV:file_path|delimiter" R=xx C=yy


READ F="CSV:file_path " R=xx C=yy
WRITE F="CSV:file_path|delimiter" R=xx C=yy
WRITE F="CSV:file_path " R=xx C=yy

Where CSV:
Constant device descriptor.
file_path
Path of the file that should be read/write.
Separator – the pipe symbol “|” separates file_path from delimiter.
Delimiter
Character that is a delimiter in the file (between columns). If delimiter argument is
not specified, default value is comma.
Note: Delimiter in file
The default delimiter value is a comma. However, any delimiter can be used
instead (such as a tab “\t”).
xx
Row number of the cell that should be read/write.
Yy
Column number of the cell that should be read/write.

Reading/Writing values from subsequent columns


When specifying more variables while reading/writing, values in subsequent columns
in the same row will be considered. When row/column arguments are not specified,
the read/write will be processed based on row and column number from the previous
operation on this file.
Empty cells
Writing to a row/column that does not exist in the file will create empty cells or rows
in the file as required. Reading from a row/column that does not exist in the file will
read an empty value.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Extended Features 80
Locking a file
If the CSV: command is used, the file will be locked until you use the CLOSE
command or exit the script. While a file is locked, it cannot be edited by another
application, such as Microsoft Excel.

Example:
READ F="CSV:C:/customers.csv|\t" R=1 C=5 [VAR1A], [VAR1B]

READ F="CSV:C:/customers.csv|\t" [VAR2A], [VAR2B]

READ F="CSV:" [VAR3A], [VAR3B]

The code will read a value from Row 1, Column 5 into [VAR1A], then it will read a
value from Row 1, Column 6 into [VAR1B].
The values will be read from file C:/customers.csv using tab as the delimiter.
The second line of code will read from Row 1, Column 7 into [VAR2A] and Row 1,
Column 8 into [VAR2B]. The third line of code will read Row 1, Column 9 into
[VAR3A] and Row 1, Column 10 into [VAR3B].

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Extended Features 81
EMAIL:

Description EMAIL: Uses the local email client (e.g., Microsoft Outlook) to open an email
window and pre-populate the window with text.

Syntax WRITE F="EMAIL:email_field"


CLOSE "EMAIL:email_action"

Where EMAIL:
Constant device descriptor

email_field

One of the values: TO, CC, BCC, SUBJECT, BODY

email_action

One of the actions: CREATE, CANCEL

Note: Multiple addresses in the email

To add multiple addresses for the email (TO, CC or BCC) use the following
syntax:

WRITE F="EMAIL:TO" "john@doe.com;bob@smith.com"

or

WRITE F="EMAIL:TO" "john@doe.com"


WRITE F="EMAIL:TO" "bob@smith.com"

Subject and body fields

Text for subject and body fields in the email can be passed in more than one
command:

WRITE F="EMAIL:SUBJECT" "First part of the subject "

WRITE F="EMAIL:SUBJECT" "Second part of the subject "

WRITE F="EMAIL:BODY" "First part of the body "

WRITE F="EMAIL:BODY" "Second part of the body "

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Extended Features 82
Using new line and tab in the email

To write a new line in the body of the email, insert the following code: '\n'
To insert a tab, insert the following: '\t'.

Canceling the email

All elements of the email can be cleared using:

CLOSE "EMAIL:CANCEL"

Creating the email

The email window is created by using:

CLOSE "EMAIL:CREATE"

Note: The email window will appear on top of the MySabre application.

Example:
WRITE F="EMAIL:to" "some@email.com"

WRITE F="EMAIL:to" "some2@email.com"

WRITE F="EMAIL:cc" "some3@email.com"

WRITE F="EMAIL:subject" "This is "

WRITE F="EMAIL:subject" "reservation confirmation"

WRITE F="EMAIL:body" "Dear " + [NAME] + "\n\n"

WRITE F="EMAIL:body" "You have successfully booked ticket to: "

WRITE F="EMAIL:body" [DEPT]


CLOSE "EMAIL:create"

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Extended Features 83
OPEN EXEC:

Description Use the OPEN command to launch an external application.

Syntax OPEN F="EXEC:application_to_launch"

Where EXEC:
Constant device descriptor

application_to_launch

Application (exe or bat file) that should be launched. If the application accepts any
command line arguments, they can be passed as well.

Note: The application_to_launch string will often include a fully qualified file
path. If the file path exceeds 80 characters, you must use multiple lines of
code, each line being 80 characters or less. The compiler knows to connect
the lines if they end with a “plus sign” (+).

Example:
OPEN F="EXEC:C:/Program Files/Microsoft Office/OFFICE11/” +
“WINWORD.exe c:\customers.txt"
The code will open file c:/customers.txt in MS Word editor.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Extended Features 84
GLOBAL VARIABLES

Description MySabre Scribe introduces global scope for variables. A variable has a global scope
if its name begins with the # (pound/hash sign) character. The value of the global
variable is stored as long as the browser is not closed (applet remains in JVM).
Navigating to MyProfile page, or even to any third party web page, and then going
back to MySabre will not erase values of global variables. Values of global variables
are available in any script. Any script is allowed to read a previously assigned value,
as well as modify it.

Syntax DEFINE [#GLOBAL=ANY:::::]

Where #GLOBAL
Name of the global variable.
Note: In order to use a global variable, an appropriate DEFINE statement has to
be added to every script, as shown below.

Example:

Script 1 assigns values to global variables:

DEFINE [#NAME=ALPHA:60::::]

DEFINE [#AGE=NUMERIC:60::::]

WINDOW

name [#NAME]

age [#AGE]

ENDWINDOW

Script 2 uses previously assigned values:

DEFINE [#NAME=ALPHA:80::::]

DEFINE [#AGE=NUMERIC:80::::]
»name=[#NAME] age=[#AGE]

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Extended Features 85
Appendix A

System Variables

The following pages contain each of the MySabre Scribe software system variables
and their respective attributes. No changes to system variables are allowed in your
scripts, except to change the label name of the “generic” command buttons @BTN0
through @BTN_L20_9. For all others, the variable contains the data returned from
the Sabre system.
In the tables on the following pages, the variable types are abbreviated as follows:
A Alpha
A/N Alphanumeric
D Date
Dec Decimal
M Mask
N Numeric
T Time text

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix A 86


Name Typ Lngth Man- Mus Description Variable
e datory t Value
Fill?

@ACCUM_RSP A 10 N N Accumulated “Yes” or


responses “No” if
indicator accumulate
d responses
is on
@BTN_PRSD Any 20 N N Last button Default
pressed value of the
last button
pressed
@CALLING_SCRIPT Any 15 N N Name of “EPR” if
spawning current
script script
spawned by
EPR
@CURRENT_SCRIPT Any 8 N N Name of “EPR” if
current script the current
script is
EPR
@DATE D 7 Y Y Current date “12JUN99”
@DAY_NAME A 3 Y Y Three-letter “TUE” if
day of the today is
week Tuesday
@DAY_NUMBER N 2 Y N Numeric 12 if
value—day of today’s date
month is 12 June
@DIRECTORY_PATH A/N 40 N N Current path
@FSERVER_NAME Any 30 Y N File server “@SABRE
name or ID 1”
Fileserver
Name
@HOST_CARR_RTN A 3 Y N YES/NO “YES” or
indicator for “NO” if
host carriage host
return Carriage
Return is
active
@FSERVER_NAME Any 30 Y N File server “@SABRE
name or ID 1”
Fileserver
Name
@HOUR N 2 Y N Numeric hour 14 if time is
using 24-hr 2:48 PM
clock

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix A 87


Name Typ Lngth Man- Mus Description Variable
e datory t Value
Fill?

@KYBRD_LOCKED A 3 Y N YES/NO “YES” or


indicator for “NO” if
the Sabre keyboard is
system locked
@LOGICAL_DRIVE M: 2 Y Y Logical drive “A:” Drive
A* identifier letter of
default
drive
@LOGIN_NAME Any 48 Y N Novell “JRD1”
NetWare® login name
login name of current
user
@MINUTE N 2 Y N Numeric value 57 if time is
of minutes 2:57 a.m.
@MONTH_NAME A 3 Y Y Three-letter “APR” if
abbr. for today is
month April 15th
@MONTH_NUMBER N 2 Y N Numeric value 9 if today is
of the month a day in
September
@OPERATING_SYS A 7 Y N DOS/Windows “DOS” or
emulator
indicator
@OPERATING_VER Dec 5 Y N DOS/Windows version
number
@SECONDS N 2 Y N Numeric value 35 if time is
of seconds
@SWITCHES A/N 14 N N Control run See
time “Switches”
in this
appendix
@SYSTEM_ERROR N 2 N N Number of See
DOS error Appendix B
@SYSTEM_UNAVAI A 3 Y N YES/NO “YES” or
L indicator of “NO” if the
system status system is
unavailable
@TEST_MODE A 10 N N Yes/No “YES” if
indicator for test mode is
test mode on
@TIME T 5 Y Y Current time in 1624 if time
a 24- hour is 4:24 PM
mode

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix A 88


Name Typ Lngth Man- Mus Description Variable
e datory t Value
Fill?

@UMSG A 3 Y N YES/NO “YES” or


indicator for “NO” if
unsolicited UMSG is
msg active
@WINDOW_LENGT N 2 Y N Row length of Length of
H active window Active
Window
@WINDOW_MODE A 5 Y N MySabre mode “SPLIT”
“SPLIT/FULL OR “FULL”

@WINDOW_WIDTH N 2 Y N Column width Width of
of active active
window window
@YEAR_NUMBER N 4 Y Y Numeric value 2001 for
of the year year 2001

Predefined Command Buttons

Name Type Length Mandatory Must Fill? Description

@OK A 8 N N Pre-defined button for OK


@CANCEL A 8 N N Pre-defined button for
CANCEL
@IGNORE A 8 N N Pre-defined button for
IGNORE
@YES A 8 N N Pre-defined button for YES
@NO A 8 N N Pre-defined button for NO
@OK A 8 N N Pre-defined button for OK
@HELP A 8 N N Pre-defined button for
HELP

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix A 89


Generic Command Buttons

Name Type Length Mandatory Must Fill Description

@BTN0 Any 5 N N User-defined


command buttons
@BTN1 Any 5 N N User-defined
command buttons
@BTN2 Any 5 N N User-defined
command buttons
@BTN3 Any 5 N N User-defined
command buttons
@BTN4 Any 5 N N User-defined
command buttons
@BTN5 Any 5 N N User-defined
command buttons
@BTN6 Any 5 N N User-defined
command buttons
@BTN7 Any 5 N N User-defined
command buttons
@BTN8 Any 5 N N User-defined
command buttons
@BTN9 Any 5 N N User-defined
command buttons
@BTN_8_0 Any 8 N N User-defined
command buttons
@BTN_8_1 Any 8 N N User-defined
command buttons
@BTN_8_2 Any 8 N N User-defined
command buttons
@BTN_8_3 Any 8 N N User-defined
command buttons
@BTN_8_4 Any 8 N N User-defined
command buttons
@BTN_8_5 Any 8 N N User-defined
command buttons
@BTN_8_6 Any 8 N N User-defined
command buttons
@BTN_8_7 Any 8 N N User-defined
command buttons
@BTN_8_8 Any 8 N N User-defined
command buttons

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix A 90


Name Type Length Mandatory Must Fill Description

@BTN_8_9 Any 8 N N User-defined


command buttons
@BTN_L10_0 Any 10 N N User-defined
command buttons
@BTN_L10_1 Any 10 N N User-defined
command buttons
@BTN_L10_2 Any 10 N N User-defined
command buttons
@BTN_L10_3 Any 10 N N User-defined
command buttons
@BTN_L10_4 Any 10 N N User-defined
command buttons
@BTN_L10_5 Any 10 N N User-defined
command buttons
@BTN_L10_6 Any 10 N N User-defined
command buttons
@BTN_L10_7 Any 10 N N User-defined
command buttons
@BTN_L10_8 Any 10 N N User-defined
command buttons
@BTN_L10_9 Any 10 N N User-defined
command buttons
@BTN_L15_0 Any 15 N N User-defined
command buttons
@BTN_L15_1 Any 15 N N User-defined
command buttons
@BTN_L15_2 Any 15 N N User-defined
command buttons
@BTN_L15_3 Any 15 N N User-defined
command buttons
@BTN_L15_4 Any 15 N N User-defined
command buttons
@BTN_L15_5 Any 15 N N User-defined
command buttons
@BTN_L15_6 Any 15 N N User-defined
command buttons
@BTN_L15_7 Any 15 N N User-defined
command buttons
@BTN_L15_8 Any 15 N N User-defined
command buttons
@BTN_L15_9 Any 15 N N User-defined
command buttons

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix A 91


Name Type Length Mandatory Must Fill Description

@BTN_L20_0 Any 20 N N User-defined


command buttons
@BTN_L20_1 Any 20 N N User-defined
command buttons
@BTN_L20_2 Any 20 N N User-defined
command buttons
@BTN_L20_3 Any 20 N N User-defined
command buttons
@BTN_L20_4 Any 20 N N User-defined
command buttons
@BTN_L20_5 Any 20 N N User-defined
command buttons
@BTN_L20_6 Any 20 N N User-defined
command buttons
@BTN_L20_7 Any 20 N N User-defined
command buttons
@BTN_L20_8 Any 20 N N User-defined
command buttons
@BTN_L20_9 Any 20 N N User-defined
command buttons

Switches

[@SWITCHES] = "24HOUR" Displays time in 24-hour format


[@SWITCHES] = "12HOUR" Displays time in 12-hour format
[@SWITCHES] = "CLIPALL" Removes leading and trailing spaces from variable
values
[@SWITCHES] = "CLIPFRONT" Removes only leading spaces from variable values
[@SWITCHES] = "CLIPBACK" Removes only trailing spaces from variable values
[@SWITCHES] = "NOCLIP" Keeps leading/trailing spaces in variable values
[@SWITCHES] = "CONVERTSABRE" Causes run time to convert DOS characters to their
Windows equivalencies
[@SWITCHES] = "NOCONVERTSABRE" Causes run time to treat emulator characters exactly as
encountered
[@SWITCHES] = "SHOWTRUNCATE" Causes run time to display a warning if the script
attempts to store a value larger than the variable will
contain. Pressing ENTER removes the warning and
shortens the value to fit the variable.
[@SWITCHES] = "NOSHOWTRUNCATE" Causes run time to shorten the value to fit the variable
without displaying the warning

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix A 92


Appendix B

System Error Codes

Error Code Meaning

02 File not found


05 Access denied
101 Search data not found

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix B 93


Appendix C

Compiler Error Messages

1– The referenced command is not a valid MySabre Scribe command.


UNKNOWN_
The referenced command is not valid MySabre Scribe software command or is not in
COMMAND
correct syntax. This usually occurs with misspelling or spaces in the commands, no
colon following a label, or no brackets surrounding a variable. Refer to the editor’s
online help system for correct command syntax.

2– The referenced command is not a valid MySabre Scribe command or Variable.


INVALID_
The referenced command is not a valid MySabre Scribe software command or is not
COMMAND
in correct syntax. This usually occurs with misspelling or spaces in the commands,
no colon following a label, or no brackets surrounding a variable. Reference the
editor’s online help system for correct command syntax.

3– This Sabre script has encountered an Unknown System error. Please contact the
UNKNOWN_ LAN Administrator within your office.
SYSTEM_
This script has encountered an Unknown System error. Contact the LAN
ERROR
administrator within your office.

4– There is an Unknown Fatal error with this Sabre script and the Compiler.
UNKNOWN_ Please report this to the Applications Support Help Desk.
FATAL_
Report this to the help desk.
ERROR

5– There is an Unknown Opcode Fatal error with this Sabre script and the
UNKNOWN_ Compiler.
OPCODE
There is an Unknown Opcode Fatal error with this script and the compiler.

6– This Sabre script has encountered an Out of Memory System error.


OUT_OF_
This script has encountered an Out of Memory system error. To make more memory
MEMORY
available to the compiler, exit the design module and re-access the design module,
answering NO to the “Load Hotkeys?” prompt. Close other applications that are
currently open. If the error persists, contact the LAN administrator within your
office. Refer to the sections, “Using the Editor,” “Using the Compiler,” and
“Techniques for Developing Scripts” in the Scripting Guide for further information
on efficient script design.

7– This Sabre script has encountered a Process Stack Underflow Fatal error.
PROCESS_ Please report this to the Applications Support Help Desk.
STACK_
There is a Process Stack Underflow Fatal error with this script and the compiler.
UNDERFLOW
Contact the help desk.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 94


8– This Sabre script has encountered a Local Label Underflow Fatal error. Please
LOCAL_ report this to the Applications Support Help Desk.
LABEL_
There is a Local Label Underflow Fatal error with this script and the compiler. Please
UNDERFLOW
report this to the help desk.

9– The execution line of the compiler contains an invalid parameter.


INVALID_
An invalid parameter was used in the execution line of the compiler. Enter compile /h
PARAMETER
at the DOS prompt to view the valid parameters.

10 – A LABEL with the same name has been created more than once in your Sabre
LABEL_ script.
ALREADY_
This could have been caused by 1) creating a label more than once using the same
FOUND
name; 2) misspelling a label in which the misspelled label happens to be the same
name as another label which exists somewhere else in your script; 3) one of the label
names may have been intended to be a subroutine name instead of a label.

11 – A LABEL has the same name identifier as a previous SUBROUTINE, or a


LABEL_ CALL command attempted to reference a LABEL instead of a SUBROUTINE.
FOUND
This usually occurs when either the label or the subroutine is misspelled. Rename
either the label or the subroutine using a unique identifier, and update all
corresponding GOTO or CALL commands. This also occurs when a CALL
command was used instead of a GOTO command to reference a label. The CALL
command is used in conjunction with a subroutine, and the GOTO command is used
in conjunction with a label. Refer to the editor’s online help system for more
information on the use of CALL/SUBROUTINE and GOTO/LABEL

12 – A SUBROUTINE has the same name identifier as a previous LABEL, or a


CANNOT_ GOTO command attempted to reference a SUBROUTINE instead of a LABEL.
GOTO_SUB
This usually occurs when either the label or the subroutine is misspelled. Rename
either the label or the subroutine using a unique identifier, and update all
corresponding GOTO or CALL commands. This also occurs when a GOTO
command was used instead of a CALL command to reference a subroutine. The
GOTO command is used in conjunction with a label, and the CALL command is
used in conjunction with a subroutine. See the editor’s online help system for more
information on the use of GOTO/LABEL and CALL/SUBROUTINE.

13 – The LABEL name cannot be a MySabre Scribe Command or begin with a


LABEL_CAN Numeric.
NOT_BE_
The label name is the same as a MySabre Scribe software command.
COMMAND

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 95


14 – A GOTO statement was found without a corresponding LABEL name.
MISSING_
This usually occurs when the label name is missing or embedded in a Sabre system
LABEL
entry or window.

15 – A SUBROUTINE with the same name identifier has been created more than
SUB_ once in your Sabre script.
ALREADY_
This could have been caused by 1) creating two subroutines that have the same name
FOUND
identifier; 2) misspelling a subroutine name in which the misspelled subroutine
happens to be the same name as another subroutine that exists somewhere else in
your script; 3) one of the subroutine names that was created may have been intended
to be a label instead of a subroutine.

16 – A SUBROUTINE has the same name identifier as a previous LABEL or a


SUB_FOUND GOTO command attempted to reference a SUBROUTINE instead of a LABEL.
This usually occurs when either the label or the subroutine is misspelled. Rename
either the label or the subroutine using a unique identifier, and update all
corresponding GOTO or CALL commands. This also occurs when a GOTO
command was used instead of a CALL command to reference a subroutine. The
GOTO command is used in conjunction with a label, and the CALL command is
used in conjunction with a subroutine. Refer to the editor’s online help system for
more information on the use of GOTO/LABEL and CALL/SUBROUTINE.

17 – A LABEL has the same name identifier as a previous SUBROUTINE, or a


CANNOT_ CALL command attempted to reference a LABEL instead of a SUBROUTINE.
CALL_LABEL
This usually occurs when either the label or the subroutine is misspelled. Rename
either the label or the subroutine using a unique identifier, and update all
corresponding GOTO or CALL commands. This also occurs when a CALL
command was used instead of a GOTO command to reference a label. The CALL
command is used in conjunction with a subroutine, and the GOTO command is used
in conjunction with a label. See the editor’s online help system for more information
on the use of CALL/SUBROUTINE and GOTO/LABEL.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 96


18 – The SUBROUTINE name cannot be a MySabre Scribe Command or begin with
SUB_ a Numeric.
CANNOT_BE
The subroutine name is the same as a MySabre Scribe software command.
_COMMAND
Example:
MENU
"WINDOW"
CALL WINDOW
"EXIT"
CALL EXIT
ENDMENU

Both of the CALL statements would generate this error. To correct the above
example, change the subroutine name from WINDOW to something that is not a
command, such as WINDOW4, and change the CALL EXIT to EXIT as shown
below.
MENU
"WINDOW"
CALL WINDOW4
"EXIT"
EXIT
ENDMENU
The other cause for this error is that the subroutine name begins with a numeric or a
character that is reserved for MySabre Scribe software, such as the “$”. Change the
subroutine name so that it does not begin with a numeric or a reserved character.

19 – A CALL statement was found without a corresponding SUBROUTINE name.


MISSING_
This usually occurs when the subroutine name is missing or embedded in a Sabre
SUB
system entry or window.

20 – A colon was expected and not found at this token.


MISSING_
A colon was not found at this token. This usually occurs with a subroutine name that
COLON
does not end in a colon.

Example:
SUB SELLCAR
The subroutine SELLCAR is not followed by a colon.

Corrected example:
SUB SELLCAR:

21 – LABEL names cannot begin with a Numeric character.


LABEL_
Change the first character of the label name to an alpha character.
START_
NUMERIC

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 97


22 – Expected to find an operator, such as =, +, –, *, /, to represent an arithmetic
EXPECTED_ operation.
OPERATOR
This means that an operator was expected to execute a mathematical function.

Example:
[TOTAL] = [TOTAL] 1
This would result in an error because the compiler was expecting to find one of the
operators (+, –, *, or /) between the variable [TOTAL] and the number 1.

Corrected example:
[TOTAL] = [TOTAL] + 1

23 – Incomplete expression...expected to find a variable or value following the


EXPECTED_ operator (+, –, *, or /). The expression exists without a value to the right of the
OPERAND operator.
An operand is the value or variable that the operator (+, –, *, or /) performs its
function on.

Example:
[TOTAL] = [TOTAL] +
The operator is the plus symbol “+” and the operand is not present to the right of the
operator, the plus sign.

Corrected example:
[TOTAL] = [TOTAL] + 1

24 – A FOR was expected at this token.


FOR_
There is no FOR at this token and one was expected. This usually occurs with a
EXPECTED
REQUIRE command that does not have a corresponding FOR command.

25 – An AS was expected at this token.


AS_
There is no AS at this token and one was expected. This error usually occurs with a
EXPECTED
RENAME command that does not have a corresponding AS command.

26 – An " was expected at this token.


QUOTE_
There is no " at this token and one was expected. This usually occurs with the
EXPECTED
beginning of a string with no " surrounding the string.

Example:
CLOSE FILE = F: C:\WINDOWS\NOTEPAD\DATA.TXT"

A " was expected following the FILE=.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 98


27 – An operator, such as =, +, –, *, / was unexpectedly found.
UNEXPECT-
This means that an operator was found in an invalid place.
ED_
OPERATOR Example:
[TOTAL] = + [TOTAL] + 1
This would result in an error because the compiler found the operator (+) between the
equals sign and the variable [TOTAL].

28 – The operator symbol for equal "=" was expected in the expression.
MISSING_
The compiler expected to find an equals symbol “=” in the expression.
EQUAL
Example:
[TOTAL] [TOTAL] + 1
In the example, the equals symbol is missing between the variables [TOTAL].

Corrected example:
[TOTAL] = [TOTAL] + 1

29 – The IF command does not have a corresponding THEN command.


MISSING_
The IF command does not have a corresponding THEN command. Insert the THEN
THEN
command following the IF statement.

Example:
IF [PASSENGER] > 8 THEN

GOTO GROUP

30 – Cannot subtract an Alpha character or string from another string, only


NEG_ONLY_ Numerics can be subtracted.
NUMERIC
Cannot subtract an alpha character or string from another string. Only numerics can
be subtracted. For example, “A” - “B” does not generate a value. Whereas, 5-4 would
generate the value 1.

31 – The value is not a string value


NOT_
The value used in this equation must be a string value.
STRING

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 99


32 – The length operator $ can only be used in conjunction with a variable.
LENGTH_
The length operator $ can only be used in conjunction with a variable. It cannot be
ONLY_
used with a string or number.
VARIABLE
Example:
[LNGTH_CITY] = $"Boston"
This example would error on “Boston” because “Boston” is a string of characters.

Corrected example:
[LNGTH_CITY] = $[CITY_NAME]
For more information on the use of length operand, refer to the editor’s online help
system.

33 – The equation or comparison is too complex for the MySabre Scribe compiler.
EQUATION_
The equation or comparison is too complex for the compiler. Break up the equation
TOO_
or comparison into smaller logical parts, and recompile. This error occurs when an
COMPLEX
equation or comparison is several lines long and has multiple sections, ANDs or
ORs.

34 – The operation performed on a "Date" type variable is invalid.


INVALID_
The operation performed with the “Date” type variable is not a valid calculation with
DATE_
a “Date” variable. This usually occurs when performing an operation other then
OPERATION
subtraction on 2 “Date” variables or values, while attempting to calculate the number
of days between 2 dates, or when adding a number of days to a date.

Example:
[DATE2] = [DATE1] + JUN12
There is no value to the addition of 2 dates. Only by subtracting 2 dates does the
number of days between the dates calculate.

Corrected examples:
[DAYS] = [DATE1] - [DATE2]

[DATE2] = [DATE1] + 31

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 100


35 – The operation performed on a "Time" type variable is invalid.
INVALID_
The operation performed with the “Time” type variable is not a valid calculation.
TIME_
This usually occurs when performing an operation other then subtraction on 2 time
OPERATION
variables or values, while attempting to calculate the amount of time between 2
times, or when adding a number of hours/ minutes to a time.

Example:
[TIME2] = [TIME1] + 10P
There is no value to the addition of 2 times. Only by subtracting 2 times does the
number of hours/ minutes between the times calculate.

Corrected examples:
[HOURS] = [TIME1] - [TIME2]

[TIME2] = [TIME1] + 2

36 – The value used with the calculation is not an Alpha or a String.


NOT_ALPHA
This usually occurs when an attempt is made to concatenate characters or strings, and
one or several of the characters or strings is a numeric instead of an alpha.

Example:
[NAME] = [FIRST] + 123
The variables [NAME] and [FIRST] are type alpha and the value to the right of the
equation must be compatible with the variable type to the left of the equation, that is,
the value 123 must be an alpha character instead of a numeric character.

Corrected example:
[NAME] = [FIRST] + "Smith"

37 – The variable used is not type "Alpha", "Alpha/Numeric", "Any" or "Mask".


NOT_ALPHA
This usually occurs when an attempt is made to combine more than one string using a
_VARIABLE
variable that is not defined as type “Alpha”, “Alphanumeric”, “Any”, or “Mask”.

Example:
[NAME] = [TOTAL] + "AABCD"
The variable [NAME] is an alpha variable type and [TOTAL] is numeric. The
variable type to the right of the equation must be compatible with the variable type to
the left of the equation, that is, both must be type “Alpha”, “Alphanumeric”, “Any”,
“Mask”, or any combination.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 101


38 – The value used with the calculation is not a Numeric value.
NOT_
This usually occurs when an attempt is made to execute a numeric mathematical
NUMERIC
function using a value which is non-numeric.

Example:
[TOTAL] = [TOTAL] + "B"
The variable [TOTAL] is numeric and the value to the right of the equation must be
compatible with the variable type to the left of the equation. That is, the value “B”
must be a numeric character instead of an alpha character.

Corrected example:
[TOTAL] = [T0TAL] + 10

39 – The variable used with the calculation is not type "Numeric", "Decimal",
NOT_ "Time" or "Date".
NUMERIC_
This usually occurs when an attempt is made to execute a numeric mathematical
VARIABLE
function using a variable which is not defined as type “Numeric”, “Decimal”,
“Time”, or “Date”.

Example:
[TOTAL] = [NAME] + 1
The variable [NAME] is an alpha variable type and [TOTAL] is numeric. The
variable type to the right of the equation must be compatible with the variable type to
the left of the equation. That is, both must be type “Numeric”, “Decimal”, “Time”,
“Date”, or any combination.

40 – A VARIABLE was expected at this token.


VARIABLE_
There is no VARIABLE at this token and one was expected. This usually occurs with
EXPECTED
a DEFAULT or REQUIRE command that is not followed immediately by a
VARIABLE name.

41 – The Variable is already defined as an External Variable.


VARIABLE_
The variable is already defined as an external variable. Remove the extra
ALREADY_
EXTERNAL command.
EXTERNAL

42 – This variable does not have a DEFINE Variable Statement or does not appear
VARIABLE_ in the User Defined or System Variable Lists.
NOT_FOUND
The variable used in the script is not defined using a DEFINE variable statement and
does not appear in the user-defined or system variable lists. Refer to the editor’s
online help system for more information on variables and DEFINE statements.

43 – This variable name has already been DEFINED in a previous DEFINE


VARIABLE_ statement.
ALREADY_
At least two DEFINE variable statements exist with the same variable name. One of
DEFINED
the variable names needs to be changed in the script.
MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 102
44 – The Variable name contains invalid characters. Characters must be Alphas,
BAD_ Numerics, and Punctuation characters excluding (Colon, Brackets and Spaces).
VARIABLE_
The variable name contains invalid characters, most commonly, a space. Remove or
NAME
replace the invalid characters with a valid character.

45 – The variable length is defined as 0, change variable length to a valid length.


VARIABLE_
The variable length is defined as 0. Change the variable length to a valid length.
LENGTH_
ZERO

46 – The variable length is invalid.


INVALID_
The Numeric variable length is invalid in this DEFINE statement. Numeric variables
SIZE_
can be any length from 1-80.
NUMERIC

47 – The variable length is invalid.


INVALID_
The Decimal variable length is invalid in this DEFINE statement. Decimal variables
SIZE_
can be any length from 1-80.
DECIMAL

48 – The variable length is invalid.


INVALID_
The Time variable length is invalid in this DEFINE statement. Time variables can be
SIZE_TIME
any length from 2-5.

49 – The variable length is invalid.


INVALID_
The Date variable length is invalid in this DEFINE statement. Date variables can be
SIZE_DATE
any length from 5-7.

50 – The variable length is invalid.


INVALID_
The Alpha variable length is invalid in this DEFINE statement. Alpha variables can
SIZE_ALPHA
be any length from 1-80.

51 – The variable length is invalid.


INVALID_
The Alpha/Numeric variable length is invalid in this DEFINE statement.
SIZE_ALPHA
Alpha/numeric variables can be any length from 1-80.
NUMERIC

52 – The variable length is invalid.


INVALID_
The Any variable length is invalid in this DEFINE statement. Any variables can be
SIZE_ANY
any length from 1-80.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 103


53 – The variable length is invalid.
INVALID_
The Mask variable length is invalid in this DEFINE statement. Mask variables must
SIZE_MASK
be the same length as the number of characters in the Mask field.

Example:
DEFINE [ADV_NBR=M-ANANNNN:7::::]
A variable length of anything other then 7 would be invalid because there are 7
characters in the Mask or M- field.

54 – The Mandatory/Optional field of the DEFINE statement is invalid.


INVALID_
The Mandatory/Optional field of the DEFINE statement must be either M, O, Mand,
MANDA-
or OPT. Change the field to M or Mand for a mandatory variable, and O or OPT for
TORY
an optional variable.

Corrected examples:
DEFINE [CITY=ALPHA:3:MAND:::]

DEFINE [CITY=ALPHA:3:OPT:::]

55 – The MustFill field of the DEFINE statement is invalid.


INVALID_
The MustFill field of the DEFINE statement must be either F, FILL, or Blank.
MUSTFILL
Change the field to F or FILL for a MustFill variable or blank to remove the MustFill
restriction on the variable.

56 – Default value of the variable is larger then the variable length.


VALUE_
The default value in the DEFINE statement is larger then the variable length. Correct
LARGER_
the default value to reflect the variable length or change the variable length.
THAN_
LENGTH

57 – The Default value type is not compatible with the variable type.
ILLEGAL_
The Default value type in the DEFINE statement is not compatible with the variable
DEFAULT_
type. For example, a numeric variable cannot have a default value of ABCDEF. The
VALUE
default value must be compatible with a numeric type.

58 – The M- or Mask field has no character types defined.


MASK_
The M- or Mask field has no character types defined. Add the correct character types
EMPTY
to the M- or Mask field.

Example:
DEFINE [ADV_NBR=M-:7::::]
Corrected example:
DEFINE [ADV_NBR=M-ANANNNN:7::::]

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 104


59 – The specified value for the MASK variable does not match the MASK
VALUE_ parameters.
DIFFERENT_
If a MASK variable is defined with specific parameters, a value that does not match
THAN_MASK
the MASK parameters cannot be DEFAULTED or set equal to the MASK variable.
For example, if a MASK variable has parameters of NNAAA, the following
DEFAULT statement would generate this error:
DEFAULT [MASKVAR] = "APR12"
This would error because the variable only allows 2 numeric characters followed by
3 alpha characters.

Corrected example:
DEFAULT [MASKVAR] = "12APR"

60 – There are extra fields in the DEFINE statement.


EXTRA_
There are extra fields in the DEFINE statement. Following the = sign, there is a
PARA-
maximum of 6 fields. This usually occurs when there are more then 6 :’s following
METERS_IN_
the = sign.
DEFINE

61 – Variable type in the DEFINE statement is not a valid type.


UNKNOWN_
The variable type in the DEFINE statement is not valid. It must be one of the
DEFINE_
following:
TYPE
N or NUM or NUMERIC for numeric
A or ALPHA for alphas
. or DEC or DECIMAL for decimal
/ or A/N for alphanumeric
T or TIME for time
D or DATE for date
M or MASK for mask

62 – An invalid Sabre character is located within the Sabre command or Chevrons.


BAD_
An invalid Sabre system character is located within the Sabre system command or
COMMAND_
chevrons. This usually occurs when lower case characters are included within the
IN_SABRE
command instead of upper case, or when an invalid character, such as ! or &, is
located within the command.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 105


63 – MySabre Scribe cannot interpret the entered key sequence in the Sabre
UNKNOWN_ command.
KEY_
MySabre Scribe software cannot interpret the entered key sequence in the Sabre
SEQUENCE
system command.

Example:
>>F*FOX/TICKET/EXCHANGE{ENTR}<<
In this example the {ENTR} is not a valid key. Replace it with {ENTER}.

64 – An Ending Chevron << was found without a corresponding Beginning Chevron


ENDING_ >>.
SABRE_
An ending chevron << was found without a corresponding beginning chevron >>.
FOUND
This usually occurs when the beginning chevron >> is accidentally deleted while
deleting a portion of a Sabre system entry.

65 – No ending chevron << was found before the end of the Sabre script.
NO_ENDING
This usually occurs when the ending chevron << is accidentally deleted while
_CHEVRON
deleting a portion of a Sabre system entry.

66 – There is an IF command without the corresponding ENDIF command.


IF_NOT_
There is an IF command without the corresponding ENDIF command. This usually
TERMIN-
occurs when the ENDIF command is missing or embedded in a Sabre system entry
ATED
or a window. For more information on the use of IF/ENDIF, refer to the editor’s
online help system.

67 – There is an ELSEIF command without the corresponding IF command.


ELSEIF_
There is an ELSEIF command without the corresponding IF command. This usually
WITHOUT_IF
occurs when the IF command is missing or embedded in a Sabre system entry or
window. For more information on the use of IF/THEN/ELSE/ELSEIF/ENDIF, refer
to the editor’s online help system.

68 – Cannot use ELSEIF following an ELSE command.


ELSEIF_
The ELSEIF command can only follow the THEN command.
AFTER_
ELSE Example:
IF [COUNT] = 8 THEN
GOTO GROUPS
ELSE
GOTO START
ELSEIF
GOTO RETURN
ENDIF
This example will error on the ELSEIF.

Corrected example:
MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 106
IF [COUNT] = 8 THEN
GOTO GROUPS
ELSEIF [COUNT] > 8 THEN
GOTO START
ELSE
GOTO RETURN
ENDIF
For more information on the use of IF/THEN/ELSE/ELSEIF/ENDIF, refer to the
editor’s online help system.

69 – The ELSEIF is out of sequence with the command on the referenced line.
ELSEIF_OUT
The ELSEIF is out of sequence with the command on the referenced line. It is
_OF_
embedded within a command sequence that has not been ended.
SEQUENCE
Example:
IF [MOVE] = "Y" THEN
MENU
"Move Up"
>>MU{ENTER}<<
ELSEIF [MOVE] = "N"
ENDMENU
GOTO START
ENDIF
This example would error on the ELSE and reference line 2, which is the MENU
command. The ELSE is out of sequence because it falls in the MENU command
sequence, before the ENDMENU.

Corrected example:
IF [MOVE] = "Y" THEN
MENU
"Move Up"
>>MU{ENTER}<<
ENDMENU
ELSEIF [MOVE] = "N"
GOTO START
ENDIF
For more information on the use of IF/THEN/ELSE/ELSEIF/ENDIF, refer to the
editor’s online help system.

70 – There is an ELSE command without the corresponding IF command.


ELSE_
There is an ELSE command without the corresponding IF command. This usually
WITHOUT_IF
occurs when the IF command is missing or embedded in a Sabre system entry or
window. For more information on the use of IF/THEN/ELSE/ELSEIF/ENDIF, refer
to the editor’s online help system.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 107


71 – Cannot use ELSE following an ELSE command.
ELSE_
The ELSE command can only follow the THEN command.
AFTER_
ELSE Example:
IF [PASSENGERS] = 8 THEN
GOTO GROUPS
ELSE
GOTO START
ELSE
GOTO RETURN
ENDIF
This example will error on the second ELSE.

Corrected example:
IF [COUNT] = 8 THEN
GOTO GROUPS
ELSEIF [COUNT] > 8 THEN
GOTO START
ELSE
GOTO RETURN
ENDIF
For more information on the use of IF/THEN/ELSE/ELSEIF/ENDIF, refer to the
editor’s online help system.

72 – The ELSE is out of sequence with the command on the referenced line.
ELSE_OUT_
The ELSE is out of sequence with the command on the referenced line. It is
OF_
embedded within a command sequence that has not been ended.
SEQUENCE
Example:
IF [MOVE] = "Y" THEN
MENU
"Move Up"
>>MU{ENTER}<<
ELSE
ENDMENU
GOTO START
ENDIF
This example would error on the ELSE and reference line 2, which is the MENU
command. The ELSE is out of sequence because it falls in the MENU command
sequence, before the ENDMENU.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 108


Corrected example:
IF [MOVE] = "Y" THEN
MENU
"Move Up"
>>MU{ENTER}<<
ENDMENU
ELSE
GOTO START

ENDIF

73 – There is an ENDIF command without the corresponding IF command.


ENDIF_
There is an ENDIF command without the corresponding IF command. This usually
WITHOUT_IF
occurs when the IF command is missing or embedded in a Sabre system entry or
window. For more information on the use of IF/THEN/ELSE/ELSEIF/ENDIF, refer
to the editor’s online help system.

74 – The ENDIF is out of sequence with the command on the referenced line.
ENDIF_OUT_
The ENDIF is out of sequence with the command on the referenced line. It is
OF_
embedded within a command sequence that has not been ended.
SEQUENCE
Example:
IF [MOVE] = "Y" THEN
MENU
"Move Up"
>>MU{ENTER}<<
ENDIF
ENDMENU
This example would error on the ENDIF and reference line 2, which is the MENU
command. The ENDIF is out of sequence because it falls in the MENU command
sequence, before the ENDMENU.

Corrected example:
IF [MOVE] = "Y" THEN
MENU
"Move Up"
>>MU{ENTER}<<
ENDMENU
ENDIF
For more information on the use of IF/THEN/ELSE/ELSEIF/ENDIF, refer to the
editor’s online help system.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 109


75 – There is a WHILE command without the corresponding ENDWHILE
WHILE_NOT command.
_TERMIN-
There is a WHILE command without the corresponding ENDWHILE command.
ATED
This usually occurs when the ENDWHILE command is missing or embedded in a
Sabre system entry or a window. For more information on the use of
WHILE/ENDWHILE, refer to the editor’s online help system.

76 – There is an ENDWHILE command without the corresponding WHILE


ENDWHILE_ command.
WITHOUT_
There is an ENDWHILE command without the corresponding WHILE command.
WHILE
This usually occurs when the WHILE command is missing or embedded in a Sabre
system entry or window. For more information on the use of WHILE/ENDWHILE,
refer to the editor’s online help system.

77 – The ENDWHILE is out of sequence with the command on the referenced line.
ENDWHILE_
The ENDWHILE is out of sequence with the command on the referenced line. It is
OUT_OF_
embedded within a command sequence that has not been ended.
SEQUENCE
Example:
WHILE [MOVE] = "Y"
MENU
"Move Up"
CALL MOVEUP
"Move Down"
CALL MOVEDOWN
ENDWHILE
ENDMENU
This example would error on the ENDWHILE and reference line 2, which is the
MENU command. The ENDWHILE is out of sequence because it falls within the
MENU command sequence, before the ENDMENU.

Corrected example:
WHILE [MOVE] = "Y"
MENU
"Move Up"
CALL MOVEUP
"Move Down"
CALL MOVEDOWN
ENDMENU
ENDWHILE
For more information on the use of WHILE/ENDWHILE, refer to the editor’s online
help system.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 110


78 – There is a REPEAT command without the corresponding UNTIL command.
REPEAT_
There is a REPEAT command without the corresponding UNTIL command. This
NOT_TER-
usually occurs when the UNTIL command is missing or embedded in a Sabre system
MINATED
entry or a window. For more information on the use of REPEAT/UNTIL, refer to the
editor’s online help system.

79 – There is an UNTIL command without the corresponding REPEAT command.


UNTIL_WITH
There is an UNTIL command without the corresponding REPEAT command. This
OUT_
usually occurs when the REPEAT command is missing or embedded in a Sabre
REPEAT
system entry or window. For more information on the use of REPEAT/UNTIL, refer
to the editor’s online help system.

80 – The UNTIL is out of sequence with the command on the referenced line.
UNTIL_OUT_
The UNTIL is out of sequence with the command on the referenced line. It is
OF_
embedded within a command sequence that has not been ended.
SEQUENCE
Example:
REPEAT
MENU
"Move Up"
CALL MOVEUP
"Move Down"
CALL MOVEDOWN
UNTIL [MOVE] = "Y"
ENDMENU
This example would error on the UNTIL and reference line 2, which is the MENU
command. The UNTIL is out of sequence because it falls within the MENU
command sequence, before the ENDMENU.

Corrected example:
REPEAT
MENU
"Move Up"
CALL MOVEUP
"Move Down"
CALL MOVEDOWN
ENDMENU
UNTIL [MOVE] = "Y"
For more information on the use of REPEAT/UNTIL, refer to the editor’s online help
system.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 111


81 – There is a WHENEVER command without the corresponding
WE_NOT_ ENDWHENEVER command.
TERMIN-
There is a WHENEVER command without the corresponding ENDWHENEVER
ATED
command. This usually occurs when the ENDWHENEVER command is missing or
embedded in a Sabre system entry or a window. For more information on the use of
WHENEVER/ENDWHENEVER, refer to the editor’s online help system.

82 – There is an ENDWHENEVER command without the corresponding


ENDWE_ WHENEVER command.
WITHOUT_
There is an ENDWHENEVER command without the corresponding WHENEVER
WE
command. This usually occurs when the WHENEVER command is missing or
embedded in a Sabre system entry or a window. For more information on the use of
WHENEVER/ENDWHENEVER, refer to the editor’s online help system.

83 – The ENDWHENEVER is out of sequence with the command on the referenced


WE_OUT_OF line.
_SEQUENCE
The ENDWHENEVER is out of sequence with the command on the referenced line.
It is embedded within a command sequence that has not been ended.

Example:
WHENEVER [CANCEL]
MENU
"Ignore PNR"
>>I{ENTER}<<
"End PNR"
>>ER{ENTER}<<
ENDWHENEVER
ENDMENU
This example would error on the ENDWHENEVER and reference line 2, which is
the MENU command. The ENDWHENEVER is out of sequence because it falls
within the MENU command sequence, before the ENDMENU.

Corrected example:
WHENEVER [CANCEL]
MENU
"Ignore PNR"
>>I{ENTER}<<
"End PNR"
>>ER{ENTER}<<
ENDMENU
ENDWHENEVER
For more information on the use of WHENEVER/ENDWHENEVER, refer to the
editor’s online help system.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 112


84 – WHENEVER statements cannot be nested within another WHENEVER
CANT_NEST statement.
_WE
WHENEVER statements cannot be nested within another WHENEVER statement.
The script must have an ENDWHENEVER following each WHENEVER statement.

Example:
WHENEVER [CANCEL]
EXIT
WHENEVER [IGNORE]
>>I{ENTER}<<
ENDWHENEVER
ENDWHENEVER
Corrected example:
WHENEVER [CANCEL]
EXIT
ENDWHENEVER
WHENEVER [IGNORE]
>>I{ENTER}<<
ENDWHENEVER
For more information on the use of WHENEVER/ENDWHENEVER, refer to the
editor’s online help system.

85 – There is a SUB command without the corresponding ENDSUB command.


SUB_NOT_
There is a SUB command without the corresponding ENDSUB command. This
TERMIN-
usually occurs when the ENDSUB command is missing or embedded in a Sabre
ATED
system entry or a window. For more information on the use of SUB/ENDSUB, refer
to the editor’s online help system.

86 – There is an ENDSUB command without the corresponding SUB command.


ENDSUB_
There is an ENDSUB command without the corresponding SUB command. This
WITHOUT_
usually occurs when the SUB command is missing or embedded in a Sabre system
SUB
entry or window. For more information on the use of SUB/ENDSUB, refer to the
editor’s online help system.

87 – There is a RETURN command without the corresponding SUB command.


RETURN_
There is a RETURN command without the corresponding SUB command. This
WITHOUT_
usually occurs when the SUB command is missing or embedded in a Sabre system
SUB
entry or window. For more information on the use of RETURN, refer to the editor’s
online help system.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 113


88 – The ENDSUB is out of sequence with the command on the referenced line.
SUB_OUT_
The ENDSUB is out of sequence with the command on the referenced line. It is
OF_
embedded within a command sequence that has not been ended.
SEQUENCE
Example:
SUB MOVE
MENU
"Move Up"
>>MU{ENTER}<<
"Move Down"
>>MD{ENTER}<<
ENDSUB

ENDMENU
This example would error on the ENDSUB and reference line 2, which is the MENU
command. The ENDSUB is out of sequence because it falls within the MENU
command sequence, before the ENDMENU.

Corrected example:
SUB MOVE
MENU
"Move Up"
>>MU{ENTER}<<
"Move Down"
>>MD{ENTER}<<
ENDMENU
ENDSUB
For more information on the use of SUB/ENDSUB, refer to the editor’s online help
system.

89 – MENU has more than 22 selection items. MENU’s can have 2-22 selection items.
MENU_TOO_
Menu has more than 22 selection items. Menus can have 2-22 selection items. For
LARGE
more information on the use of MENU/ENDMENU, refer to the editor’s online help
system.

90 – MENU has only 1 selection item. MENU’s can have 2-22 selection items.
MENU_TOO_
Menu has only one selection item. Menus can have 2-22 selection items. For more
SMALL
information on the use of MENU/ENDMENU, refer to the editor’s online help
system.

91 – The MENU item is too wide for the MENU command.


MENU_TOO_
The text and/or variables items within the menu are too wide for the MENU
WIDE
command. The text and variable lengths for a menu item cannot exceed 40
characters.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 114


92 – There is a MENU command without the corresponding ENDMENU command.
MENU_NOT_
There is a MENU command without the corresponding ENDMENU command. This
TERMIN-
usually occurs when the ENDMENU command is missing or embedded in a Sabre
ATED
system entry or a window. For more information on the use of MENU/ENDMENU,
refer to the editor’s online help system.

93 – There is an ENDMENU command without the corresponding MENU command.


ENDMENU_
There is an ENDMENU command without the corresponding MENU command. This
WITHOUT_
usually occurs when the MENU command is missing or embedded in a Sabre system
MENU
entry or window. For more information on the use of MENU/ENDMENU, refer to
the editor’s online help system.

94 – The ENDMENU is out of sequence with the command on the referenced line.
ENDMENU_
The ENDMENU is out of sequence with the command on the referenced line. It is
OUT_OF_
embedded within a command sequence that has not been ended.
SEQUENCE
Example:
MENU
"Ticket PNR"
IF [PTR_ASGN] = "Y" THEN
CALL TICKET
"EXIT SABREscript"
EXIT
ENDMENU
ENDIF
This example would error on the ENDMENU and reference line 3, which is the IF
command. The ENDMENU is out of sequence because it falls within the IF
command sequence, before the ENDIF.

Corrected example:
MENU
"Ticket PNR"
IF [PTR_ASGN] = "Y" THEN
CALL TICKET
ENDIF
"EXIT SABREscript"
EXIT
ENDMENU
For more information on the use of MENU/ENDMENU, refer to the editor’s online
help system.

95 – The Dividing line of a MENU should not be the first item in the MENU.
DIVIDE_NOT
The dividing line of a menu should not be the first item in the menu. For more
_FIRST
information on the use of MENU/ENDMENU, refer to the editor’s online help
system.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 115


96 – The Dividing line of a MENU should not be the last item in the MENU.
DIVIDE_NOT
The dividing line of a menu should not be the last item in the menu. For more
_LAST
information on the use of MENU/ENDMENU, refer to the editor’s online help
system.

97 – No unique Accelerator Characters were available for this MENU item.


NO_UNIQUE
No unique accelerator characters were available for this menu item. All the
_ACCEL
characters in this menu item are being used as accelerators for previous items in this
menu. For more information on the use of MENU/ENDMENU, refer to the editor’s
online help system.

98 – The Accelerator Character for this item has already been used by a previous
ACCEL_ MENU item.
ALREADY_
The accelerator character for this item has already been used by a previous menu
USED
item. Redefine the accelerator characters for this menu so that each item has a
different accelerator character.

Example:
MENU
"&Move Up"
CALL MOVEUP
"&Move Down"
CALL MOVEDOWN
ENDMENU
In this example, “M” is the accelerator character for both items in the MENU. This
example would error on line 4.

Corrected example:
MENU
"Move &Up"
CALL MOVEUP
"Move &Down"
CALL MOVEDOWN
ENDMENU
In the corrected example, the accelerator characters are “U” and “D”, respectively.
For more information on the use of MENU/ENDMENU, refer to the editor’s online
help system.

99 – Each MENU choice must be followed by a MySabre Scribe command.


MISSING_
Each Menu choice must be followed by a MySabre Scribe software command. For
COMMAND_
more information on the use of MENU/ENDMENU, refer to the editor’s online help
FOR_
system.
CHOICE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 116


100 – The WINDOW has more lines of text then the Sabre screen allows.
WINDOW_
The window has more lines of text then the Sabre system screen allows. A maximum
TOO_LONG
of 22 lines is available for a window. For more information on the use of
WINDOW/ENDWINDOW, refer to the editor’s online help system.

101 – The WINDOW is too wide for the Sabre screen.


WINDOW_
The text and/or variables within the window are too wide for the Sabre system
TOO_WIDE
screen. The text and variable lengths cannot exceed 74 characters in width within a
window.

102 – There is a WINDOW command without the corresponding ENDWINDOW


WINDOW_ command.
NOT_TER-
There is a WINDOW command without the corresponding ENDWINDOW
MINATED
command. This usually occurs when the ENDWINDOW command is missing or
embedded in a Sabre system entry or another WINDOW. For more information on
the use of WINDOW/ENDWINDOW, refer to the editor’s online help system.

103 – There is an ENDWINDOW command without the corresponding WINDOW


END- command.
WINDOW_
There is an ENDWINDOW command without the corresponding WINDOW
WITHOUT_
command. This usually occurs when the WINDOW command is missing or
WINDOW
embedded in a Sabre system entry or another WINDOW. For more information on
the use of WINDOW/ENDWINDOW, refer to the editor’s online help system.

104 – The ENDWINDOW is out of sequence with the command on the referenced line.
END-
The ENDWINDOW is out of sequence with the command on the referenced line. It
WINDOW_
is embedded within a command sequence that has not been ended. For more
OUT_OF_
information on the use of WINDOW/ENDWINDOW, refer to the editor’s online
SEQUENCE
help system.

105 – There is WINDOW text that is to the left of the WINDOW command.
TEXT_LEFT_
All text within a WINDOW command must be directly under or to the right of the
OF_
WINDOW/ ENDWINDOW commands.
WINDOW
Example:
WINDOW
text within the window
ENDWINDOW
Corrected example:
WINDOW
text within the window
ENDWINDOW

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 117


106 – The SCREEN has more lines of text then the Sabre screen allows.
SCREEN_
The screen has more lines of text then the Sabre system screen allows. A maximum
TOO_LONG
of 20 lines is available for a screen. For more information on the use of screens, refer
to the editor’s online help system.

107 – There is a SCREEN command without the corresponding ENDSCREEN


SCREEN_ command.
NOT_TER-
There is a SCREEN command without the corresponding ENDSCREEN command.
MINATED
This usually occurs when the ENDSCREEN command is missing or embedded in a
Sabre system entry or a window.

108 – There is an ENDSCREEN command without a corresponding SCREEN


END- command.
SCREEN_
There is an ENDSCREEN command without the corresponding SCREEN command.
WITHOUT_
This usually occurs when the SCREEN command is missing or embedded in a Sabre
SCREEN
system entry or a window.

109 – The ENDSCREEN is out of sequence with the command on the referenced line.
END-
The ENDSCREEN is out of sequence with the command on the referenced line. It is
SCREEN_
embedded within a command sequence that has not been ended.
OUT_OF_
SEQUENCE

110 – The File requested was not found at the specified Drive and Directory.
FILE_NOT_
The file requested was not found at the specified drive and directory. Contact the
FOUND
LAN administrator within your office for more information.

111 – There are too many open files for the Sabre script to compile.
TOO_MANY_
There are too many open files on this workstation for the script to correctly compile.
OPEN_
Close unnecessary applications and attempt to compile the script again. If the error
HANDLES
persists, contact the LAN administrator within your office for more information.

112 – The current Login does not have rights for this File and Directory.
ACCESS_
The current login does not have rights for this file and directory. Contact the LAN
DENIED
administrator within your office for more information.

113 – The SHARE file is not installed.


SHARE_NOT
The SHARE file is normally installed by Novell NetWare. This error occurs if you
_INSTALLED
are using a workstation boot disk other then the one provided in the Sabre system
software. Contact the LAN administrator within your office for more information.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 118


114 – A FILE parameter has already been encountered on this line.
FILE_
The compiler has encountered more than one FILE (F=) parameter in this command.
ALREADY_
Occurs when two or more FILE= or F= appear in a command line.
PRO-
CESSED

115 – A LENGTH parameter has already been encountered on this line.


LENGTH_
The compiler has encountered more than one LENGTH (LENGTH=) parameter in
ALREADY_
this command.
PRO-
CESSED

116 – The string encountered at this line exceeds 80 characters maximum.


STRING_
A string in MySabre Scribe software may only be a maximum of 80 characters.
TOO_LONG
Possible causes of this error are: a missing an end quote or having a \” as the last
characters in a string.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 119


Appendix D

Run Time Error Messages

ACCESS_ Cannot perform requested action on the selected file or Sabre script.
DENIED
The current login does not have rights for this file and directory. The script is
attempting to open, write, or delete a file that is currently open, or is attempting to
chain or spawn to a script which is inaccessible. Contact the LAN administrator
within your office or the script designer for more information.

BAD_ALPHA The value entered into the box contains a non-ALPHA character.
The current box has been designated as an ALPHA type variable. The value entered
in this field has a character or characters that are not alpha. The variable field must
contain only alpha characters for the script to execute.

BAD_ALPHA- The value entered in the box contains a non-ALPHA/NUMERIC character.


NUMERIC
The current box has been designated as an ALPHA/NUMERIC type variable. The
value entered in this field has a character or characters that are not alphanumeric. The
variable field must contain only alphanumeric characters for the script to execute.

BAD_ANY The value entered in the box contains an incorrect character.


The current box has been designated as an ANY type variable. The value entered in
this field has a character or characters that are incorrect.

BAD_DATE The value entered in the box contains an incorrect DATE.


The current box has been designated as a DATE type variable. The value entered in
this field is not a correct date. Dates must be entered in a correct Sabre® format for
the script to execute.

BAD_ The value entered in the box contains a non-DECIMAL character.


DECIMAL
The current box has been designated as a DECIMAL type variable. The value
entered in this field has a character or characters that are not decimals. The variable
field must contain only decimal characters for the script to execute.

BAD_MASK The value entered in the box is not in the correct character order.
The current box has been designated with a specific character order. The value
entered in the box is not in the correct character order. For example, if the variable
has been defined as three characters—alpha, numeric, and alpha, then the first
character entered in the window must be a letter, the second a number, and the third a
letter.
BAD_NUMER The value entered in the box contains a non-NUMERIC character.
IC
MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix D 120
The current box has been designated as a NUMERIC type variable. The value
entered in this field has a character or characters that are not numeric. The variable
field must contain only numeric characters for the script to execute.

BAD_TIME The value entered in the box contains an incorrect TIME.


The current box has been designated as a TIME type variable. The value entered in
this field is not a correct Sabre system time format. Times can be 12- or 24-hour
clock, such as 745A, 130P, 0745, or 1330.

BAD_ The Sabre script has not been compiled under the current version of MySabre
VERSION Scribe.
The script has not been compiled under the latest version of MySabre Scribe
software. It is a MySabre Scribe software 2.0 or earlier script. Please contact the
designer of the script to request a current version.

CANT_ Cannot establish a Data Link with Sabre with Windows.


CONNECT_
Cannot establish a data link to MySabre desktop reservations system usually due to a
TO_
bad or missing DDEML.DLL, or there are no Windows system resources available to
EMULATOR
establish the link.

CANT_ Cannot create temporary file.


CREATE_
The MySabre Scribe Developer software could not create the temporary files it
TEMP
needed. Possible causes are: 1) not enough space on the hard disk; 2) the temporary
directory of \PUBLIC1\SCRIBE\TEMP was removed or no rights to that directory
exist for workstations on a Local Area Network; 3) or not enough file handles in
CONFIG.SYS.

EMULATOR_ Sabre with Windows is not active.


NOT_
MySabre desktop reservations system must be active for this script to operate.
LOADED
Double-click on the MySabre desktop reservations system icon to activate.

FILE_NOT_ Unable to access the Sabre script because the Sabre script does not exist.
FOUND
The script does not exist. Either the name entered in the Select Script dialog was not
correct or the active script attempted to call or spawn a script that does not exist.
Verify the script name.

INVALID_ An Invalid Opcode error exists in the compiled version of this Sabre script.
OPCODE
An Invalid Opcode error exists in the compiled version of this script. Contact the
creator of this script.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix D 121


INVALID_ The execution line of the runtime contains an invalid parameter.
PARAMETER
An invalid parameter was used in the execution line of the run time. Enter runtime
/h at the DOS prompt to view the valid parameters.

MAN- The box has been designated as MANDATORY, but no characters have been
DATORY_ entered.
EMPTY
The current box requires a character to be entered for the script to execute.

MUSTFILL_ The box has been designated as a MUST FILL, but it is not completely filled in.
NOT_FILLED
The current box has been designated as a MUST FILL variable; therefore, the box
must be completely filled with characters for the script to execute.

OUT_OF_ This Sabre script has encountered an Out of Memory system error.
MEMORY
Out of Memory system error occurred. To make more memory available, close other
applications that are currently open and attempt the script again. If the error
continues, contact your LAN administrator.

SHARE_NOT The SHARE file is not installed.


_INSTALLED
The SHARE file is normally installed by Novell NetWare. This error normally
occurs if you are using a workstation boot disk other then the one included in the
Sabre system software. Contact the LAN administrator within your office for more
information.

STACK_ This Sabre script has encountered a Process Stack Underflow Fatal error.
UNDER-
There is a Process Stack Underflow Fatal error with this script and the run time.
FLOW

TOO_MANY_ There are too many open files for the Sabre script to execute.
OPEN_
There are too many open files on this workstation for the script to correctly execute.
HANDLES
Close unnecessary applications and attempt to run the script again. If the error
persists, contact the LAN administrator within your office for more information.

TRUN- The equation result is too large. MySabre Scribe is shortening the value.
CATING_
When the value returned by an equation is too large, MySabre Scribe run time
VALUE
truncates that value. If the error persists, contact the creator of the script.

UNKNOWN_ This Sabre script has encountered an Unknown System Error. Please contact
SYSTEM_ the LAN Administrator within your office.
ERROR
This script has encountered an Unknown System Error. Contact the LAN
administrator within your office.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix D 122


Glossary

24-hour time
Time of day as indicated on a 24-hour clock (0000 - 2359).

A
ASCII — Acronym for American Standard Code for Information Interchange. The
acronym is pronounced “AS-kee.” A standard computer character set devised in 1968
to enable efficient data communication and to achieve compatibility among different
computer devices.
C
cascading menu — A menu that appears when a cascading choice is selected. It
contains a set of choices that are related to the cascading choice.
Chevron — Symbols that indicate the start and stop of a Sabre system command.
Clipboard — A temporary storage area for text or graphics cut or copied from an
application. You can paste the contents of the clipboard into an area in the same
document or into another application. The clipboard keeps the information until you
cut or copy another piece of text or a graphic to store on the clipboard. A clipboard is
typically provided by the operating environment.
Clone — The process of duplicating an existing variable.
command design — The mode you use to design the majority of your script.
Compiler — An executable program that converts a script source file into an
executable script.
Conversion — The process of changing information from one form or representation
to another. Do not use when referring to transferring data.
Cross of Lorraine — A Sabre system character used in many formats representing
several possible functions.
cut/copy/paste — Allows you to copy or move text within MySabre or higher and the
script, or to and from another application. Example: You can copy a fare calculation
line from a WP entry or from an existing remarks line that the airline created. For
details about using the clipboard, see Microsoft Windows helps.
D
dedicated fileserver — A fileserver that performs network functions only.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Glossary 123


Default — A value you specify to appear each time the value is needed. Some system
shipped defaults are available when you install. You can change these defaults when-
ever you choose.
E
EMUFIND - Use EMUFIND: device to parse the emulator screen using strings, regular
expressions, or number of characters to skip.
Expression — A string of characters that the compiler evaluates.
F
File — Refers to any entity stored on a disk, regardless of whether the user can open,
edit, or print it. Compare document.
K
Keyword — Refers to a special word that identifies a particular type of statement or
command, such as IF or CATALOG. Follow the capitalization style of the
programming language involved.
L
logical operator — A symbol that allows you to combine two or more expressions and
test them for validity.
Loop — A group of instructions set off by a MySabre Scribe software command that
executes in a repetitive manner.
M
Menu — A list of action, routing, and settings choices. The types of menus are the
menu bar, pull-down menu, cascaded menu, and pop-up menu.
P
Paste — To place the contents of the clipboard—whatever was last cut or copied—at
the insertion point or the standard location in a document by choosing the Paste com-
mand from a menu.
R
relational operator — A symbol that allows you to test an expression and test it for
validity.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Glossary 124


Routine — A group of instructions that you want to isolate from the body of your
script.
S
Sabre — The Sabre computer reservations system is the host computer that allows
you to request availability, make bookings, and obtain travel information for your
clients.
Sabre system format — Group of characters that when typed on a Sabre system
command line allow the system to perform a specific function. For more information
about Sabre system formats, refer to the Format Reference.
Sabre scripts — Scripts written for Sabre system formats.
MySabre — The Windows version of the Sabre system. Must have legal notice: Sabre
is a registered trademark and/or service mark of Sabre Inc. All other trademarks,
service marks, and trade names are owned by their respective companies.
MySabre Scribe — Allows the user to develop scripts.
screen design — The mode you use to design the windows for your script.
scroll bar — A window component, associated with a scrollable area, that indicates to
a user that more information is available or can be added in a particular direction and
can be scrolled into view. The components of a scroll bar are the scroll box, shaft,
and scroll buttons.
shortcut key — A key or combination of keys that a user can press to perform an
action that is available from a menu.

special characters –Nonstandard characters that you can include in your script using
a specific key sequence.
V
Variable — A symbol that defines a value.

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Glossary 125


Index

C
CALL 8
cascade menu 30
CHAIN 10
CLOSE 12
commands
CALL 8
CHAIN 10
CLOSE 12
DEFAULT 13
DEFINE 14
DELETE 16
EMUFIND 17
EXIT 35
EXTERNAL 36
GOTO 38
IF/ELSE/IF/ELSE/ENDIF 40
IF/ELSEIF/ELSEIF/ENDIF 41
IF/THEN/ELSE/ENDIF 43
IF/THEN/ENDIF 45
MENU/ENDMENU 47
OPEN 51
PARTITION
READ 52
RENAME 57
REPEAT/UNTIL 58
REQUIRE 59
RETURN 61
SPAWN 63
SUBROUTINE/ENDSUBROUTINE 65
WAIT 67
WHENEVER/ENDWHENEVER 68
WHILE/ENDWHILE 71
WINDOW/ENDWINDOW 73
WRITE 75
compiler errors 94
CSV 80

D
DEFAULT 13
DEFINE 14
DELETE 16

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Index 126


E
EMAIL 64
EMUFIND 17
errors
compiler 76
MS-DOS 75
run time 102
EXIT 17
EXTERNAL 18

G
GLOBAL VARIABLES 67
GOTO 20

I
IF/ELSE/IF/ELSE/ENDIF 27
IF/ELSEIF/ELSEIF/ENDIF 25
IF/THEN/ELSE/ENDIF 23
IF/THEN/ENDIF 22

M
MENU/ENDMENU 29
MS-DOS error codes 75
MySabre Scribe features
CSV 62
EMAIL 64
GLOBAL VARIABLES 67
OPEN EXEC 66

O
OPEN 33
OPEN EXEC 66

P
PARTITION 34

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Index 127


R
READ 34
RENAME 39
REPEAT/UNTIL 40
REQUIRE 41
RETURN 43
run time errors 102

S
SPAWN 45
SUBROUTINE/ENDSUBROUTINE 47

W
WAIT 49, 50
WHENEVER/ENDWHENEVER 50
WHILE/ENDWHILE 53
WINDOW/ENDWINDOW 55
WRITE 57

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Index 128

You might also like