5.2
Se o objeto existe :
Depois carregamento da ficha
Reverificação das autorizações
VERROU IMP_VERROU
LIENSIMP_LIENS
SETBOUT IMP_SETBOUT
AVANT_MOD IMP_AVANT_MOD
6.1
Simulaçao de registo dos ecrãs associados
à tabela principal
IMPORT
IMP_DEFTRT (*)
6.2
Para cada campo de ecrã :
Execução das ações "avant_zone"
avant_saisie
init
Se a zona está registada :
Para saber se a zona está num quadro :
(esta acção afeta "nolign" se necessário)
Se OK=1, transferência depois a classe [F]
Do campo de mesmo nome
Execução das ações "après_zone"
E se for caso disso "après_modif"
IMP_ZONE
7.1
Leitura de um registo do ficheiro secundário (isto é feito para todos os níveis de registos secundários)
IMPORT
IMP_TAB
AP_IMPORT
7.2
Simulação dos ecrãs associados.
No caso de um quadro, a variável
"nolign" está utilizada.
Por defeito, uma linha está acrescentada
( nolign = 0)
8
Registo de objeto
8.1
Caso de criação :
Início de transação
Registo
Fim transação
Em caso de Rollback :
VERIF_CRE IMP_VERIF_CRE
INICREIMP_INICRE
CREATION IMP_CREATION
APRES_CRE IMP_APRES_CRE
AB_CREATION
IMP_AB_CREATION
8.2
Caso da modificação :
Início de transação
Fecho de registo
Afetação das variáveis [F]
Reescrita
Fim transação
Em caso de Rollback :
Abertura
VERIF_MOD IMP_VERIF_MOD
AVANT_MODFIC
IMP_AVANT_MODFIC
INIMODIMP_INIMOD
MODIF IMP_MODIF (*)
APRES_MOD IMP_APRES_MOD
AB_MODIF IMP_AB_MODIF
DEVERROU IMP_DEVERROU
9
Fim de programa :
FERME IMP_FERME
(*) As ações MODIF e IMP_MODIF estão em princípio utilizadas para gerir o registo das linhas (MODIF está utilizada em standard para a gestão do objeto, IMP_MODIF permite gerir as ações complementares). A ação IMP_DEFTRT permite reafectar se necessário a variável TRTMSK, que define o nome do tratamento automático definido no dicionário dos ecrãs.
A ação IMP_SETBOUT está utilizada para completar as opções de gestão de objeto. pode ter a fazer um "Call VIREBOUT" em importação para interdir a criação por exemplo e age nomeadamente sobre a variável CHAINE que contém todas as opções.
Sequência | Contexto | Ações |
1.1 | Antes a criação do programa de importação : O Openo que permite escrever o programa temporário de importação (de nome dado pela variável IMPTRT) não está ainda feito. É possível de alterar o nome das mascaras utilizadas (quadro NOMMSK, o número de máscaras é dado por NBMASK) | IMP_COMPILE |
1.2 | Após a criação do programa de importação : O tratamento temporário de importação (de nome dado pela cariável IMPTRT) está sempre aberto por Openo : é então possível de acrescentar (por Wrseq) das instruções complementares. O tratamento será compilado após esta ação, depois o procedimento de importação propriamente começará | IMP_TRTSUP |
1.3 | Início de programa | OUVRE IMP_OUVRE |
2 | Leitura do ficheiro de importação e transferência na classe [F] A ação AP_IMPORT está chamada após o carregamento das variáveis decodificadas de cada bloco (o nível de imbricação está conhecido pela variável SEPNUM (de 1 a 8), a abreviação da tabela principal em curso de tratamento pela variável IMPABR | AP_IMPORT |
3 | Teste de existência de objeto (nº linhas >0) |
|
3.1 | Se o objeto existe : | VERROU IMP_VERROU |
3.2 | Verificação da autorização de criar ou de modificar : | SETBOUTIMP_SETBOUT |
3.3 | Se objeto não existe : | SETBOUTIMP_SETBOUT RAZCREIMP_RAZCRE |
4.1 | Anel de leitura dos registos Registos ligados a cada linha : Transferência na clase [F] Fim de anel de leitura Registos ligados em fim de anel : | FILTER : LIENS0IMP_LIENS0 LIENSIMP_LIENS
LIENS2IMP_LIENS2 |
5.1 | Simulaçao de registo dos ecrãs associados à tabela principal | IMPORT IMP_DEFTRT (*) |
5.2 | Para cada campo de ecrã : Execução das ações avant_zone avant_saisie init Se a zona está registada : Se OK=1, transferência depois la classe [F] do campo de mesmo nome Execução das ações après_zonee o caso disso après_modif |
IMP_ZONE |
6.1 | Leitura de um registo do ficheiro secundário A ação AP_IMPORT está chamada após o carregamento das variáveis decodificadas de cada bloco (o nível de imbricação está conhecido pela variável SEPNUM (de 1 a 8), a abreviação da tabela principal em curso de tratamento pela variável IMPABR | IMPORT
AP_IMPORT |
6.2 | Simulação dos ecrãs associados. No caso de um quadro, a variável nolign está utilizada. Por defeito, uma linha está acrescentada ( nolign = 0) |
|
7 | Registo de objeto |
|
7.1 | Caso de criação :
Início de transação Para cada linha : Registo
No fim de registo das linhas : Transação terminada : | VERIF_CRE IMP_VERIF_CRE DEBUT_CRE IMP_DEBUT_CRE INICREIMP_INICRE CREATIONIMP_CREATION MODIFIMP_MODIF APRES_CREIMP_APRES_CRE |
7.2 | Caso da modificação : Início de transação Apagamento das linhas Anel sobre as linhas :
Criação de linha No fim do anel Fim transação | VERIF_MOD IMP_VERIF_MOD DEBUT_MOD IMP_DEBUT_MOD FILTER : INICREIMP_INICRE CREATION IMP_CREATION MODIFIMP_MODIF APRES_MODIMP_APRES_MOD DEVERROUIMP_DEVERROU |
8 | Fim de programa : | FERME IMP_FERME |
Sequência | Contexto | Ações |
1.1 | Antes a criação do programa de importação : O Openo que permite escrever o programa temporário de importação (de nome dado pela variável IMPTRT) não está ainda feito. É possível de alterar o nome das mascaras utilizadas (quadro NOMMSK, o número de máscaras é dado por NBMASK) | IMP_COMPILE |
1.2 | Após a criação do programa de importação : O tratamento temporário de importação (de nome dado pela cariável IMPTRT) está sempre aberto por Openo : é então possível de acrescentar (por Wrseq) das instruções complementares. O tratamento será compilado após esta ação, depois o procedimento de importação propriamente começará | IMP_TRTSUP |
1.3 | Início de programa | OUVRE IMP_OUVRE |
2 | Leitura dos dados do ficheiro e carregameto da classe [F] A ação AP_IMPORT está chamada após o carregamento das variáveis decodificadas de cada bloco (o nível de imbricação está conhecido pela variável SEPNUM (de 1 a 8), a abreviação da tabela principal em curso de tratamento pela variável IMPABR |
AP_IMPORT |
3 | Se o objeto existe : | VERROU IMP_VERROU |
4 | Fecho da tabela Início de leitura : Anel de leitura dos registos No fim da leitura | FILTER : LIENS0IMP_LIENS0 LIENSIMP_LIENS LIENS2IMP_LIENS2 |
5 | Verificação da autorização de modificar : | SETBOUTIMP_SETBOUT |
6.1 | Simulaçao de registo dos ecrãs associados à tabela principal | IMPORT IMP_DEFTRT (*) |
6.2 | Para cada campo de ecrã : Execução das ações avant_zone avant_saisie init Se a zona está registada : Se OK=1, transferência depois la classe [F] do campo de mesmo nome Execução das ações après_zonee o caso disso après_modif |
IMP_ZONE |
7.1 | Leitura de um registo do ficheiro secundário | IMPORT |
7.2 | Simulação dos ecrãs associados. uma linha está acrescentada ao quadro (nolign está gerado pela gestão objeto) |
|
8 | Registo de objeto |
|
8.1 | Está-se sempre em criação Início de transação depoos fecho tabela se OK<>0 na seguida de MOD_IMPORT, a transação está prosseguida: Apagam-se todos os registos existentes Para cada linha : Registo No fim de registo das linhas : Fim de transacção | VERIF_MOD IMP_VERIF_MOD MOD_IMPORT
FILTER : INICREIMP_INICRE CREATIONIMP_CREATION MODIFIMP_MODIF |
9 | Quando a transação está com sucesso | APRES_MOD IMP_APRES_MOD |
10 | Fim de programa : | FERMEIMP_FERME |
Todas as ações IMPxxx têm o mesmo contexto que aquelas de SUBxxx e são chamadas após.
As ações seguintes são particulares.
A ação IMPORT está chamada após cada leitura de registo.
A variável IMPFIC contém a abreviação do ficheito importado A classe correspondente está em linha (para as informações importadas).
No caso de um quadro, a variável "nolign" está inicializada a 0, ela será explorada em saída para saber qual linha está registada. Se "nolign" está deixada a zero, uma nova linha será criada.
A ação IMPORT está utilizada para gerir as zonas de uma tabela secundária arrumada num quadro (a página 3 do objeto define a estes efeitos as tabelas secundárias, os ecrãs, e as variáveis de baixo de quadro correspondente). Isto permite distinguir as zonas não indiciadas devendo ser arrumadas num quadro de outras zonas. Esta ação não está utilizada que para as importações de objeto de tipo normal.
A ação IMP_ZONE está chamada em vez e lugar do registo de uma zona, ela permite recuperar um valor num ecrã que terá um nome diferente no ficheiro (ex : casos das zonas dimensionadas numa tabela que corresponde a várias colunas de um quadro) :
A ação MOD_IMPORT não serve que em importação de um objeto quadro (para interdir eventualmente esta importação).
Este tratamento de importação curto-circuito (em geral por razões de performance) a gestão standard de objeto e não inclui que um número restrito de etiquetas chamadas por Gosub depois a função de importação Estas etiquetas são definidas a seguir :
Etiqueta | Contexto |
$OUVRE | Em início de importação, esta etiqueta permite declarar as máscaras, tabelas, e variáveis necessárias |
$RAZCRE | Em início de leitura (vai-se ler um novo registo). Permite atualizar a zero as variáveis que vão em seguida ser prenchidas pela importação. |
$SAIMSK | Quando um grupo de dados foi lido. A variável IMPFIC permite conhecer a abreviação da tabela cujo conteúdo foi lido. A classe [F] correspondente a esta tabela está então registada, e pode-se efetuar as transferências de dados versus máscaras (quando se trabalha com objetos de tipo cabeçalho / linha, |
$VALID | Acabou de se ler os dados : esta etiqueta permite fazer os controlos e de criar ou de modificar os dados na base. |
Não está aconselhado de realizar este modo de importação que os problemas particulares de performance se colocam. Com efeito, mesmo se está mais pesada, a importação "standard" de objeto permite obter um controlo automático em incluindo tudo o que está descrito na logica de objeto, então que o programa de importação específica necessita de tudo recodificar à mão, em chamando eventualme te componentes existentes.
No modelo de importação ou de uma exportação, Enterprise Management recebe um fluxo de dados num jogo de caracteres que não está forçosamente o jogo de caracteres interno (correspondendo ao jogo de caracteres WE8ISO8951P1 sob oracle). Falta estar em medida de transcodificar. Atenção, não se fala nesta documentação que trabnscodificação de caracteres guardados sobre um byte, correspondendo em geral a estes caracteres acentuados ou particulares a certas línguas ocidentais. Estes caracteres são normalmente codificados sobre um byte dos valores compreendidos entre 160 e 250. A seguir, encontraremos as correspondências entre estes caracteres e os códigos ascii do jogo standard utilizado por Enterprise Management (afixados com jogo de caracteres de tipo Arial).
Octeto | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
16… |
| ¡ | ¢ | £ | ¤ | ¥ | ¦ | § | ¨ | © |
17… | ª | « | ¬ |
| ® | ¯ | ° | ± | ² | ³ |
18… | ´ | µ | ¶ | · | ¸ | ¹ | º | » | ¼ | ½ |
19… | ¾ | ¿ | A : | A : | A : | A : | A : | Å | Æ | Ç |
20… | È | É | Ê | Ë | Ì | Í | Î | Ï | Ð | Ñ |
21… | Ò | Ó | Ô | Õ | Ö | × | Ø | Ù | Ú | Û |
22… | Ü | Ý | Þ | ß | à | á | â | ã | ä | å |
23… | æ | ç | è | é | ê | ë | ì | í | î | ï |
24… | ð | ñ | ò | ó | ô | õ | ö | ÷ | ø | ù |
25… | ú | û | ü | ý | þ | ÿ |
|
|
|
|
Isto se faz pelo intermédio do campo Jogo de caracteres no pavimento de transcofificação O campo em questão toma os valores definidos pelo menu local 9. Este menu local não está parametrizável por defeito, mas é possível de acrescentar os valores em desenvolvimento, para gerar de novos jogos de caracteres externos.
A cada valor deste menu local corresponde um ficheiro externo, instalado sobre o servidor, que define as trascodificações a realizar. Este ficheiro se encontra no directório SYS do dossier X3, e para um nome TRANS#.cnv, onde # corresponde ao número do menu local (1, 2, 3…). O ficheiro TRANS0.cnv contém os comentários explicando (em inglês) a maneira de fazer :
sage="cadeia1"
output="cadeia2"cadeia1 e cadeia2 são prefixos sobre 3 caracteres definindo o código do jogo que se pretende definir. Por exemplo,poder-se-á utilizar ado para a cadeia 1, e jogo para o segundo jogo de carateres.
adoeacute="238"
jeueacute="233"
É importante notar que :
Encontrar-se-á a seguir o conteúdo do ficheiro TRANS0.cnv, que explica em inglês como se toma :
#
########################################################################
#
# trans0.cnv
#
# Transcodification file used for Sage X3 import/export
#
# Each line (except the comments prefixed by # ) must have the following format
#
# adoxxxxx = value1 or extxxxxx = value2
#
# (ado for adonix internal code, ext for "external" file code
#
# xxxxx is an identifier used to associate external & internal code together
#
# values can be defined in following formats :
#
# nnn or "nnn" value in decimal
# \nnn or "\nnn" value in octal
# Hnnn or "Hnnn" value in hexadecimal
#
# Author : Bertrand YVINEC
# Translated by Dominique BOPP
#
# Copyright (c) ADONIX 1992-2001
#
########################################################################
#
# Identifier definition (default is ado and ext)
#
adonix = "iso"
output = "ibm"
Este ficheiro permite transcodificar no jogo IBM PC. O ficheiro aqui expurgado da maior parte das linhas de comentários
#
########################################################################
# trans2.cnv
# Copyright (c) ADONIX 1992-2001
########################################################################
adonix = "iso"
output = "ibm"
#
# ISO code first
isoagr="\340" # a grave
isoeai="\351" # e acute
isoegr="\350" # e grave
isocce="\347" # c cedilla
isougr="\371" # u grave
isodeg="\260" # degree
isoali="\247" # alinea
isoaci="\342" # a circumflex
isoeci="\352" # e circumflex
isoici="\356" # i circumflex
isooci="\364" # o circumflex
isouci="\373" # u circumflex
isoatr="\344" # a dieresis
isoetr="\353" # e dieresis
isoitr="\357" # i dieresis
isootr="\366" # o dieresis
isoutr="\374" # u dieresis
isopou="\243" # pound
#
# Ensuite en code PC
ibmagr="\205" # a grave
ibmeai="\202" # e acute
ibmegr="\212" # e grave
ibmcce="\207" # c cedilla
ibmugr="\227" # u grave
ibmdeg="\370" # degree
ibmali="\365" # alinea (CP 850)
ibmaci="\203" # a circumflex
ibmeci="\210" # e circumflex
ibmici="\214" # i circumflex
ibmoci="\223" # o circumflex
ibmuci="\226" # u circumflex
ibmatr="\204" # a dieresis
ibmetr="\211" # e dieresis
ibmitr="\213" # i dieresis
ibmotr="\224" # o dieresis
ibmutr="\201" # u dieresis
ibmpou="\234" # pound
Se dseja desencadear directamente uma importações num tratamento, é possível de proceder em inserindo as linhas seguintes :
If !GSERVEUR
Call OUVRE_TRACE(TIT) From LECFIC
Endif
Call IMPORTSIL([L]COD_MODELE,[L]NOM_FICHIER)from GIMPOBJ
If !GSERVEUR
Call FERME_TRACE From LECFIC
Endif
Com
As variáveis passadas em argumento são os seguintes :
O estatuto de fim de importação recuperável no campo [M:IMP2]STAT
Pode-se ter o texto em claro da mensagem ligada ao erro em chamando o subprograma seguinte :
Call ERR_IMPORT([M:IMP2]STAT,MESSAGE) From GIMPOBJ