Tivoli Service Desk 6.0 Developer's Toolkit - Referência de Linguagem do Script
Retornar à Página Principal
Chama um programa.
FUNCTION SysCallProgram(VAL commandLine: STRING [VAL arg: STRING ... ]): INTEGER;
Nome do Argumento | Descrição |
commandLine | Uma expressão de cadeia que contém o nome de um programa executável a ser chamado. Se o nome não estiver completo, o PATH será procurado pelo programa. |
arg | Os argumentos da linha de comandos do programa sendo chamado. Cada argumento deve ser do tipo STRING. |
SysCallProgram só pode ser utilizado para iniciar um programa.
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 (* Se não for especificado nenhum arquivo no prompt da linha de comandos para um *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'Arquivo para analisar?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength ( fileName )- 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* Exibir Janela de progresso *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Analisando', $Helvetica, 14, BitOr($WinTitle, $WinBorder, $WinAutoPos,$WinSYsMenu )); WinWriteLN( whdl, fileName ); (* Criar uma sessão para o Analisador do Script do Aplicativo. A sessão é criada invisível. Um arquivo de erros no formato IDE é solicitado *) SysCallProgram('kp.exe', '/IDE', '/e', fileName.&:ERR', fileName); SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* Teste para arquivo de erros *) 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;
Código de Retorno | Descrição |
1 | Sucesso |
-2 | Valor Desconhecido |
-3 | Memória insuficiente |
Inicia um programa em uma nova sessão como um filho da sessão que está chamando.
FUNCTION SysCreateSession(REF hdlSession: SESSION, VAL program, argList: STRING, VAL xLoc, yLoc, width, height, style: INTEGER): INTEGER;
Atenção: Todas as sessões criadas por um aplicativo são encerradas quando o aplicativo termina.
Nome do Argumento | Descrição |
hdlSession | O identificador da sessão criada recentemente é retornado. Se a sessão não estiver criada, o identificador é definido como $Unknown. |
program | O nome do programa a ser executado. Se o programa não estiver no PATH, um nome completo deverá ser especificado. |
argList | Todos os argumentos da linha de comandos do programa sendo chamado. |
xLoc | A localização X do canto superior esquerdo da nova sessão. Nem todos os programas suportam o posicionamento. |
yLoc | A localização Y do canto superior esquerdo da nova sessão. Nem todos os programas suportam o posicionamento. |
width | A largura da nova sessão. Nem todos os programas suportam o posicionamento. |
height | A altura da nova sessão. Nem todos os programas suportam o posicionamento. |
style | Sinalizadores de estilo que controlam o procedimento da nova sessão. Qualquer um dos seguintes
sinalizadores podem ser combinados para formar o estilo:
|
A lista de argumentos deve ser conhecida para que esta função funcione. Se não houver nenhum argumento, deverá ser passada uma cadeia de comprimento 0 ('').
Nota: Não passe $Unknown.
No OS/2, uma sessão de tela inteira do Windows pode ser criada especificando-se COMMAND.COM como o programa e /c win <progname> como os argumentos.
No OS/2, vários aplicativos do Presentation Manager definiram seu próprio tamanho de janela quando foram iniciados. Se este for o caso, os parâmetros xLoc, yLoc, xLen e yLen serão ignorados.
Os parâmetros xLoc, yLoc, xLen e yLen não são utilizados no Windows. No Windows, todas as sessões são criadas assumindo-se $SessionAutoPosition para esses estilos.
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 (* Se não for especificado nenhum arquivo no prompt da linha de comandos para um *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'Arquivo para analisar?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength (fileName) - 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* Exibir Janela de progresso *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Analisando', $Helvetica, 14, BitOr($WinTitle, $WinBorder, $WinAutoPos,$WinSYsMenu )); WinWriteLN( whdl,fileName ); (* Criar uma sessão para o analisador Application Software-Script. A sessão é *) (* criada invisível. Um arquivo de erros no formato IDE *) (* é solicitado *) SysCreateSession( hdlsession, 'kp.exe','/IDE /e' & fileName & '.ERR ' & fileName, 0, 0, 0, 0, $SessionInvisible ); SysWaitSession( hdlSession );
(* Fechar janela de progresso quando o analisador for encerrado *) SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* Teste para arquivo de erros *) 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;
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
-2 | Valor Desconhecido |
-4 | A sessão não pôde ser criada |
Faz com que a execução seja pausada durante n milissegundos.
FUNCTION SysDelay(VAL time: INTEGER): INTEGER;
Nome do Argumento | Descrição |
time | Duração do atraso em milissegundos |
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;
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
-2 | Valor Desconhecido |
Obtém uma cadeia da área de transferência do sistema.
FUNCTION SysGetClipboard(REF clipBoard: STRING): INTEGER;
Nome do Argumento | Descrição |
clipBoard | Retorna o valor da área de transferência do sistema. Se não houver texto na área de transferência, o valor é definido como $Unknown |
KNOWLEDGEBASE Clip;
CONSTANTS MENU_REFRESH IS 101; MENU_EXIT IS 102;
ROUTINES PROCEDURE ClipView;
PRIVATE CONSTANTS menuList IS { '~Arquivo', 'A~tualizar', '~sair', '' }: 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 (* Mensagem do Menu *) 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, 'Visualizador de área de transferência KML', '', 10, BitOr($WinBorder, $WinTitle, $WinResize, $WinSysMenu, $WinMenu, $WinAutoPos, $WinAutoSize, $WinVScroll, $WinHScroll, $WinTaskList )) IF result < 1 THEN WinMessageBox( $Desktop, 'Erro', $mbok + $MBIconError, 'Falha na abertura' & result ); END; WinWait( whdl ); END;
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
0 | A área de transferência está vazia |
-3 | Memória insuficiente |
-10 | Uma das chamadas do sistema operacional para acessar a área de transferência falhou |
Conclui os campos do registro de contexto referido com informações sobre o ambiente operacional atual.
FUNCTION SysGetContext (REF context: $SystemContext): INTEGER;
Nome do Argumento | Descrição |
context | Uma variável do tipo $SystemContext |
$SystemContext é um tipo RECORD declarado na base de informações kml.kb do sistema. A declaração de $SystemContext é:
$SystemContext IS RECORD operatingSystem: String; ASEVersion: String; VendorOSName: String: VendorOSVersion: String; FreeMemory: Integer: FreeResources: Integer: NLSInfo: $SystemNlsInfo; END;
Seguem descrições dos campos utilizados com $SystemContext.
Campo | Descrição |
operatingSystem | Windows, OS/2 ou UNIX. |
ASEVersion | Atualmente 5.0. |
VendorOSName | O nome completo do fornecedor para o sistema operacional da estação de trabalho. Este campo é diferente do campo operatingSystem do $SystemContext por conter o nome real do sistema operacional, como 'Microsoft Windows 95,' em vez de um identificador. |
VendorOSVersion | O número de versão do fornecedor para o sistema operacional da estação de trabalho. É possível
que este campo seja desconhecido se:
|
FreeMemory | A estimativa atual da quantidade de memória livre do sistema operacional (física e virtual) disponíveis na hora em que a chamada SysGetContext é feita. O valor retornado é expresso em kilobytes (KB). |
FreeResources | Este campo contém a estimativa atual da quantidade de recursos livres do sistema operacional disponíveis na hora em que a chamada SysGetContext é feita. É possível que este campo seja desconhecido se o sistema operacional não suportar este conceito (como no caso do OS/2). |
NlsInfo | Informações do National Language Support. Consulte a descrição do registro $SystemNlsInfo abaixo. |
O registro retornado por SysGetContext inclui as seguintes informações do National Language
Support (NLS):
$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;
Campo | Descrição |
CountryCode | O código de país da máquina do host |
CurrencyBefore | Se o símbolo monetário é exibido antes ou depois do valor numérico TRUE - O símbolo monetário é colocado antes do número FALSE - O símbolo monetário é colocado depois do número |
CurrencySymbol | Símbolo monetário da máquina do host |
DateFourDigitYear | Se o formato de data nativa possui um ano de dois ou quatro dígitos. TRUE = Date é formatado como 1999 FALSE = Date é formatado como 99 |
DateOrdering | Uma cadeia formatada como MM/DD/YY |
DateSeparator | O caractere utilizado para separar os valores de dia, mês e ano de uma data |
DecimalSeparator | O caractere utilizado para separar um número da parte decimal |
DecimalLeadingZero | Se os números decimais menores que 1 requerem um zero à esquerda (por exemplo, 0,123 ou ,123) |
IntlCurrencySymbol | Símbolo monetário utilizado internacionalmente onde o caractere correto pode nem sempre estar disponível |
LocaleId | O locale atual da máquina do host. |
NumCurrencyDecimalDigit | O número de dígitos utilizados em geral à esquerda do decimal |
NumCurrencyExtraSpaces | O número de espaços a serem inseridos entre um símbolo monetário e um valor numérico |
NumericGroupSeparator | O caractere utilizado para agrupar dígitos em números grandes (isto é, o separador de milhares ) |
NumRealDecimalDigits | O número de dígitos a serem exibidos ao mostrar números reais (por exemplo, 3,14159 ou 3,14) |
TimeSeparator | O caractere utilizado para separar hora, minutos e segundos |
O $SystemContext RECORD utilizado por esta função possui um novo campo chamado GMTBias.
Esta é a diferença entre a hora local e a Hora
GMT equivalente em segundos. Este valor é normalmente obtido do sistema operacional do host, mas
também pode ser definido manualmente através de SysSetGMTDiff.
A página Caixa de Texto desta caixa de diálogo inclui uma nova caixa de opções rotulada "Converter para/de GMT". Esta caixa só pode ser marcada para campos de entrada que contenham um padrão de Hora ou de Data. Marcando esta caixa, você indica que deseja que o Tivoli Service Desk Developer's Toolkit localize automaticamente (consulte SysLocalizeTime) a hora ou data fornecida.
O separador Colunas desta caixa de diálogo inclui uma nova caixa de opções rotulada "Converter
para/de GMT". Esta caixa pode ser definida individualmente para cada
coluna no MCLB. Só deve ser definida para colunas que irão conter um valor do tipo
DATE ou TIME.
Ao utilizar as caixas de opções Converter para/de GMT para campos de entrada e colunas MCLB (conforme
descrito acima) você deve observar uma única
convenção de nomenclatura para que a conversão funcione.
Para cada campo de hora marcado para conversão GMT, um campo de data correspondente também deve
ser marcado. Esses dois campos devem ser associados entre si utilizando uma convenção de nomenclatura
(consulte a documentação para SysLocalizeTime e SysGlobalizeTime para obter mais
informações).
Os campos de data e hora devem ter nomes de controle que terminem com "_TIME" e
"_DATE" respectivamente. As partes que precedem o nome devem ser idênticas.
Alguns exemplos:
Nome de Contr do Campo de Hora Nome de Contr do Campo de Data Validade
----------------------- ----------------------- --------
START_TIME START_DATE Correct
MY_BIRTH_TIME MY_BIRTH_DATE Corrent
MYBIRTHTIME MYBIRTHDATE Incorrect
THE_TIME_ENDS THE_DATE_ENDS Incorrect
Se os dois campos não forem emparelhados corretamente, a conversão poderá não ocorrer.
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
-2 | O parâmetro de contexto continha uma referência inválida |
A função SysGetEnvironment pesquisa uma lista de ambiente, fornecida pelo sistema operacional, para uma cadeia que corresponda à chave fornecida. Quando a chave é encontrada, SysGetEnvironment retorna a cadeia associada a essa chave.
FUNCTION SysGetEnvironment (VAL key: STRING): STRING;
Nome do Argumento | Descrição |
key | A chave na qual pesquisar |
Se a lista de ambientes não contiver uma entrada que corresponda à chave fornecida, $Unknown será retornado.
IF UNKNOWN (fileName := SysGetEnvironment ('CONFIG')) THEN CreateDefaultConfigFile;\ END; ConfigFile :=FOpen (fileName);
Quando a chave é encontrada, SysGetEnvironment retorna a cadeia associada a essa chave.
Consulta o sistema para obter uma lista de todas as tarefas ativas.
FUNCTION SysGetTaskList(REF taskList: LIST OF $TASKRECORD): INTEGER;
Nota: Os comandos da sessão do sistema só podem ser utilizados para sessões criadas pela sessão que está chamando.
O OS/2 impõem limites a mensagens enviadas a janelas pertencentes a processos diferentes. Para obter mais informações sobre esses limites, consulte a documentação de programação do sistema OS/2.
Nome do Argumento | Descrição |
taskList | Este argumento deve ser uma variável de listas do tipo de registro $TASKRECORD definido pelo sistema.
$TASKRECORD é definido na base de informações kml.kb do sistema como: $TASKRECORD IS title: STRING; hWindow: WINDOW; hSession: SESSION; hProcess: PROCESS; END; |
SysGetTaskList retorna os registros de tarefas de cada uma das sessões abertas, incluindo sessões que não sejam TSD Script. Cada registro de tarefa contém o texto de título da janela de nível superior em sua sessão correspondente.
KNOWLEDGEBASE Tasks;
ROUTINES FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN;
PRIVATE ROUTINES
FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN IS VARIABLES taskList: LIST OF $TASKRECORD; (* $TASKRECORD é definido pelo sistema *)
ACTIONS IF SysGetTaskList( taskList ) <= 0 THEN EXIT FALSE; END; FOR taskList DO (* Procurar o nome da tarefa na lista *) IF taskList[ $CURRENT ].title = taskName THEN SysSelectTask (taskList[ $CURRENT ] ); EXIT TRUE; END; END; EXIT FALSE; END;
Código de Retorno | Descrição |
any | Retorna os registros de tarefas de cada uma das sessões abertas, incluindo sessões que não sejam TSD Script. Cada registro de tarefa contém o texto de título da janela de nível superior em sua sessão correspondente. Consulte Notas para obter as diferenças entre o OS/2 e o Windows. |
-2 | Valor desconhecido. |
-3 | Memória insuficiente. |
Cria uma nova sessão do processador de comandos.
FUNCTION SysOSShell(VAL commandLine: STRING): INTEGER;
No OS/2, interfaces iniciadas por SysOSShell terminam quando o aplicativo TSD Script (a sessão pai) termina.
Nome do Argumento | Descrição |
commandLine | O comando executado pelo processador de comandos. Uma cadeia vazia cria um novo prompt de comandos. |
No OS/2, SysOSShell inicia uma sessão executando a interface especificada pela variável de ambiente COMSPEC. (Em geral, é o processador de comandos do OS/2, cmd.exe.) O argumento para SysOSShell é passado para a interface como sua linha de comandos. A interface iniciada por SysOSShell é executada assincronamente com o processo de chamada.
No UNIX, o comando fornecido como um argumento é executado diretamente como um dos seguintes:
SysOSShell lança o programa /usr/bin/X11/xterm (/usr/openwin/bin/xterm para máquinas Sun). Isso pode ser substituído pela definição da variável SAI_XTERM em um programa que pode ser encontrado no ambiente PATH ou em um programa com um caminho completo. (SAI_XTERM deve estar no ambiente do usuário antes de executar o programa TSD Script que chama o SysOSShell.)
No Windows, SysOSShell faz o seguinte:
Há dois argumentos, /C e /K, que são utilizados para executar a interface a partir da linha de comandos. /C executa o comando e fecha a interface. /K executa o comando e deixa a interface aberta. Esses argumentos não são aplicáveis no UNIX.
KNOWLEDGEBASE OSShell;
ROUTINES PROCEDURE OSShellExample;
PRIVATE ROUTINES
PROCEDURE OSShellExample IS
ACTIONS (* /C ou /K é necessário para executar um comando externo para o Windows ou o OS/2 *) SysOSShell( '/C aseedit' ); (* Sessões filhas terminam quando a sessão pai termina *) WinMessageBox( $Desktop, 'Cancel', $mbok, '' ); END;
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
-2 | Valor Desconhecido |
Para obter mais informações sobre o cmd.exe, consulte a documentação do OS/2.
Para obter mais informações sobre o command.com, consulte o sistema de auxílio do DOS.
Seleciona uma sessão e fornece a ela o foco.
FUNCTION SysSelectSession(VAL hdlSession: SESSION): INTEGER;
Nome do Argumento | Descrição |
hdlSession | Identificador da sessão selecionada para |
Uma sessão do OS/2 deve ter uma janela com o estilo $WinTaskList para poder ser selecionada. Sessões que não são exibidas na lista de tarefas não podem ser selecionadas. A sessão deve ser criada pela sessão que chamou. No UNIX, esta função retorna 1 (sucesso) simplesmente, sem tentar selecionar uma sessão.
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 (* Se não for especificado nenhum arquivo no prompt da linha de comandos para um *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'Arquivo para analisar?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength (fileName) - 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* Exibir Janela de progresso *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Analisando', $Helvetica, 14, BitOr($WinTitle, $WinBorder, $WinAutoPos, $WinSYsMenu )); WinWrIteLN( whdl, fileName ); (* Criar uma sessão para o analisador Application Software-Script. A sessão é criada invisível. Um arquivo de erros no formato IDE *) (* é solicitado *) SysCreateSession( hdlSession, 'kp.exe', '/IDE /e' & fileName & '.ERR ' & fileName, 0, 0, 0, 0, $SessionInvisible ); SysWaitSession( hdlSession ); (* Fechar janela de progresso quando o analisador for encerrado *) SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* Teste para arquivo de erros *) 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; (* fim de FOR*) END; (* fim de make KB*)
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida. |
-2 | Valor desconhecido. |
-369 | O identificador de sessão não indica uma sessão válida. |
-460 | O processo de chamada não é o pai da sessão. Uma sessão só pode ser selecionada pelo processo que a criou. |
Ativa uma tarefa selecionada.
FUNCTION SysSelectTask(VAL task: $TASKRECORD): INTEGER;
Nome do Argumento | Descrição |
task | Este argumento deve ser do tipo de registro $TASKRECORD definido pelo sistema.
$TASKRECORD é definido na base de informações kml.kb do sistema como: $TASKRECORD IS title: STRING;hWindow: WINDOW; hSession: SESSION; hProcess: PROCESS; END; Os campos do registro devem ter sido definidos por 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 é definido pelo sistema *)
ACTIONS IF SysGetTaskList( taskList ) <= 0 THEN EXIT FALSE; END; FOR taskList DO (* Procurar o nome da tarefa na lista *) IF taskList[ $CURRENT ].title = taskName THEN SysSelectTask (taskList[ $CURRENT ] ); EXIT TRUE; END; END; EXIT FALSE; END;
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida. |
-2 | Valor desconhecido. |
-10 | Um pedido falhou para um serviço do sistema operacional necessário para concluir a função. As causas prováveis são valores inválidos como argumentos para a instrução ou limites nos recursos do sistema. |
Define o valor da cadeia da área de transferência do sistema.
FUNCTION SysSetClipboard(VAL clipBoard: STRING): INTEGER;
Nome do Argumento | Descrição |
clipBoard | O novo valor substitui os valores anteriores da área de transferência. |
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;
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
-2 | Valor Desconhecido |
-3 | Memória insuficiente |
-10 | Uma das operações do sistema operacional necessárias para acessar a área de transferência falhou |
Adiciona (ou altera) uma entrada na lista de ambientes fornecida pelo sistema operacional, para que o novo valor (se houver) seja associado à chave fornecida.
FUNCTION SysSetEnvironment (VAL key: STRING [, VAL newValue: STRING]): INTEGER;
O DOS e o OS/2 não fazem uma cópia de uma cadeia passada para a lista de ambientes. Em vez disso, eles utilizam a cadeia que é passada para a lista de ambientes diretamente. Isso tem duas ramificações em termos de utilização de memória:
Nome do Argumento | Descrição |
key | A cadeia de chaves na lista de ambientes |
newValue | A nova cadeia a ser associada à chave |
A função SysSetEnvironment associará o novo valor à chave fornecida na lista de ambientes ou removerá a chave fornecida e seu valor associado se o argumento newValue for omitido.
A natureza exata da lista de ambientes depende do sistema operacional. No entanto, uma lista de ambientes é copiada, em geral, de um processo pai para um processo filho e é destruída quando o processo filho termina.
Uma variável de ambiente definida através de SysSetEnvironment deve retornar o novo valor e deve ser copiada para processos filhos iniciados pela chamadas SysCallProgram, SysCreateSession e SysOSShell. A variável não é copiada de volta no ambiente a partir do qual o sistema de tempo de execução do Tivoli Service Desk Developer's Toolkit foi iniciado.
Nota: Se newValue não for fornecido, a variável de ambiente especificada ficará "indefinida."
IF SQLSelectInto ('SELECT ICONS FROM DIRECTORIES', iconPATHPATHPATHPATH) >= 1 AND StrPos (globalPath := SysGetEnvironment ('PATH'), iconPath) = 0 THEN SysSetEnvironment ('PATH', globalPath & ';' & iconPath); END;
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
-10 | A chamada do sistema operacional falhou |
Normalmente, o Tivoli Service Desk Developer's Toolkit consulta o sistema operacional do host para obter a diferença entre a hora local e a Hora Média de Greenwich (GMT). Esta função pode ser utilizada para definir a diferença manualmente e substituir o valor nativo.
FUNCTION SysSetGMTDiff( VAL NewDiff : Integer [, $Seconds | $Minutes | $Hours]) : INTEGER;
Argumento | Descrição |
NewDiff | Esta é a nova diferença entre o GMT e a hora local. O número especificado será adicionado a uma hora local para criar um horário de GMT. Por exemplo, a diferença padrão de GMT para Nova Iorque é +5 horas. A diferença de GMT para o Cairo é -2 horas. A faixa válida para um argumento é -12 horas <= NewDiff <= +12 horas. |
Units | As unidades utilizadas para especificar a diferença. |
Código de Retorno | Descrição |
1 | Sucesso |
-1 | Foi especificada uma diferença inválida |
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); --Definir a tendência de GMT para algo original. Isso é o equivalente ao --GMT de Moscow... nRC := SysSetGMTDiff(-3, $hours); WinWriteLn(whdl, 'SysSetGMTDiff returned: ' & nRC); --Obter a tendência de GMT que deve ser, agora, -3 horas (mas especificada em --segundos) e exibi-la SysGetContext(r); WinWriteLn(whdl, 'GMT Bias = ' & r.GMTBias); --A hora e a data foram escolhidas aleatoriamente t := {01,07,07}:TIME; d := {07,07,1993}:DATE; WinWriteLn(whdl, 'Antes da globalização: ' & d & ' ' & t ); --Globalizar a hora e exibi-la SysGlobalizeTime(t, d); WinWriteLn(whdl, 'Depois da globalização: ' & d & ' ' & t ); --Localizá-la novamente e exibi-la (deve ser o mesmo de "antes da --globalização" SysLocalizeTime(t, d); WinWriteLn(whdl, 'Depois da localização: ' & d & ' ' & t ); WinWait( whdl ); END;
Define o valor de inteiro que o Interpretador do TSD Script retorna para a interface de comandos UNIX ou janela do DOS na saída bem-sucedida. O interpretador retornará 1 se SysSetReturnCode não for utilizado.
FUNCTION SysSetReturnCode(VAL Code: INTEGER]):INTEGER;
Atenção: Se o Interpretador do TSD Script encontrar um erro fatal e sair, ele substituirá todos os valores definidos por SysSetReturnCode.
Nome do Argumento | Descrição |
code | O código a ser retornado para a interface de comandos ou janela do DOS |
O valor passado pela última chamada será utilizado se esta função for chamada várias vezes.
Nota: Não confunda esta função com a instrução RETURN do TSD Script, que define o valor retornado por uma função TSD Script.
PROCEDURE DeepThought IS ACTIONS SysDelay(1000000); SysSetReturnCode(42); END;
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
-10 | A chamada do sistema operacional falhou |
Encerra uma sessão ativa.
FUNCTION SysStopSession(VAL hdlSession: SESSION): INTEGER;
Nome do Argumento | Descrição |
hdlSession | Identificador da sessão a ser encerrada. A sessão deve ser iniciada pelo programa chamador. |
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;
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
-2 | Valor Desconhecido |
-369 | O identificador não indica uma sessão válida. A sessão pode não existir mais |
-460 | O processo de chamada não é o pai da sessão. Um processo só pode encerrar uma sessão que tenha criado |
Emite um tom no alto-falante do sistema.
FUNCTION SysTone(VAL frequency: INTEGER, VAL duration: INTEGER ): INTEGER;
Nome do Argumento | Descrição |
frequency | A freqüência em hertz do tom que soa |
duration | A duração do tom em milissegundos |
No Windows 98, a duração e freqüência padrões para o som do sistema.
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;
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
-2 | Valor Desconhecido |
Espera uma sessão terminar.
FUNCTION SysWaitSession(VAL hdlSession: SESSION): INTEGER;
Atenção: A sessão espera a pilha. Isso significa que a chamada mais recente para SysWaitSession deve ser retornada antes de qualquer chamada anterior ser retornada, mesmo se a sessão sendo esperada tiver terminado.
Nome do Argumento | Descrição |
hdlSession | Identificador da sessão para a qual esperar. A sessão deve ser iniciada pelo processo chamador |
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 (* Se não for especificado nenhum arquivo no prompt da linha de comandos para um *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'Arquivo para analisar?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength( fileName ) - 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* Exibir Janela de progresso *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Analisando', $Helvetica, 14, BitOr($WinTitle, $WinBorder, $WinAutoPos, $WinSYsMenu )); WinWriteLN( whdl, fileName ); (* Criar uma sessão para o analisador Application Software-Script. A sessão é criada invisível. Um arquivo de erros no formato IDE é *) (* solicitado *) SysCreateSession( hdlSession, 'kp.exe', '/IDE /e' & fileName & '.ERR ' & fileName, 0, 0, 0, 0, $SessionInvisible ); SysWaitSession( hdlSession ); (* Fechar janela de progresso quando o analisador for encerrado *) SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* Teste para arquivo de erros *) WinCreateHyperViewer( $Desktop, whdl, '', ErrorEvent, 0, 0, 0, 0, fileName & '.ERR', BitOr($WinTitle, $WinBorder, $WinAutoPos, $WinAutoSize, $WinSysMenu, (* criado invisível. Um arquivo de erros no formato IDE ´solicitado *) $WinReSize )); SendMessage( whdl, $MsgOpenFile, fileName & '.ERR', fileName, $HyperNoWordWrap ); WinWait( whdl ); END; END; (* fim de FOR*) END; (* fim de make KB*)
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
-2 | Valor Desconhecido |
Bloqueia o encadeamento atual de execução até que seja feito o dispatch de todas as mensagens na fila.
FUNCTION SysYield
SysYield será útil se a interface com o usuário do aplicativo precisar refletir mensagens geradas por uma função intensiva do processador.
Dada uma variável do tipo hora, suposta como sendo uma hora local, esta função irá ajustá-la para a hora GMT equivalente. Também deverá ser fornecida uma data no caso do ajuste afetá-la.
FUNCTION SysGlobalizeTime(REF t : TIME, REF d : DATE) : INTEGER;
Argumento | Descrição |
t | Esta é a hora a ser globalizada |
d | Este valor deve ser fornecido. Se o ajuste da hora fornecida mudar a data
para o dia seguinte (ou anterior), a data será ajustada para refletir essa mudança. SysGlobalizeTime deve ser *sempre* utilizada em um par data/hora. |
Código de Retorno | Descrição |
1 | Sucesso |
-1 | Fornecida data ou hora desconhecida |
Consulte o exemplo para SysSetGMTDiff.
Dada uma variável do tipo hora, suposta como sendo uma hora GMT, esta função irá ajustá-la para a hora local. Também deverá ser fornecida uma data no caso do ajuste afetá-la.
FUNCTION SysLocalizeTime(REF t : TIME, REF d : DATE) : INTEGER;
Argumento | Descrição |
t | Esta é a hora a ser localizada |
d | Este valor deve ser fornecido. Se o ajuste da hora fornecida mudar a data para o dia seguinte (ou anterior), a data será ajustada para refletir essa mudança. SysLocalizeTime deve ser sempre utilizada em um par data/hora. |
Código de Retorno | Descrição |
1 | Sucesso |
-1 | Fornecida data ou hora desconhecida |
Consulte o exemplo para SysSetGMTDiff.
Tivoli Service Desk 6.0 Developer's Toolkit - Referência de Linguagem do Script