Tivoli Service Desk 6.0 Developer's Toolkit Script - Manuel de référence du langage TSD Script
Retour à la page principale
Appelle un programme.
FUNCTION SysCallProgram(VAL commandLine: STRING [VAL arg: STRING ... ]): INTEGER;
Nom de l'argument | Description |
commandLine | Expression de type chaîne (string) contenant le nom du programme exécutable à appeler. Si ce nom n'est pas qualifié, le programme est recherché dans les chemins d'accès définis dans PATH. |
arg | Arguments de ligne de commande relatifs au programme appelé. Chaque argument doit être de type STRING (chaîne). |
L'instruction SysCallProgram ne peut être utilisée que pour exécuter un programme.
KNOWLEDGEBASE Make;
ROUTINES PROCEDURE MakeKB( VAL argList: LIST OF STRING );
PRIVATE ROUTINES
EVENT ErrorEvent IS ACTIONS WHEN $Event IS $MsgLabel THEN SysCallProgram( 'aseedit.exe', $EventParm( 2, STRING ) ); END; END;
PROCEDURE MakeKB( VAL argList: LIST OF STRING ) IS VARIABLES whdl: WINDOW; hdlSession: SESSION; fileName: STRING;
ACTIONS (* If no file is specified on the command line prompt for one *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'File to parse?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength ( fileName )- 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* Display Progress window *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Parsing', $Helvetica, 14, BitOr( $WinTitle, $WinBorder, $WinAutoPos,$WinSYsMenu )); WinWriteLN( whdl, fileName ); (* Create a session for the Application Software-Script Parser. The session is created invisible. An error file in the IDE format is requested *) SysCallProgram('kp.exe', '/IDE', '/e', fileName.&:ERR', fileName); SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* Test for error file *) WinCreateHyperViewer( $Desktop, whdl, '', ErrorEvent, 0, 0, 0, 0, fileName & '.ERR', BitOr( $WinTitle, $WinBorder, $WinAutoPos, $WinAutoSize, $WinSysMenu, $WinReSize )); SendMessage( whdl, $MsgOpenFile, fileName & '.ERR', fileName, $HyperNoWordWrap ); WinWait( whdl ); END; END; END;
Code retour | Description |
1 | Opération exécutée avec succès. |
-2 | Valeur inconnue. |
-3 | Mémoire insuffisante. |
Exécute un programme dans une nouvelle session, celle-ci étant une session fille de la session appelante.
FUNCTION SysCreateSession(REF hdlSession: SESSION, VAL program, argList: STRING, VAL xLoc, yLoc, width, height, style: INTEGER): INTEGER;
Attention : Les sessions créées par une application sont fermées lorsque cette application prend fin.
Nom de l'argument | Description |
hdlSession | Renvoie le descripteur de la nouvelle session. Si celle-ci n'est pas créée, le descripteur prend la valeur $Unknown. |
program | Nom du programme à exécuter. Si ce programme ne figure pas dans les chemins d'accès définis dans PATH, vous devez indiquer un nom qualifié complet. |
argList | Arguments de ligne de commande relatifs au programme appelé. |
xLoc | Abscisse (x) de l'angle supérieur gauche de la fenêtre de la nouvelle session. Tous les programmes ne permettent pas le positionnement. |
yLoc | Ordonnée (y) de l'angle supérieur gauche de la fenêtre de la nouvelle session. Tous les programmes ne permettent pas le positionnement. |
width | Largeur de la fenêtre de la nouvelle session. Tous les programmes ne permettent pas le positionnement. |
height | Hauteur de la fenêtre de la nouvelle session. Tous les programmes ne permettent pas le positionnement. |
style | Indicateurs de style qui contrôlent le comportement de la nouvelle session. Vous pouvez
utiliser toute combinaison des indicateurs suivants pour définir le style :
|
Pour que cette fonction puisse s'exécuter, la liste d'arguments ne doit pas être indéfinie. En l'absence d'arguments spécifiques à transmettre, vous devez donc indiquer une chaîne de longueur nulle ('').
Remarque : Ne transmettez pas la valeur $Unknown.
Sous OS/2, une session Windows plein écran peut être créée en indiquant COMMAND.COM comme nom de programme, et /c win <progname> comme arguments.
Sous OS/2, de nombreuses applications Presentation Manager définissent elles-mêmes la taille de leur fenêtre lors de leur démarrage. Dans ce cas, les paramètres xLoc, yLoc, xLen et yLen sont ignorés.
Les paramètres xLoc, yLoc, xLen et yLen parameters ne sont pas utilisés sous Windows. Dans cet environnement, toutes les sessions sont créées en utilisant $SessionAutoPosition pour ces styles.
KNOWLEDGEBASE Make;
ROUTINES PROCEDURE MakeKB( VAL argList: LIST OF STRING );
PRIVATE ROUTINES
EVENT ErrorEvent IS ACTIONS WHEN $Event IS $MsgLabel THEN SysCallProgram( 'aseedit.exe', $EventParm( 2, STRING ) ); END; END;
PROCEDURE MakeKB( VAL argList: LIST OF STRING ) IS VARIABLES whdl: WINDOW; hdlSession: SESSION; fileName: STRING;
ACTIONS (* If no file is specified on the command line prompt for one *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'File to parse?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength (fileName) - 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* Display Progress window *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Parsing', $Helvetica, 14, BitOr( $WinTitle, $WinBorder, $WinAutoPos,$WinSYsMenu )); WinWriteLN( whdl,fileName ); (* Create a session for the Application Software-Script parser. The session is *) (* created invisibly. An error file in the IDE format *) (* is requested *) SysCreateSession( hdlsession, 'kp.exe','/IDE /e' & fileName & '.ERR ' & fileName, 0, 0, 0, 0, $SessionInvisible ); SysWaitSession( hdlSession );
(* Close progress window when parser is finished *) SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* Test for error file *) WinCreateHyperViewer( $Desktop, whdl, '', ErrorEvent, 0, 0, 0, 0, fileName & '.ERR', BitOr( $WinTitle, $WinBorder, $WinAutoPos, $WinAutoSize, $WinSysMenu, $WinReSize )); SendMessage( whdl, $MsgOpenFile, fileName & '.ERR', fileName, $HyperNoWordWrap ); WinWait( whdl ); END; END; END;
Code retour | Description |
1 | Opération exécutée avec succès. |
-2 | Valeur inconnue. |
-4 | La session n'a pu être créée. |
Entraîne une pause de n millisecondes dans l'exécution.
FUNCTION SysDelay(VAL time: INTEGER): INTEGER;
Nom de l'argument | Description |
time | Durée de la pause, exprimée en millisecondes. |
KNOWLEDGEBASE Tone;
ROUTINES PROCEDURE ToneExample;
PRIVATE ROUTINES PROCEDURE ToneExample IS
ACTIONS SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 300, 400 ); END;
Code retour | Description |
1 | Opération exécutée avec succès. |
-2 | Valeur inconnue. |
Extrait une chaîne à partir du presse-papiers du système.
FUNCTION SysGetClipboard(REF clipBoard: STRING): INTEGER;
Nom de l'argument | Description |
clipBoard | Renvoie le contenu du presse-papiers du système. Si le presse-papiers est vide, la valeur renvoyée est $Unknown. |
KNOWLEDGEBASE Clip;
CONSTANTS MENU_REFRESH IS 101; MENU_EXIT IS 102;
ROUTINES PROCEDURE ClipView;
PRIVATE CONSTANTS menuList IS { '~File', '~Refresh', 'e~xit', '' }: LIST OF
STRING;
ROUTINES (* ******** EDITOR EVENT HANDLER ******** *) EVENT ClipboardEvent( REF clipBoard: STRING ) IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar( $Handle, menuList ); SysGetClipboard( clipBoard ); WinWrite( $Handle, clipBoard ); ELSWHEN $MsgMenu THEN (* Menu Message *) WHEN $MenuSelection IS MENU_REFRESH THEN SysGetClipboard( clipBoard ); WinCLear( $Handle ); WinWrite( $Handle, clipBoard ); ELSWHEN MENU_EXIT THEN SendMessage( $Handle, $MsgClose ); END; END; END;
PROCEDURE ClipView IS
VARIABLES whdl: WINDOW; result: INTEGER;
ACTIONS result := WinCreateScrollWindow( $Desktop, whdl, ClipboardEvent{''}, 0, 0, 0, 0, 'KML Clipboard viewer', '', 10, BitOr($WinBorder, $WinTitle, $WinResize, $WinSysMenu, $WinMenu, $WinAutoPos, $WinAutoSize, $WinVScroll, $WinHScroll, $WinTaskList )) IF result < 1 THEN WinMessageBox( $Desktop, 'Error', $mbok + $MBIconError, 'Open failed' & result ); END; WinWait( whdl ); END;
Code retour | Description |
1 | Opération exécutée avec succès. |
0 | Le presse-papiers est vide. |
-3 | Mémoire insuffisante. |
-10 | L'un des appels effectués au système d'exploitation en vue d'accéder au presse-papiers a échoué. |
Complète les champs de l'enregistrement de contexte concerné avec les informations relatives à l'environnement de fonctionnement en cours.
FUNCTION SysGetContext (REF context: $SystemContext): INTEGER;
Nom de l'argument | Description |
context | Variable de type $SystemContext. |
$SystemContext est un type RECORD déclaré dans la base de connaissances kml.kb du système. La déclaration de $SystemContext est la suivante :
$SystemContext IS RECORD operatingSystem: String; ASEVersion: String; VendorOSName: String: VendorOSVersion: String; FreeMemory: Integer: FreeResources: Integer: NLSInfo: $SystemNlsInfo; END;
Voici la description des champs de $SystemContext :
Champ | Description |
operatingSystem | Windows, OS/2 ou UNIX. |
ASEVersion | Actuellement, 5.0. |
VendorOSName | Nom complet du fournisseur du système d'exploitation du poste de travail. Ce champ diffère du champ operatingSystem de $SystemContext car il contient le véritable nom du système d'exploitation, tel que 'Microsoft Windows 95,' et non un identificateur. |
VendorOSVersion | Numéro de version attribué par le fournisseur au système d'exploitation du poste de
travail. La valeur de ce champ peut être inconnue dans les cas suivants :
|
FreeMemory | Estimation en cours, effectuée par le système d'exploitation, de la quantité de mémoire disponible (physique et virtuelle) au moment de l'appel SysGetContext. La valeur renvoyée est exprimée en kilo-octets (Ko). |
FreeResources | Estimation en cours, effectuée par le système d'exploitation, de la quantité de ressources disponibles au moment de l'appel SysGetContext. La valeur de ce champ peut être inconnue si le système d'exploitation ne prend pas ce concept en charge (ce qui est le cas pour OS/2, par exemple). |
NlsInfo | Informations NLS (support de langue nationale). Reportez-vous à la description de l'enregistrement $SystemNlsInfo ci-après. |
L'enregistrement renvoyé par SysGetContext contient les informations NLS suivantes :
$SystemNlsInfo IS RECORD CountryCode: Integer; CurrencySymbol: String; CurrencyBefore: Boolean; DateFourDigitYear: Boolean; DateOrdering: String; DateSeparator: String; DecimalSeparator: String; DecimalLeadingZero: Boolean; NumCurrencyDecimalDigits: Integer; NumCurrencyExtraSpaces: Integer; NumericGroupSeparator: String; NumRealDecimalDigits: Integer; TimeSeparator: String;
Champ | Description |
CountryCode | Code pays de la machine hôte. |
CurrencyBefore | Indique si le symbole monétaire est affiché avant ou après la valeur numérique
correspondante. TRUE - Le symbole monétaire est placé avant la valeur. FALSE - Le symbole monétaire est placé après la valeur. |
CurrencySymbol | Symbole monétaire de la machine hôte. |
DateFourDigitYear | Indique si le format de date natif comporte 2 ou 4 chiffres pour l'année. TRUE - L'année est codée sur 4 chiffres (par exemple, 1999). FALSE - L'année est codée sur 2 chiffres (par exemple, 99). |
DateOrdering | Chaîne de format telle que MM/DD/YY. |
DateSeparator | Caractère utilisé pour séparer les valeurs représentant le jour, le mois et l'année dans une date. |
DecimalSeparator | Caractère utilisé pour séparer la partie entière d'un nombre de sa partie décimale. |
DecimalLeadingZero | Indique si les nombres décimaux inférieurs à 1 nécessitent un zéro initial (par exemple, 0,123 ou ,123). |
IntlCurrencySymbol | Symbole monétaire à utiliser lorsque le caractère correct n'est pas disponible. |
LocaleId | Environnement local en cours de la machine hôte. |
NumCurrencyDecimalDigit | Nombre de chiffres généralement placés avant le symbole décimal. |
NumCurrencyExtraSpaces | Nombre d'espaces à insérer entre la valeur numérique et le symbole monétaire. |
NumericGroupSeparator | Caractère à utiliser pour regrouper les chiffres des grands nombres (en d'autres termes, il s'agit du séparateur des milliers). |
NumRealDecimalDigits | Nombre de chiffres à utiliser pour afficher les nombres réels (par exemple, 3,14159 ou 3,14). |
TimeSeparator | Caractère à utiliser pour séparer les heures, les minutes et les secondes. |
L'enregistrement (RECORD) $SystemContext utilisé par cette fonction comprend un nouveau champ,
appelé GMTBias. Il s'agit de la différence, exprimée en
secondes, entre l'heure locale
et l'heure GMT équivalente. Cette valeur est généralement obtenue du système d'exploitation hôte, mais elle peut également
être définie manuellement à l'aide de SysSetGMTDiff.
La page Zone de texte de cette boîte de dialogue comporte une nouvelle case à cocher appelée "Conversion GMT". Cette case ne peut être cochée que pour les zones d'entrée dont le contenu est de type Heure ou Date. Si vous cochez cette case, Tivoli Service Desk Developer's Toolkit convertira automatiquement (voir SysLocalizeTime) l'heure ou la date fournie dans la zone concernée.
La page Colonnes de cette boîte de dialogue comporte une nouvelle case à cocher appelée "Conversion
GMT". Cette case peut être définie individuellement pour chaque
colonne de la boîte à liste. Elle ne
doit être cochée que pour les colonnes qui contiendront des valeurs de type date (DATE) ou heure (TIME).
Lorsque vous utilisez les cases à cocher Conversion GMT pour les
zones d'entrée et les colonnes des boîtes à liste multicolonnes (voir
ci-dessus),
vous devez respecter une
convention de dénomination simple pour que la conversion puisse fonctionner.
Si la conversion GMT est demandée pour une zone de type Heure, elle doit l'être aussi pour la zone de type
Date correspondante. Ces deux zones doivent être associées par
l'intermédiaire d'une convention de dénomination (pour plus
d'informations, reportez-vous à la description des
instructions SysLocalizeTime
et SysGlobalizeTime).
Les noms de contrôles de ces zones doivent se terminer respectivement par "_TIME" et
"_DATE". Le reste du nom doit être identique pour chacune de ces zones. Par exemple :
Nom de la zone Heure Nom de la zone Date Validité
----------------------- ----------------------- --------
START_TIME START_DATE Correct
MY_BIRTH_TIME MY_BIRTH_DATE Correct
MYBIRTHTIME MYBIRTHDATE Incorrect
THE_TIME_ENDS THE_DATE_ENDS Incorrect
Si les deux zones ne sont pas appariées correctement, la conversion ne peut avoir lieu.
Code retour | Description |
1 | Opération exécutée avec succès. |
-2 | Le paramètre de contexte contenait une référence incorrecte. |
La fonction SysGetEnvironment permet de rechercher une clé particulière dans une liste d'environnement fournie par le système d'exploitation. Si la clé est trouvée, SysGetEnvironment renvoie la chaîne correspondante.
FUNCTION SysGetEnvironment (VAL key: STRING): STRING;
Nom de l'argument | Description |
key | Clé à rechercher. |
Si la liste d'environnement ne contient aucune entrée correspondant à la clé recherchée, la fonction renvoie la valeur $Unknown.
IF UNKNOWN (fileName := SysGetEnvironment ('CONFIG')) THEN CreateDefaultConfigFile;\ END; ConfigFile :=FOpen (fileName);
Si la clé est trouvée, SysGetEnvironment renvoie la chaîne correspondante.
Interroge le système afin d'obtenir la liste des tâches en cours.
FUNCTION SysGetTaskList(REF taskList: LIST OF $TASKRECORD): INTEGER;
Remarque : Les commandes de session système ne peuvent être utilisées qu'avec les sessions créées par la session appelante.
OS/2 impose des restrictions en ce qui concerne les messages envoyés à des fenêtres appartenant à des processus différents. Pour plus d'informations sur ces restrictions, reportez-vous à la documentation relative à la programmation système de votre version d'OS/2.
Nom de l'argument | Description |
taskList | Cet argument doit être une variable de type liste possédant le type d'enregistrement
système $TASKRECORD.
$TASKRECORD est défini de la manière suivante dans la base de connaissance kml.kb du système :
$TASKRECORD IS title: STRING; hWindow: WINDOW; hSession: SESSION; hProcess: PROCESS; END; |
SysGetTaskList renvoie les enregistrements de tâches de chacune des sessions ouvertes, y compris celles qui ne sont pas de type TSD Script. Chaque enregistrement de tâche contient le texte de titre qui figure dans la fenêtre supérieure de la session considérée.
KNOWLEDGEBASE Tasks;
ROUTINES FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN;
PRIVATE ROUTINES
FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN IS VARIABLES taskList: LIST OF $TASKRECORD; (* $TASKRECORD is system- defined *)
ACTIONS IF SysGetTaskList( taskList ) <= 0 THEN EXIT FALSE; END; FOR taskList DO (* Search list for task name *) IF taskList[ $CURRENT ].title = taskName THEN SysSelectTask (taskList[ $CURRENT ] ); EXIT TRUE; END; END; EXIT FALSE; END;
Code retour | Description |
any | Renvoie les enregistrements de tâches de chacune des sessions ouvertes, y compris celles qui ne sont pas de type TSD Script. Chaque enregistrement de tâche contient le texte de titre qui figure dans la fenêtre supérieure de la session considérée. Reportez-vous aux remarques pour connaître les différences de fonctionnement de SysGetTaskList entre OS/2 et Windows. |
-2 | Valeur inconnue. |
-3 | Mémoire insuffisante. |
Crée une session de traitement de commandes.
FUNCTION SysOSShell(VAL commandLine: STRING): INTEGER;
Sous OS/2, les shells démarrés par SysOSShell sont arrêtés lorsque l'application TSD Script (la session mère) prend fin.
Nom de l'argument | Description |
commandLine | Commande exécutée par l'interpréteur de commandes. La transmission d'une chaîne vide entraîne l'affichage d'une nouvelle invite de commande. |
Sous OS/2, SysOSShell ouvre une session exécutant le shell indiqué dans la variable d'environnement COMSPEC. (Il s'agit généralement de l'interpréteur de commandes d'OS/2, cmd.exe.) L'argument de SysOSShell est transmis au shell sous la forme de sa ligne de commande. Le shell démarré par SysOSShell s'exécute de façon asynchrone par rapport au processus appelant.
Sous UNIX, la commande indiquée comme argument est exécutée directement sous l'une des formes suivantes :
SysOSShell démarre le programme /usr/bin/X11/xterm (/usr/openwin/bin/xterm pour les machines Sun). Pour démarrer un autre programme, indiquez son nom (s'il figure dans PATH) ou son nom qualifié complet (s'il ne figure pas dans PATH) dans la variable SAI_XTERM. (SAI_XTERM doit se trouver dans l'environnement de l'utilisateur avant l'exécution du programme TSD Script qui appelle SysOSShell.)
Sous Windows, SysOSShell effectue les opérations suivantes :
Les deux arguments /C et /K servent à exécuter le shell à partir d'une ligne de commande. /C exécute la commande et ferme le shell, alors que /K exécute la commande et laisse le shell ouvert. Ces arguments ne sont pas applicables à UNIX.
KNOWLEDGEBASE OSShell;
ROUTINES PROCEDURE OSShellExample;
PRIVATE ROUTINES
PROCEDURE OSShellExample IS
ACTIONS (* /C or /K is required to run an external command for Windows or OS/2 *) SysOSShell( '/C aseedit' ); (* Child sessions end when parent session is terminated *) WinMessageBox( $Desktop, 'Cancel', $mbok, '' ); END;
Code retour | Description |
1 | Opération exécutée avec succès. |
-2 | Valeur inconnue. |
Pour plus d'informations sur cmd.exe, reportez-vous à la documentation d'OS/2.
Pour plus d'informations sur command.com, reportez-vous à l'aide en ligne de DOS.
Sélectionne une session et rend sa fenêtre active.
FUNCTION SysSelectSession(VAL hdlSession: SESSION): INTEGER;
Nom de l'argument | Description |
hdlSession | Descripteur de la session sélectionnée. |
Pour qu'une session OS/2 puisse être sélectionnée, elle doit comporter une fenêtre possédant le style $WinTaskList. En effet, les sessions qui ne figurent pas dans la liste des tâches ne peuvent être sélectionnées. La session doit avoir été créée par la session appelante. Sous UNIX, cette fonction renvoie 1 (opération réussie) sans tenter de sélectionner une session.
KNOWLEDGEBASE Make2;
ROUTINES PROCEDURE MakeKB( VAL argList: LIST OF STRING );
PRIVATE VARIABLES hdlSessionEdit: SESSION;
ROUTINES
EVENT ErrorEvent IS ACTIONS WHEN $Event IS $MsgLabel THEN IF SysSelectSession( hdlSessionEdit ) < 1 THEN SysCreateSession( hdlSessionEdit, 'vi.exe', $EventParm(2, STRING ), 0, 0, 0, 0, $SessionAutoPosition ); END; END; END;
PROCEDURE MakeKB( VAL argList: LIST OF STRING ) IS VARIABLES whdl: WINDOW; hdlSession: SESSION; fileName: STRING; ACTIONS (* If no file is specified on the command line prompt for one *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'File to parse?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength (fileName) - 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* Display Progress window *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Parsing', $Helvetica, 14, BitOr( $WinTitle, $WinBorder, $WinAutoPos, $WinSYsMenu )); WinWrIteLN( whdl, fileName ); (* Create a session for the Application Software-Script parser. The session is created invisible.An error file in the IDE format *) (* is requested *) SysCreateSession( hdlSession, 'kp.exe', '/IDE /e' & fileName & '.ERR ' & fileName, 0, 0, 0, 0, $SessionInvisible ); SysWaitSession( hdlSession ); (* Close progress window when parser is finished *) SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* Test for error file *) WinCreateHyperViewer( $Desktop, whdl, '', ErrorEvent, 0, 0, 0, 0, fileName & '.ERR', BitOr( $WinTitle, $WinBorder, $WinAutoPos, $WinAutoSize, $WinSysMenu, $WinReSize )); SendMessage( whdl, $MsgOpenFile, fileName & '.ERR', fileName, $HyperNoWordWrap ); WinWait( whdl ); END; END; (* end of FOR*) END; (* end of make KB*)
Code retour | Description |
1 | Opération exécutée avec succès. |
-2 | Valeur inconnue. |
-369 | Le descripteur de session ne fait pas référence à une session correcte. |
-460 | Le processus appelant n'est pas le père de la session. Une session ne peut être sélectionnée que par le processus qui l'a créée. |
Active la tâche sélectionnée.
FUNCTION SysSelectTask(VAL task: $TASKRECORD): INTEGER;
Nom de l'argument | Description |
task | Cet argument doit posséder le type d'enregistrement système $TASKRECORD.
$TASKRECORD est défini de la manière suivante dans la base de connaissance kml.kb du système :
$TASKRECORD IS title: STRING;hWindow: WINDOW; hSession: SESSION; hProcess: PROCESS; END; Les champs de l'enregistrement doivent avoir été définis à l'aide de SysGetTaskList. |
KNOWLEDGEBASE Tasks;
ROUTINES FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN;
PRIVATE ROUTINES
FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN IS VARIABLES taskList: LIST OF $TASKRECORD; (* $TASKRECORD is system-defined *)
ACTIONS IF SysGetTaskList( taskList ) <= 0 THEN EXIT FALSE; END; FOR taskList DO (* Search list for task name *) IF taskList[ $CURRENT ].title = taskName THEN SysSelectTask (taskList[ $CURRENT ] ); EXIT TRUE; END; END; EXIT FALSE; END;
Code retour | Description |
1 | Opération exécutée avec succès. |
-2 | Valeur inconnue. |
-10 | La demande en vue d'obtenir du système d'exploitation un service nécessaire pour exécuter la fonction a échoué. Des valeurs incorrectes pour les arguments de l'instruction, ou des restrictions liées aux ressources du système, peuvent être à l'origine de cet échec. |
Définit la valeur de la chaîne contenue dans le presse-papiers du système.
FUNCTION SysSetClipboard(VAL clipBoard: STRING): INTEGER;
Nom de l'argument | Description |
clipBoard | La nouvelle valeur remplace celle figurant éventuellement dans le presse-papiers. |
KNOWLEDGEBASE SetClip;
ROUTINES PROCEDURE SetClipBoard( VAL clipBoard: LIST OF STRING );
PRIVATE ROUTINES PROCEDURE SetClipBoard( VAL clipBoard: LIST OF STRING ) IS VARIABLES clipBoardString: STRING;
ACTIONS clipBoardString := ''; FOR clipBoard DO clipBoardString := clipBoardString & ' ' & clipBoard[ $CURRENT ]; END; SysSetClipboard( clipBoardString ); END;
Code retour | Description |
1 | Opération exécutée avec succès. |
-2 | Valeur inconnue. |
-3 | Mémoire insuffisante. |
-10 | L'une des opérations du système d'exploitation effectuée en vue d'accéder au presse-papiers a échoué. |
Ajoute une entrée à (ou modifie une entrée dans) la liste d'environnement fournie par le système d'exploitation, de sorte que la nouvelle valeur (le cas échéant) soit associée à la clé indiquée.
FUNCTION SysSetEnvironment (VAL key: STRING [, VAL newValue: STRING]): INTEGER;
DOS et OS/2 n'effectue pas de copie des chaînes transmises à une liste d'environnement. Ils utilisent directement ces chaînes, ce qui a deux implications en termes d'utilisation de la mémoire :
Nom de l'argument | Description |
key | Chaîne de clé de la liste d'environnement. |
newValue | Nouvelle chaîne à associer à la clé. |
La fonction SysSetEnvironment associe la nouvelle valeur à la clé correspondante de la liste d'environnement, ou supprime la clé et sa valeur si l'argument newValue est omis.
La nature exacte de la liste d'environnement dépend du système d'exploitation. Toutefois, la liste d'environnement est généralement copiée d'un processus parent dans un processus enfant, et détruite lorsque ce dernier prend fin.
Une variable d'environnement définie à l'aide de SysSetEnvironment doit renvoyer la nouvelle valeur et être copiée dans les processus enfants démarrés par les appels SysCallProgram, SysCreateSession et SysOSShell. Cette variable n'est pas recopiée dans l'environnement dans lequel le système d'exécution de Tivoli Service Desk Developer's Toolkit a démarré.
Remarque : Si l'argument newValue est omis, la variable d'environnement indiquée est supprimée.
IF SQLSelectInto ('SELECT ICONS FROM DIRECTORIES', iconPATHPATHPATHPATH) >= 1 AND StrPos (globalPath := SysGetEnvironment ('PATH'), iconPath) = 0 THEN SysSetEnvironment ('PATH', globalPath & ';' & iconPath); END;
Code retour | Description |
1 | Opération exécutée avec succès. |
-10 | L'appel du système d'exploitation a échoué. |
Normalement, Tivoli Service Desk Developer's Toolkit interroge le système d'exploitation pour connaître la différence entre l'heure locale et l'heure GMT (Greenwich Mean Time). Cette fonction peut être utilisée pour définir manuellement cette différence en remplaçant la valeur native.
FUNCTION SysSetGMTDiff( VAL NewDiff : Integer [, $Seconds | $Minutes | $Hours]) : INTEGER;
Argument | Description |
NewDiff | Nouvelle différence entre l'heure GMT et l'heure locale. Le nombre indiqué sera ajouté à l'heure locale pour la convertir en heure GMT. Par exemple, la différence par défaut entre l'heure GMT et l'heure de New York est de +5 heures. Pour le Caire, elle est de -2 heures. La plage admise pour cet argument est : -12 heures <= NewDiff <= +12 heures. |
Units | Unité de mesure utilisée pour exprimer la différence. |
Code retour | Description |
1 | Opération exécutée avec succès. |
-1 | Une différence incorrecte a été indiquée. |
KNOWLEDGEBASE GMTTest; ROUTINES
Procedure Proc1;
PRIVATE ROUTINES
Procedure Proc1 IS
VARIABLES whdl : Window; r : $SystemContext; t : TIME; d : DATE; nRC : Integer;
ACTIONS WinCreateScrollWindow($Desktop, whdl, $NullHandler, 15,10,80,20, 'Stuff', $SystemMonospaced, 10, $WinDefaultStyle); --Set the GMT bias to something funky. This is the equivalent of --the GMT Moscow... nRC := SysSetGMTDiff(-3, $hours); WinWriteLn(whdl, 'SysSetGMTDiff returned: ' & nRC); --Retrieve the GMT bias which should now be -3 hours (but specified in --seconds) and display it SysGetContext(r); WinWriteLn(whdl, 'GMT Bias = ' & r.GMTBias); --I picked this time and date at random t := {01,07,07}:TIME; d := {07,07,1993}:DATE; WinWriteLn(whdl, 'Before globalization: ' & d & ' ' & t ); --Globalize the time and display it SysGlobalizeTime(t, d); WinWriteLn(whdl, 'After globalization: ' & d & ' ' & t ); --Localize it again and display it (this should be the same as "before --globalization" SysLocalizeTime(t, d); WinWriteLn(whdl, 'After localization: ' & d & ' ' & t ); WinWait( whdl ); END;
Définit la valeur entière que l'interpréteur TSD Script renvoie au shell de commande UNIX ou à la fenêtre DOS en cas de succès de l'opération. Si SysSetReturnCode n'est pas utilisée, l'interpréteur renvoie la valeur 1.
FUNCTION SysSetReturnCode(VAL Code: INTEGER]):INTEGER;
Attention : Si l'interpréteur TSD Script rencontre une erreur fatale et doit s'interrompre, il remplace toute valeur définie par SysSetReturnCode.
Nom de l'argument | Description |
code | Code à renvoyer au shell de commande ou à la fenêtre DOS. |
Si cette fonction est appelée plusieurs fois, la valeur transmise lors du dernier appel est utilisée.
Remarque : Cette fonction ne doit pas être confondue avec l'instruction TSD Script RETURN, qui définit la valeur renvoyée par une fonction TSD Script.
PROCEDURE DeepThought IS ACTIONS SysDelay(1000000); SysSetReturnCode(42); END;
Code retour | Description |
1 | Opération exécutée avec succès. |
-10 | L'appel du système d'exploitation a échoué. |
Interrompt une session active.
FUNCTION SysStopSession(VAL hdlSession: SESSION): INTEGER;
Nom de l'argument | Description |
hdlSession | Descripteur de la session à interrompre. Cette session doit avoir été démarrée par le programme appelant. |
KNOWLEDGEBASE Make;
ROUTINES PROCEDURE SessionExp( VAL argList: LIST OF STRING );
PRIVATE ROUTINES
PROCEDURE MakeKB( VAL argList: LIST OF STRING ) IS VARIABLES whdl: WINDOW; hdlSession: SESSION; fileName: STRING;
ACTIONS SysCreateSession( hdlSession, argList[1], argList[2], 0, 0, 0, 0, $SessionAutoPos ); SysStopSession( hdlSession ); END;
Code retour | Description |
1 | Opération exécutée avec succès. |
-2 | Valeur inconnue. |
-369 | Le descripteur de session ne fait pas référence à une session correcte. Il se peut que la session concernée n'existe plus. |
-460 | Le processus appelant n'est pas le père de la session. Un processus ne peut arrêter une session que s'il l'a créée. |
Emet un signal sonore via le haut-parleur du système.
FUNCTION SysTone(VAL frequency: INTEGER, VAL duration: INTEGER ): INTEGER;
Nom de l'argument | Description |
frequency | Fréquence, exprimée en Hertz, du signal sonore à émettre. |
duration | Durée du signal sonore, exprimée en millisecondes. |
Sous Windows 98, la durée et la fréquence prennent les valeurs par défaut du signal sonore défini pour le système.
KNOWLEDGEBASE Tone;
ROUTINES PROCEDURE ToneExample;
PRIVATE ROUTINES PROCEDURE ToneExample IS
ACTIONS SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 300, 400 ); END;
Code retour | Description |
1 | Opération exécutée avec succès. |
-2 | Valeur inconnue. |
Attend la fin d'une session.
FUNCTION SysWaitSession(VAL hdlSession: SESSION): INTEGER;
Attention : Les attentes de fins de sessions sont placées en pile. Cela signifie que le dernier appel à SysWaitSession doit rendre la main pour que les appels précédents éventuels puissent le faire, et ce même si les sessions concernées par ces derniers ont déjà pris fin.
Nom de l'argument | Description |
hdlSession | Descripteur de la session dont la fin est attendue. Cette session doit avoir été démarrée par le processus appelant. |
KNOWLEDGEBASE Make;
ROUTINES PROCEDURE MakeKB( VAL argList: LIST OF STRING );
PRIVATE ROUTINES
EVENT ErrorEvent IS ACTIONS WHEN $Event IS $MsgLabel THEN SysCallProgram( 'aseedit.exe', $EventParm( 2, STRING ) ); END; END;
PROCEDURE MakeKB( VAL argList: LIST OF STRING ) IS VARIABLES whdl: WINDOW; hdlSession: SESSION; fileName: STRING;
ACTIONS (* If no file is specified on the command line prompt for one *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'File to parse?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength( fileName ) - 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* Display Progress window *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Parsing', $Helvetica, 14, BitOr( $WinTitle, $WinBorder, $WinAutoPos, $WinSYsMenu )); WinWriteLN( whdl, fileName ); (* Create a session for the Application Software-Script parser. The session is created invisible. An error file in the IDE format is *) (* requested *) SysCreateSession( hdlSession, 'kp.exe', '/IDE /e' & fileName & '.ERR ' & fileName, 0, 0, 0, 0, $SessionInvisible ); SysWaitSession( hdlSession ); (* Close progress window when parser is finished *) SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* Test for error file *) WinCreateHyperViewer( $Desktop, whdl, '', ErrorEvent, 0, 0, 0, 0, fileName & '.ERR', BitOr( $WinTitle, $WinBorder, $WinAutoPos, $WinAutoSize, $WinSysMenu, (* created invisible. An error file in the IDE format is requested *) $WinReSize )); SendMessage( whdl, $MsgOpenFile, fileName & '.ERR', fileName, $HyperNoWordWrap ); WinWait( whdl ); END; END; (* end of FOR*) END; (* end of make KB*)
Code retour | Description |
1 | Opération exécutée avec succès. |
-2 | Valeur inconnue. |
Bloque l'unité d'exécution en cours jusqu'à ce que tous les messages de la file d'attente aient été envoyés.
FUNCTION SysYield
SysYield est utile si l'interface utilisateur de l'application doit refléter les messages générés par une fonction qui utilise le processeur de façon intensive.
Cette fonction convertit en son équivalent GMT une variable de type Heure (TIME) dont on suppose qu'elle contient une heure locale. Une date doit également être fournie pour le cas où la conversion l'affecterait aussi.
FUNCTION SysGlobalizeTime(REF t : TIME, REF d : DATE) : INTEGER;
Argument | Description |
t | Heure à "globaliser" (convertir). |
d | La valeur de date associée doit être fournie. En effet, si la conversion de l'heure entraîne un passage au jour suivant ou précédent, la date est modifiée en conséquence. SysGlobalizeTime doit TOUJOURS être utilisée sur une paire Date/Heure. |
Code retour | Description |
1 | Opération exécutée avec succès. |
-1 | Une date ou une heure inconnues ont été fournies. |
Reportez-vous à l'exemple de SysSetGMTDiff.
Cette fonction convertit en son équivalent local une variable de type Heure (TIME) dont on suppose qu'elle contient une heure GMT. Une date doit également être fournie pour le cas où la conversion l'affecterait aussi.
FUNCTION SysLocalizeTime(REF t : TIME, REF d : DATE) : INTEGER;
Argument | Description |
t | Heure à "localiser" (convertir). |
d | La valeur de date associée doit être fournie. En effet, si la conversion de l'heure entraîne un passage au jour suivant ou précédent, la date est modifiée en conséquence. SysLocalizeTime doit TOUJOURS être utilisée sur une paire Date/Heure. |
Code retour | Description |
1 | Opération exécutée avec succès. |
-1 | Une date ou une heure inconnues ont été fournies. |
Reportez-vous à l'exemple de SysSetGMTDiff.
Tivoli Service Desk 6.0 Developer's Toolkit Script - Manuel de référence du langage TSD Script