+ All Categories
Home > Documents > My Sabre Scribe Reference Guide

My Sabre Scribe Reference Guide

Date post: 08-Apr-2015
Category:
Upload: manuel-pekopon-balderas
View: 1,554 times
Download: 86 times
Share this document with a friend
129
MySabre Scribe SCRIPTING REFERENCE GUIDE
Transcript

MySabre Scribe

SCRIPTING REFERENCE

GUIDE

T a b l e o f C o n t e n t s

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

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Table of Contents 2

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 Introduction 3

I n t r o d u c t i o n

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.

O v e r v i e w

This manual is intended as a reference for anyone planning to build scripts. It is designed for agents who have attended the MySabre Scribe Basic class.

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.

This reference provides information to help you design and develop scripts. It contains detailed information about the MySabre Scribe scripting language, 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.

Who Should Use this Reference?

Purpose of this Reference

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Introduction 4

H o w t h i s R e f e r e n c e I s O r g a n i z e d

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.

In addition to this reference, Sabre Travel Network has a variety of information and training available:

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.

Related Documents and Training

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Introduction 5

U n d e r s t a n d i n g C o m m a n d a n d F e a t u r e D e s c r i p t i o n s

The commands and features descriptions include the following conventions:

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.

Conventions used in subsections

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Introduction 6

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 MySabre Scribe Commands Overview 7

M y S a b r e S c r i b e C o m m a n d s O v e r v i e w

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 8

C A L L

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

CALL Subroutine_name

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

Description

Syntax

Where

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

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 10

C H A I N

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

CHAIN expression

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] <

Description

Syntax

Where

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

="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 12

C L O S E

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

CLOSE file_path

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

Description

Syntax

Where

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

D E F A U L T

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

DEFAULT [Variable_name] = expression

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”.

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 14

D E F I N E

This command allows you to create variables.

DEFINE [Variable_Name = Type:Length:Mandatory Indicator:Must Fill Indicator:DefaultValue:Description]

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).

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 15

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 16

D E L E T E

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.

DELETE file_path

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

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 17

E M U F I N D

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.

Description

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 18

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 19

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.

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]

Syntax

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 20

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 21

@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 22

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 23

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 24

@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 25

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 26

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 27

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 28

\ 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 29

