SQABasic "CustomRecordTypes" Library
MODULE DESCRIPTION:
Used to implement custom record types that should not or cannot become
part of the core DDE. The DDE will first try to match the record
type (field #1) to core DDE record types. If no match is found, the
DDE then tries to match the field to the name of a valid SCRIPT in the
current project. If no matching script is found, the DDE routes the
record to this library to see if the user has implemented a matching
custom record type.
The call to CustomDDERecord comes from the DDDriverCommands library.
The developer can implement their routines in this file, or any number
of SBL files. Note, however, that the namespace for public routines and
other public items is shared with the Core DDE. So you cannot
duplicate the name of any public item or routine in your custom libraries.
Declarations
Constants
Global Variables
User-Defined Types
Routine Details
User Dependencies:
(stuff the developer's library/script $INCLUDES at compile time.)
(Note: The order of items may matter and may be different for your code.)
Internal Dependencies:
(stuff this library needs at compile time.)
Exported Declarations
Function CustomDDERecord BasicLib CustomRecordTypes
Constants
(none)
Globals
(none)
User-Defined Types
(none)
Routine Details
Function CustomDDERecord (RecordType As String,
guiInfo As AUGUIInfo,
statusInfo As AUStatusInfo) As Integer
DESCRIPTION:
This function allows the custom implementation and extension of the
core DDE. This routine will be called if the record extracted from
the current test table does not have a known RECORD TYPE (field #1)
and the value of field #1 does not match the name of any Robot Script
in the current project.
The format of the record is expected to match that for all records
processed by the core Drivers. Minimally, that means the record is
a collection of fields delimited by some character--like commas or TABS.
The first field is expected to designate the kind of record represented.
The remaining fields can contain anything. The routines that
parse the remainder of the record will determine what each subsequent
field in the record contains. So, those remaining fields can be
whatever you need them to be.
Note, however, that the entire record will have already received
processing of DDVariables. That is, each field in the record will
have already had all expressions converted to their final values.
All DDVariables would have already had their values assigned and/or
extracted.
This routine is called from the DDDriverCommands library.
PARAMETERS:
RecordType PreParsed RecordType (field #1) from the record.
AUGUIInfo from the calling Driver (Cycle, Suite, or Step)
AUStatusInfo from the calling Driver (Cycle, Suite, or Step)
(See ApplicationUtilities User-Defined Types for
the information available to you for the record
being processed.)
RETURNS:
Returns DDU_SCRIPT_NOT_EXECUTED if no CustomRecordType match is found.
CustomRecordType processing should return the following values:
INCREMENTS *GENERAL* STATUS COUNTERS AUTOMATICALLY--BUT NOT TEST PASS/FAIL COUNTERS
===================================================================================
DDU_NO_SCRIPT_FAILURE = -1 'we DID process the record (failures may have been logged)
DDU_SCRIPT_WARNING = -2 'a process failure OR no CustomRecordType match
DDU_GENERAL_SCRIPT_FAILURE = 0 'a general failure in the CustomRecordType handling
DDU_INVALID_FILE_IO = 2 'an IO failure in CustomRecordType handling
DOES NOT INCREMENT ANY STATUS COUNTERS AUTOMATICALLY
=======================================================================
DDU_SCRIPT_NOT_EXECUTED = 4 'generally means noone tried to process the record
DDU_EXIT_TABLE_COMMAND = 8 'force immediate exit of current test table
DDU_IGNORE_RETURN_CODE = 16 'drivers ignore this one
The routines for incrementing counters can be found in the ApplicationUtilities library.
ERRORS:
(none) (List/Describe ERRORS "thrown" by this routine.)
Orig Author: Carl Nagle
Orig Date: JAN 31, 2002
History:
JAN 31, 2002 Original Release
Copyright (C) SAS Institute
GNU General Public License: http://www.opensource.org/licenses/gpl-license.php
==============================================================================