50pixel.gif (47 byte)

HSI (TSMART)

Generalità

20pixel.gif (45 byte)Il modulo HSI (TSMART) è stato progettato da WHILE1 e si identifica in uno strumento di programmazione, in grado di fornire delle primitive che risolvono le problematiche di scambio dati con Host.

20pixel.gif (45 byte)A tale scopo è stato definito un macro linguaggio, denominato TQL (transaction query language) che consente di specificare in maniera semplice ed immediata le modalità di interazione con host durante le fasi di login/logout e scambio dati.

20pixel.gif (45 byte)TSMART si presenta come uno strumento in grado di comunicare con host in modo assolutamente indipendente dalla modalità di comunicazione logico/fisica, come ad esempio l'interfaccia HLLAPI, l'APPC o altre.

20pixel.gif (45 byte)Il TSMART opera utilizzando un file nel quale sono contenute tutte le informazioni e i dati relativi alle transazioni da gestire. Infatti all'interno di tale file saranno inclusi uno o più programmi TQL che potranno essere attivati in funzione della transazione da eseguire.

 

Il linguaggio TQL

20pixel.gif (45 byte)TQL consente di definire il tracciato record dei dati in input e in output, di indicare il nome dei file dai quali dovranno essere acquisiti i dati in input e di quelli sui quali verranno salvati i dati acquisiti da host secondo lo schema prescelto.

20pixel.gif (45 byte)TQL prevede anche l'utilizzo di variabili (per la memorizzazioni di dati temporanei da utilizzare nel corso della computazione) e di costanti.

20pixel.gif (45 byte)TQL contiene inoltre i meccanismi di base dei tradizionali linguaggi di programmazione come per esempio la possibilità di utilizzare delle label e delle istruzioni di salto (goto), istruzioni di MOVE, istruzioni di COMPARE, linee di commento, ecc.

 

L'interfaccia THOST

20pixel.gif (45 byte)L'interfaccia THOST si presenta come una API classica (DLL nel caso di sistemi WINDOWS) e fornisce all'utilizzatore ("C", "VBASIC", "COBOL") uno strumento in grado di:

  • stabilire una o più connessioni con host
  • sincronizzarsi con le applicazioni e/o i comandi per Host
  • scambiare dati in modalità formattata (es: 3270) e non (es: APPC)
  • integrarsi direttamente con il modulo TSMART per l'esecuzione di script-files scritti in TQL.

20pixel.gif (45 byte)L'impiego combinato dei due prodotti TSMART e THOST, consente di scrivere delle applicazioni in grado di interfacciarsi ad host in modo sinergico molto efficace:

  1. Si può creare uno script per TSMART e raggiungere, dopo aver eseguito la fase di LOGIN, la transazione desiderata. Una primitiva di THOST permette di lanciare uno script di TSMART.
  2. Invocando le primitive fornite da THOST, è possibile eseguire la transazione selezionata e gestire le varie casistiche di input/output sui campi del presentation space delle videate 3270.
  3. Si può richiamare ancora il TSMART per eseguire tutta la fase di LOGOUT.

20pixel.gif (45 byte)Le primitive offerte da THOST sono simili agli statement del linguaggio TQL. Non richiede, perciò, ulteriore studio o preparazione.

20pixel.gif (45 byte)Uno degli aspetti importanti della architettura della interfaccia THOST è relativo alla possibilità di interfacciarsi ad HOST non solo via HLLAPI, ma anche utilizzando altri sistemi di connessione senza influire sugli applicativi che la utilizzano.

fig-HSI1.gif (5507 bytes)

Ecco un esempio di TQL :

 

#
# XX21 script
#
# This script use XX21 transaction
#
#
# Device selector
#

device ehllapi

#
# Local defines
#

define titolo "18580"

define opzione "51"
#
# Login input data
#

schema login_XX21

{

# position/len name
0-6 userid_1
6-1 userid_2
7-5 password
12-8 New_Amb
20-3 tpl

}

#
# Input data file
#

 

schema input_XX21

{

# position/len name

0-8 titolo
8-2 opzione

}

#
# Output data file
#

schema output_XX21

{

# position/len name

0-10 codice
10-25 descrizione
35-8 matrice
43-45 err_code

}

 

 

#
# XX21 transaction

transaction XX21

{

rdrec(login_XX21)

recv(* * User 60)

write(17 30 $login_XX21.userid_1)

write(17 36 $login_XX21.userid_2)

write(17 57 $login_XX21.New_Amb)

send(18 30 $login_XX21.password)

recv(* * COMMAND 60)

send(23 14 $login_XX21.tpl)

write(1 1 @C)

write(1 1 @C)

label(loop)

rdrec(input_XX21)

test(ok_read finish)

label(ok_read)

send(1 1 XX21)

recv(* * VARIAZIONE 60)

send(6 17 $input_XX21.titolo)

recv(* * XX21 10)

test(read_cod wr_error)

 

label(read_cod)

read(3 16 8 60 $output_XX21.codice)

read(3 44 25 -1 $output_XX21.descrizione)

read(3 16 8 -1 $output_XX21.matrice)

write(1 1 @C)

write(1 1 @C)

wrrec(output_XX21)

goto(loop)

 

label(wr_error)

read(23 6 45 $output_XX21.err_code)

read(6 17 8 $output_XX21.codice)

wrrec(output_XX21)

goto(loop)

 

label(finish)

exit(0)

 

label(error)

exit(-1)

}


Up to LAN  *   TSI  *  RGI    *  HOME

50pixel.gif (47 byte)