{ ([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 30

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 31

; 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 32

;***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 33

[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 34

[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 35

E X I T

This command terminates the execution of the current script.

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

Description

Syntax

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 36

E X T E R N A L

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.

EXTERNAL [Variable_Name1], [Variable_Name2]

or

EXTERNAL [Variable_Name1] EXTERNAL [Variable_Name2]

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

Description

Syntax

Where

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

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 38

G O T O

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

GOTO Label_Name

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:

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 39

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 40

I F / T H E N / E N D I F

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

IF Conditional_expression THEN Action_statement ENDIF

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.

Description

Syntax

Where

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

I F / T H E N / E L S E / E N D I F

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.

IF Conditional_expression THEN Action_statement1 ELSE Action_statement2 ENDIF

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.

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 42

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 43

I F / E L S E I F / E L S E I F / E N D I F

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

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

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.

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 44

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 45

I F / E L S E / I F / E L S E / E N D I F ( N e s t e d I F s )

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.

IF Shared_condition THEN IF conditional expression THEN Action_statement1 ELSE Action_statement2 ENDIF ELSE Action_statement_others ENDIF

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.

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 46

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 47

M E N U / E N D M E N U

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

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

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.

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 48

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 49

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 50

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 51

O P E N

This command allows you to open an ASCII file.

OPEN FILE = file_path

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

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 52

R E A D

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

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"

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

Description

Syntax

Where:

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 53

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 54

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 55

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 56

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 57

R E N A M E

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.

RENAME expression1 AS expression2

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”.

Description

Syntax

Where

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

R E P E A T / U N T I L

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

REPEAT

Action_statement

UNTIL conditional_expression

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.

Description

Syntax

Where

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

R E Q U I R E

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

REQUIRE Conditional_expression FOR [VARIABLE_A], [VARIABLE_B], [VARIABLE_C]

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.”

Description

Syntax

Where

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

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 61

R E T U R N

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

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

Description

Syntax

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

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 63

S P A W N

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.

SPAWN "expression"

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”

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 64

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 65

S U B R O U T I N E / E N D S U B R O U T I N E

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.

SUBROUTINE Subroutine_Name:

Action_statement

ENDSUBROUTINE

or

SUB Subroutine_Name:

Action_statement

ENDSUB 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.

Description

Syntax

Where

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

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 67

W A I T

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.

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.

Description

Syntax

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 68

W H E N E V E R / E N D W H E N E V E R

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

WHENEVER Conditional_expression or @Command_Button] Action_statement ENDWHENEVER

or

WE Conditional_expression or [@Command_Button] Action_statement EW

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.

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 69

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 70

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 71

W H I L E / E N D W H I L E

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

WHILE Conditional_expression Action_statement ENDWHILE

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.

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 72

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 73

W I N D O W / E N D W I N D O W

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.

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

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

Description

Syntax

Where

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

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 75

W R I T E

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

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"

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.

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Commands Overview 76

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 77

"\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 78

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 Extended Features 79

M y S a b r e S c r i b e E x t e n d e d F e a t u r e s

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 80

C S V :

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.

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

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.

Description

Syntax

Where

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

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 82

E M A I L :

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

WRITE F="EMAIL:email_field"

CLOSE "EMAIL:email_action"

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" "[email protected];[email protected]"

or

WRITE F="EMAIL:TO" "[email protected]"

WRITE F="EMAIL:TO" "[email protected]"

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 "

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 MySabre Scribe Extended Features 83

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" "[email protected]"

WRITE F="EMAIL:to" "[email protected]"

WRITE F="EMAIL:cc" "[email protected]"

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 84

O P E N E X E C :

Use the OPEN command to launch an external application.

OPEN F="EXEC:application_to_launch"

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.

Description

Syntax

Where

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

G L O B A L V A R I A B L E S

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.

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

#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]

Description

Syntax

Where

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix A 86

A p p e n d i x A

S y s t e m V a r i a b l e s

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 87

Name Type

Lngth Man-datory

Must Fill?

Description Variable Value

@ACCUM_RSP A 10 N N Accumulated responses indicator

“Yes” or “No” if accumulated responses is on

@BTN_PRSD Any 20 N N Last button pressed

Default value of the last button pressed

@CALLING_SCRIPT Any 15 N N Name of spawning script

“EPR” if current script spawned by EPR

@CURRENT_SCRIPT Any 8 N N Name of current script

“EPR” if the current script is EPR

@DATE D 7 Y Y Current date “12JUN99”

@DAY_NAME A 3 Y Y Three-letter day of the week

“TUE” if today is Tuesday

@DAY_NUMBER N 2 Y N Numeric value—day of month

12 if today’s date is 12 June

@DIRECTORY_PATH A/N 40 N N Current path

@FSERVER_NAME Any 30 Y N File server name or ID

“@SABRE1” Fileserver Name

@HOST_CARR_RTN A 3 Y N YES/NO indicator for host carriage return

“YES” or “NO” if host Carriage Return is active

@FSERVER_NAME Any 30 Y N File server name or ID

“@SABRE1” Fileserver Name

@HOUR N 2 Y N Numeric hour using 24-hr clock

14 if time is 2:48 PM

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix A 88

Name Type

Lngth Man-datory

Must Fill?

Description Variable Value

@KYBRD_LOCKED A 3 Y N YES/NO indicator for the Sabre system

“YES” or “NO” if keyboard is locked

@LOGICAL_DRIVE M: A*

2 Y Y Logical drive identifier

“A:” Drive letter of default drive

@LOGIN_NAME Any 48 Y N Novell NetWare® login name

“JRD1” login name of current user

@MINUTE N 2 Y N Numeric value of minutes

57 if time is 2:57 a.m.

@MONTH_NAME A 3 Y Y Three-letter abbr. for month

“APR” if today is April 15th

@MONTH_NUMBER N 2 Y N Numeric value of the month

9 if today is a day in September

@OPERATING_SYS A 7 Y N DOS/Windows emulator indicator

“DOS” or

@OPERATING_VER Dec 5 Y N DOS/Windows version number

@SECONDS N 2 Y N Numeric value of seconds

35 if time is

@SWITCHES A/N 14 N N Control run time

See “Switches” in this appendix

@SYSTEM_ERROR N 2 N N Number of DOS error

See Appendix B

@SYSTEM_UNAVAIL

A 3 Y N YES/NO indicator of system status

“YES” or “NO” if the system is unavailable

@TEST_MODE A 10 N N Yes/No indicator for test mode

“YES” if test mode is on

@TIME T 5 Y Y Current time in a 24- hour mode

1624 if time is 4:24 PM

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix A 89

Name Type

Lngth Man-datory

Must Fill?

Description Variable Value

@UMSG A 3 Y N YES/NO indicator for unsolicited msg

“YES” or “NO” if UMSG is active

@WINDOW_LENGTH

N 2 Y N Row length of active window

Length of Active Window

@WINDOW_MODE A 5 Y N MySabre mode “SPLIT/FULL”

“SPLIT” OR “FULL”

@WINDOW_WIDTH N 2 Y N Column width of active window

Width of active window

@YEAR_NUMBER N 4 Y Y Numeric value of the year

2001 for year 2001

P r e d e f i n e d C o m m a n d B u t t o n s

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 90

G e n e r i c C o m m a n d B u t t o n s

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 91

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 92

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

S w i t c h e s

[@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 B 93

A p p e n d i x B

S y s t e m E r r o r C o d e s

Error Code Meaning

02 File not found

05 Access denied

101 Search data not found

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 94

A p p e n d i x C

C o m p i l e r E r r o r M e s s a g e s

The referenced command is not a valid MySabre Scribe command.

The referenced command is not valid MySabre Scribe software command or is not in 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.

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

The referenced command is not a valid MySabre Scribe software command or is not 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.

This Sabre script has encountered an Unknown System error. Please contact the LAN Administrator within your office.

This script has encountered an Unknown System error. Contact the LAN administrator within your office.

There is an Unknown Fatal error with this Sabre script and the Compiler. Please report this to the Applications Support Help Desk.

Report this to the help desk.

There is an Unknown Opcode Fatal error with this Sabre script and the Compiler.

There is an Unknown Opcode Fatal error with this script and the compiler.

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

This script has encountered an Out of Memory system error. To make more 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.

This Sabre script has encountered a Process Stack Underflow Fatal error. Please report this to the Applications Support Help Desk.

There is a Process Stack Underflow Fatal error with this script and the compiler. Contact the help desk.

1 – UNKNOWN_ COMMAND

2 – INVALID_ COMMAND

3 – UNKNOWN_SYSTEM_ ERROR

4 – UNKNOWN_FATAL_ ERROR

5 – UNKNOWN_OPCODE

6 – OUT_OF_ MEMORY

7 – PROCESS_ STACK_ UNDERFLOW

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 95

This Sabre script has encountered a Local Label Underflow Fatal error. Please report this to the Applications Support Help Desk.

There is a Local Label Underflow Fatal error with this script and the compiler. Please report this to the help desk.

The execution line of the compiler contains an invalid parameter.

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

A LABEL with the same name has been created more than once in your Sabre script.

This could have been caused by 1) creating a label more than once using the same 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.

A LABEL has the same name identifier as a previous SUBROUTINE, or a CALL command attempted to reference a LABEL instead of a SUBROUTINE.

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

A SUBROUTINE has the same name identifier as a previous LABEL, or a 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. See the editor’s online help system for more information on the use of GOTO/LABEL and CALL/SUBROUTINE.

The LABEL name cannot be a MySabre Scribe Command or begin with a Numeric.

The label name is the same as a MySabre Scribe software command.

8 – LOCAL_ LABEL_ UNDERFLOW

9 – INVALID_ PARAMETER

10 – LABEL_ ALREADY_ FOUND

11 – LABEL_ FOUND

12 – CANNOT_ GOTO_SUB

13 – LABEL_CANNOT_BE_ COMMAND

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 96

A GOTO statement was found without a corresponding LABEL name.

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

A SUBROUTINE with the same name identifier has been created more than once in your Sabre script.

This could have been caused by 1) creating two subroutines that have the same name 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.

A SUBROUTINE has the same name identifier as a previous LABEL or a 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.

A LABEL has the same name identifier as a previous SUBROUTINE, or a CALL command attempted to reference a LABEL instead of a SUBROUTINE.

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.

14 – MISSING_ LABEL

15 – SUB_ ALREADY_ FOUND

16 – SUB_FOUND

17 – CANNOT_ CALL_LABEL

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 97

The SUBROUTINE name cannot be a MySabre Scribe Command or begin with a Numeric.

The subroutine name is the same as a MySabre Scribe software 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.

A CALL statement was found without a corresponding SUBROUTINE name.

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

A colon was expected and not found at this token.

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

Example: SUB SELLCAR

The subroutine SELLCAR is not followed by a colon.

Corrected example: SUB SELLCAR:

LABEL names cannot begin with a Numeric character.

Change the first character of the label name to an alpha character.

18 – SUB_ CANNOT_BE_COMMAND

19 – MISSING_ SUB

20 – MISSING_ COLON

21 – LABEL_ START_ NUMERIC

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 98

Expected to find an operator, such as =, +, –, *, /, to represent an arithmetic operation.

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

Incomplete expression...expected to find a variable or value following the operator (+, –, *, or /). The expression exists without a value to the right of the 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

A FOR was expected at this token.

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

An AS was expected at this token.

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

An " was expected at this token.

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

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

A " was expected following the FILE=.

22 – EXPECTED_OPERATOR

23 – EXPECTED_OPERAND

24 – FOR_ EXPECTED

25 – AS_ EXPECTED

26 – QUOTE_ EXPECTED

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 99

An operator, such as =, +, –, *, / was unexpectedly found.

This means that an operator was found in an invalid place.

Example: [TOTAL] = + [TOTAL] + 1

This would result in an error because the compiler found the operator (+) between the equals sign and the variable [TOTAL].

The operator symbol for equal "=" was expected in the expression.

The compiler expected to find an equals symbol “=” in the expression.

Example: [TOTAL] [TOTAL] + 1

In the example, the equals symbol is missing between the variables [TOTAL].

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

The IF command does not have a corresponding THEN command.

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

Example: IF [PASSENGER] > 8 THEN

GOTO GROUP

Cannot subtract an Alpha character or string from another string, only Numerics can be subtracted.

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.

The value is not a string value

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

27 – UNEXPECT-ED_ OPERATOR

28 – MISSING_ EQUAL

29 – MISSING_ THEN

30 – NEG_ONLY_NUMERIC

31 – NOT_ STRING

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 100

The length operator $ can only be used in conjunction with a variable.

The length operator $ can only be used in conjunction with a variable. It cannot be used with a string or number.

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.

The equation or comparison is too complex for the MySabre Scribe compiler.

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

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

The operation performed with the “Date” type variable is not a valid calculation with a “Date” variable. This usually occurs when performing an operation other then 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

32 – LENGTH_ ONLY_ VARIABLE

33 – EQUATION_TOO_ COMPLEX

34 – INVALID_ DATE_ OPERATION

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 101

The operation performed on a "Time" type variable is invalid.

The operation performed with the “Time” type variable is not a valid calculation. This usually occurs when performing an operation other then subtraction on 2 time 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

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

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"

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

This usually occurs when an attempt is made to combine more than one string using a 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.

35 – INVALID_ TIME_ OPERATION

36 – NOT_ALPHA

37 – NOT_ALPHA_VARIABLE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 102

The value used with the calculation is not a Numeric value.

This usually occurs when an attempt is made to execute a numeric mathematical 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

The variable used with the calculation is not type "Numeric", "Decimal", "Time" or "Date".

This usually occurs when an attempt is made to execute a numeric mathematical 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.

A VARIABLE was expected at this token.

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

The Variable is already defined as an External Variable.

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

This variable does not have a DEFINE Variable Statement or does not appear in the User Defined or System Variable Lists.

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.

This variable name has already been DEFINED in a previous DEFINE statement.

At least two DEFINE variable statements exist with the same variable name. One of the variable names needs to be changed in the script.

38 – NOT_ NUMERIC

39 – NOT_ NUMERIC_ VARIABLE

40 – VARIABLE_ EXPECTED

41 – VARIABLE_ ALREADY_ EXTERNAL

42 – VARIABLE_ NOT_FOUND

43 – VARIABLE_ ALREADY_ DEFINED

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 103

The Variable name contains invalid characters. Characters must be Alphas, Numerics, and Punctuation characters excluding (Colon, Brackets and Spaces).

The variable name contains invalid characters, most commonly, a space. Remove or replace the invalid characters with a valid character.

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

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

The variable length is invalid.

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

The variable length is invalid.

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

The variable length is invalid.

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

The variable length is invalid.

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

The variable length is invalid.

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

The variable length is invalid.

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

The variable length is invalid.

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

44 – BAD_ VARIABLE_ NAME

45 – VARIABLE_ LENGTH_ ZERO

46 – INVALID_ SIZE_ NUMERIC

47 – INVALID_ SIZE_ DECIMAL

48 – INVALID_ SIZE_TIME

49 – INVALID_ SIZE_DATE

50 – INVALID_ SIZE_ALPHA

51 – INVALID_ SIZE_ALPHANUMERIC

52 – INVALID_ SIZE_ANY

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 104

The variable length is invalid.

The Mask variable length is invalid in this DEFINE statement. Mask variables must 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.

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

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

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

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

The MustFill field of the DEFINE statement is invalid.

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

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

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

The Default value type is not compatible with the variable type.

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

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

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

Example: DEFINE [ADV_NBR=M-:7::::]

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

53 – INVALID_ SIZE_MASK

54 – INVALID_ MANDA-TORY

55 – INVALID_ MUSTFILL

56 – VALUE_ LARGER_ THAN_ LENGTH

57 – ILLEGAL_ DEFAULT_ VALUE

58 – MASK_ EMPTY

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 105

The specified value for the MASK variable does not match the MASK parameters.

If a MASK variable is defined with specific parameters, a value that does not match 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"

There are extra fields in the DEFINE statement.

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

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

The variable type in the DEFINE statement is not valid. It must be one of the following:

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

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

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

59 – VALUE_ DIFFERENT_THAN_MASK

60 – EXTRA_ PARA-METERS_IN_DEFINE

61 – UNKNOWN_DEFINE_ TYPE

62 – BAD_ COMMAND_ IN_SABRE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 106

MySabre Scribe cannot interpret the entered key sequence in the Sabre command.

MySabre Scribe software cannot interpret the entered key sequence in the Sabre system command.

Example:

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

An Ending Chevron << was found without a corresponding Beginning Chevron >>.

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

No ending chevron << was found before the end of the Sabre script.

This usually occurs when the ending chevron << is accidentally deleted while deleting a portion of a Sabre system entry.

There is an IF command without the corresponding ENDIF command.

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

There is an ELSEIF command without the corresponding IF command.

There is an ELSEIF command without the corresponding IF command. This usually 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.

Cannot use ELSEIF following an ELSE command.

The ELSEIF command can only follow the THEN command.

Example: IF [COUNT] = 8 THEN

GOTO GROUPS

ELSE

GOTO START

ELSEIF

GOTO RETURN

ENDIF

This example will error on the ELSEIF.

Corrected example:

63 – UNKNOWN_KEY_ SEQUENCE

64 – ENDING_ SABRE_ FOUND

65 – NO_ENDING_CHEVRON

66 – IF_NOT_ TERMIN-ATED

67 – ELSEIF_ WITHOUT_IF

68 – ELSEIF_ AFTER_ ELSE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 107

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.

The ELSEIF is out of sequence with the command on the referenced line.

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

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.

There is an ELSE command without the corresponding IF command.

There is an ELSE command without the corresponding IF command. This usually 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.

69 – ELSEIF_OUT_OF_ SEQUENCE

70 – ELSE_ WITHOUT_IF

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 108

Cannot use ELSE following an ELSE command.

The ELSE command can only follow the THEN command.

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.

The ELSE is out of sequence with the command on the referenced line.

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

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.

71 – ELSE_ AFTER_ ELSE

72 – ELSE_OUT_OF_ SEQUENCE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 109

Corrected example: IF [MOVE] = "Y" THEN

MENU

"Move Up"

>>MU{ENTER}<<

ENDMENU

ELSE

GOTO START

ENDIF

There is an ENDIF command without the corresponding IF command.

There is an ENDIF command without the corresponding IF command. This usually 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.

The ENDIF is out of sequence with the command on the referenced line.

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

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.

73 – ENDIF_ WITHOUT_IF

74 – ENDIF_OUT_OF_ SEQUENCE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 110

There is a WHILE command without the corresponding ENDWHILE command.

There is a WHILE command without the corresponding ENDWHILE command. 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.

There is an ENDWHILE command without the corresponding WHILE command.

There is an ENDWHILE command without the corresponding WHILE command. 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.

The ENDWHILE is out of sequence with the command on the referenced line.

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

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.

75 – WHILE_NOT_TERMIN-ATED

76 – ENDWHILE_WITHOUT_ WHILE

77 – ENDWHILE_OUT_OF_ SEQUENCE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 111

There is a REPEAT command without the corresponding UNTIL command.

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

There is an UNTIL command without the corresponding REPEAT command.

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

The UNTIL is out of sequence with the command on the referenced line.

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

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.

78 – REPEAT_ NOT_TER-MINATED

79 – UNTIL_WITHOUT_ REPEAT

80 – UNTIL_OUT_OF_ SEQUENCE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 112

There is a WHENEVER command without the corresponding ENDWHENEVER command.

There is a WHENEVER command without the corresponding ENDWHENEVER 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.

There is an ENDWHENEVER command without the corresponding WHENEVER command.

There is an ENDWHENEVER command without the corresponding WHENEVER 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.

The ENDWHENEVER is out of sequence with the command on the referenced line.

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.

81 – WE_NOT_ TERMIN-ATED

82 – ENDWE_ WITHOUT_ WE

83 – WE_OUT_OF_SEQUENCE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 113

WHENEVER statements cannot be nested within another WHENEVER statement.

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.

There is a SUB command without the corresponding ENDSUB command.

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

There is an ENDSUB command without the corresponding SUB command.

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

There is a RETURN command without the corresponding SUB command.

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

84 – CANT_NEST_WE

85 – SUB_NOT_ TERMIN-ATED

86 – ENDSUB_ WITHOUT_ SUB

87 – RETURN_ WITHOUT_ SUB

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 114

The ENDSUB is out of sequence with the command on the referenced line.

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

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.

MENU has more than 22 selection items. MENU’s can have 2-22 selection items.

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

MENU has only 1 selection item. MENU’s can have 2-22 selection items.

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

The MENU item is too wide for the MENU command.

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

88 – SUB_OUT_ OF_ SEQUENCE

89 – MENU_TOO_LARGE

90 – MENU_TOO_SMALL

91 – MENU_TOO_WIDE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 115

There is a MENU command without the corresponding ENDMENU command.

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

There is an ENDMENU command without the corresponding MENU command.

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

The ENDMENU is out of sequence with the command on the referenced line.

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

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.

The Dividing line of a MENU should not be the first item in the MENU.

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

92 – MENU_NOT_TERMIN-ATED

93 – ENDMENU_WITHOUT_ MENU

94 – ENDMENU_OUT_OF_ SEQUENCE

95 – DIVIDE_NOT_FIRST

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 116

The Dividing line of a MENU should not be the last item in the MENU.

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

No unique Accelerator Characters were available for this MENU item.

No unique accelerator characters were available for this menu item. All the 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.

The Accelerator Character for this item has already been used by a previous MENU item.

The accelerator character for this item has already been used by a previous menu 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.

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

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

96 – DIVIDE_NOT_LAST

97 – NO_UNIQUE_ACCEL

98 – ACCEL_ ALREADY_ USED

99 – MISSING_ COMMAND_FOR_ CHOICE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 117

The WINDOW has more lines of text then the Sabre screen allows.

The window has more lines of text then the Sabre system screen allows. A maximum 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.

The WINDOW is too wide for the Sabre screen.

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

There is a WINDOW command without the corresponding ENDWINDOW command.

There is a WINDOW command without the corresponding ENDWINDOW 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.

There is an ENDWINDOW command without the corresponding WINDOW command.

There is an ENDWINDOW command without the corresponding WINDOW command. This usually occurs when the WINDOW 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.

The ENDWINDOW is out of sequence with the command on the referenced line.

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

There is WINDOW text that is to the left of the WINDOW command.

All text within a WINDOW command must be directly under or to the right of the WINDOW/ ENDWINDOW commands.

Example:

WINDOW

text within the window

ENDWINDOW

Corrected example: WINDOW

text within the window

ENDWINDOW

100 – WINDOW_ TOO_LONG

101 – WINDOW_ TOO_WIDE

102 – WINDOW_ NOT_TER-MINATED

103 – END-WINDOW_ WITHOUT_ WINDOW

104 – END-WINDOW_ OUT_OF_ SEQUENCE

105 – TEXT_LEFT_OF_ WINDOW

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 118

The SCREEN has more lines of text then the Sabre screen allows.

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

There is a SCREEN command without the corresponding ENDSCREEN command.

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

There is an ENDSCREEN command without a corresponding SCREEN command.

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

The ENDSCREEN is out of sequence with the command on the referenced line.

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

The File requested was not found at the specified Drive and Directory.

The file requested was not found at the specified drive and directory. Contact the LAN administrator within your office for more information.

There are too many open files for the Sabre script to compile.

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

The current Login does not have rights for this File and Directory.

The current login does not have rights for this file and directory. Contact the LAN administrator within your office for more information.

The SHARE file is not installed.

The SHARE file is normally installed by Novell NetWare. This error occurs if you 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.

106 – SCREEN_ TOO_LONG

107 – SCREEN_ NOT_TER-MINATED

108 – END-SCREEN_ WITHOUT_ SCREEN

109 – END-SCREEN_ OUT_OF_ SEQUENCE

110 – FILE_NOT_ FOUND

111 – TOO_MANY_OPEN_ HANDLES

112 – ACCESS_ DENIED

113 – SHARE_NOT_INSTALLED

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix C 119

A FILE parameter has already been encountered on this line.

The compiler has encountered more than one FILE (F=) parameter in this command. Occurs when two or more FILE= or F= appear in a command line.

A LENGTH parameter has already been encountered on this line.

The compiler has encountered more than one LENGTH (LENGTH=) parameter in this command.

The string encountered at this line exceeds 80 characters maximum.

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

114 – FILE_ ALREADY_ PRO-CESSED

115 – LENGTH_ ALREADY_ PRO-CESSED

116 – STRING_ TOO_LONG

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix D 120

A p p e n d i x D

R u n T i m e E r r o r M e s s a g e s

Cannot perform requested action on the selected file or Sabre script.

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.

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.

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

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.

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.

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.

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

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.

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.

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

ACCESS_ DENIED

BAD_ALPHA

BAD_ALPHA-NUMERIC

BAD_ANY

BAD_DATE

BAD_ DECIMAL

BAD_MASK

BAD_NUMERIC

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix D 121

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.

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.

The Sabre script has not been compiled under the current version of MySabre 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.

Cannot establish a Data Link with Sabre with Windows.

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

Cannot create temporary file.

The MySabre Scribe Developer software could not create the temporary files it 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.

Sabre with Windows is not active.

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

Unable to access the Sabre script because the Sabre script does not exist.

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.

An Invalid Opcode error exists in the compiled version of this Sabre script.

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

BAD_TIME

BAD_ VERSION

CANT_ CONNECT_ TO_ EMULATOR

CANT_ CREATE_ TEMP

EMULATOR_NOT_ LOADED

FILE_NOT_ FOUND

INVALID_ OPCODE

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Appendix D 122

The execution line of the runtime contains an invalid 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.

The box has been designated as MANDATORY, but no characters have been entered.

The current box requires a character to be entered for the script to execute.

The box has been designated as a MUST FILL, but it is not completely filled in.

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.

This Sabre script has encountered an Out of Memory system error.

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.

The SHARE file is not 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.

This Sabre script has encountered a Process Stack Underflow Fatal error.

There is a Process Stack Underflow Fatal error with this script and the run time.

There are too many open files for the Sabre script to execute.

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

The equation result is too large. MySabre Scribe is shortening the value.

When the value returned by an equation is too large, MySabre Scribe run time truncates that value. If the error persists, contact the creator of the script.

This Sabre script has encountered an Unknown System Error. Please contact the LAN Administrator within your office.

This script has encountered an Unknown System Error. Contact the LAN administrator within your office.

INVALID_ PARAMETER

MAN-DATORY_ EMPTY

MUSTFILL_ NOT_FILLED

OUT_OF_ MEMORY

SHARE_NOT_INSTALLED

STACK_ UNDER-FLOW

TOO_MANY_OPEN_ HANDLES

TRUN-CATING_ VALUE

UNKNOWN_SYSTEM_ ERROR

MySabre Scribe SCRIPTING REFERENCE GUIDE December 2007 Glossary 123

G l o s s a r y

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 124

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 125

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 Index 126

I n d e x

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 127

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 128

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


Recommended