Menu 'Outils', 'Changer les associations de type / Appliquer les associations'.
Un aspect essentiel du constructeur de DDS, et en général de l'accès natif AS/400, est bien évidemment de gérer des types de données différents entre un fichier Hyper File et AS/400. Si les types les plus courants ont leur équivalent (Chaîne en CHAR ou VARCHAR, entiers...) certains formats sont plus délicats (dates, heures, monétaires, mémos...).
Il y a également des considérations de taille à prendre en compte sur des utilisations "limite", ainsi WinDev propose des chaînes jusqu'à 64 ko mais le format CHAR de l'AS/400 est limité à 32Ko.
Attention, toutes les associations n'ont pas forcément un sens et peuvent générer des erreurs au moment de l'accès aux données.
Types AS/400
Les différents types sont résumés dans le tableau ci-dessous. En plus des types normaux, la gestion des mémos et le lien entre le fichier principal et le fichier des mémos peut avoir différentes formes.
Chaînes C Char CH Char Hexa VC VarChar |
Numérique P Numérique condensé Z Numérique étendu S Réel simple DB Réel double I1 Entier sur 1 octet I2 Entier sur 2 octets I4 Entier sur 4 octets I8 Entier sur 8 octets |
Mémos MBB Mémo binaire avec clé binaire MBP Mémo binaire avec clé en numérique condensé MBZ Mémo binaire avec clé en numérique étendu MTB Mémo texte avec clé binaire MTP Mémo texte avec clé en numérique condensé MTZ Mémo texte avec clé en numérique étendu |
Dates et heures D Date T Time TS TimeStamp
|
Types WinDev
0 |
type inconnu |
1 |
identifiant automatique sur 8 octets |
2 |
rubrique texte |
3 |
rubrique de type entier signé sur 2 octets |
4 |
rubrique de type entier signé sur 1 octet |
5 |
rubrique de type entier signé sur 4 octets |
6 |
rubrique de type réel simple (sur 4 octets) |
7 |
rubrique de type réel double (sur 8 octets) |
8 |
rubrique de type numéro d'enregistrement (entier non signé) |
9 |
rubrique de type entier non signé sur 2 octets |
10 |
rubrique de type date sur 6 |
11 |
rubrique de type heure |
12 |
rubrique de type entier non signé sur 1 octet |
13 |
rubrique de type réel turbo |
14 |
rubrique de type date sur 8 |
15 |
rubrique de type mémo texte |
16 |
rubrique de type mémo binaire 4.0 |
17 |
rubrique de type monétaire |
18 |
rubrique de type mémo binaire, mémo Image, mémo Son, mémo OLE ou mémo binaire autre |
19 |
rubrique de type entier signé sur 8 octets |
20 |
rubrique de type entier non signé sur 8 octets |
21 |
rubrique de type image |
22 |
rubrique de type entier non signé sur 4 octets |
23 |
rubrique de type chaîne binaire |
24 |
rubrique de type date+heure |
25 |
rubrique de type durée |
26 |
rubrique de type caractère |
27 |
rubrique de type booléen |
28 |
rubrique de type identifiant automatique (sur 4 octets) |
Afin d'associer la rubrique à son type d'origine au moment de l'importation, le type Hyperfile d'origine est stocké dans la DDS pour chaque rubrique :
A IDCLIENT 9P 0B COLHDG('Identifiant de' 'Client')
TEXT('HFTYPE=28')
A NOM 64A B COLHDG('Nom')
TEXT('HFTYPE=2')
Au moment de l'importation ce sont donc toujours les types Hyper File de l'analyse d'origine qui sont attribués, même si des associations particulières sont utilisées.
Le constructeur de DDS ne crée pas de champs BLOB pour les mémos binaires mais un fichier qui reprend les 8 premiers caractères du nom du fichier d'origine suivi de deux underscores (__).
Ce fichier contient des blocs de données binaires ou hexadécimales et sa description de ce fichier ressemble à :
A* DDSBLD : MEMO DU FICHIER HYPERFILE 'CLIENT '
A UNIQUE
A R RCLIENT
A IDMEMO 9B 0B COLHDG('NUMERO DU MEMO')
A IDBLOC 4B 0B COLHDG('NUMERO DE BLOC')
A TAILLE 9B 0B COLHDG('Taille totale')
A DONNEE 512H B VARLEN COLHDG('Données')
A K IDMEMO
A K IDBLOC
Chaque enregistrement du fichier parent contient un champ mémo avec un identifiant, dans le fichier mémo cet identifiant est associé à des blocs de données (512 octets par défaut)
Le constructeur de DDS propose différent types pour les identifiants de mémo dans le fichier principal. Il n'est en général pas nécessaire de modifier ces types à moins que d'autres programmes de l'AS/400 (RPG) soient susceptibles d'utiliser ces données.
En revanche l'importation d'un fichier AS/400 (voir import DDS) qui contient des blobs va bien lui associer des mémos et gérer une correspondance directe (la journalisation est nécessaire dans ce cas).
Initialisation stricte ou commune
Les associations de types font le lien entre un format WinDev et AS/400. Par défaut le constructeur vous propose un initialisation commune (les types les plus courants) ou stricte (types identiques autant que possible).
Type WinDev |
COMMUNE |
STRICTE |
Booléen |
Numérique condensé |
Entier sur 1 octets |
Caractère |
Char |
Char |
Chaîne binaire |
Char Hexa |
Char Hexa |
Date (6 digit) |
Date |
Date |
Date (8 digit) |
Date |
Date |
Date + Heure |
TimeStamp |
TimeStamp |
Durée |
TimeStamp |
TimeStamp |
Entier non signé ( 8 octets) |
Numérique condensé |
Entier sur 8 octets |
Entier non signé (1 octet) |
Numérique condensé |
Entier sur 1 octet |
Entier non signé (2 octets) |
Numérique condensé |
Entier sur 2 octets |
Entier non signé (4 octets) |
Numérique condensé |
Entier sur 4 octets |
Entier signé (8 octets) |
Numérique condensé |
Entier sur 8 octets |
Entier signé (1 octet) |
Numérique condensé |
Entier sur 1 octet |
Entier signé (4 octets) |
Numérique condensé |
Entier sur 4 octets |
Entier signé (2 octets) |
Numérique condensé |
Entier sur 2 octets |
Heure |
Time |
Time |
Identifiant Automatique (8 octets) |
Numérique condensé |
Entier sur 8 octets |
Identifiant automatique (4 octets) |
Numérique condensé |
Entier sur 4 octets |
Image |
Mémo binaire avec clé en numérique condensé |
Mémo binaire avec clé en numérique condensé |
Monétaire |
Numérique condensé |
Numérique condensé |
Mémo binaire |
Mémo binaire avec clé en numérique condensé |
Mémo binaire avec clé en numérique condensé |
Mémo texte |
Mémo Texte avec clé en numérique condensé |
Mémo Texte avec clé en numérique condensé |
Numéro d'enregistrement |
Numérique condensé |
Numérique condensé |
Réel double |
Numérique condensé |
Réel double |
Réel simple |
Numérique condensé |
Réel simple |
Texte |
Char |
Char |
Vous pouvez personnaliser une association pour un type en particulier, de manière globale depuis le menu Outils - Changer les associations de type puis l'appliquer par le menu Outils - Appliquer les associations de types à l'analyse ouverte mais il est également possible de préciser le type d'une rubrique en double-cliquant dessus et en sélectionnant un autre type dans la liste (décocher l'option Type AS/400 automatique si la liste est désactivée).
Utilisation du masque de saisie
Enfin il est possible de créer les types en reprenant le format de la rubrique lorsque l'option est coché dans les associations de types (Outils - Changer les associations de types).
Par exemple, une rubrique monétaire avec un format 999.99 de type Réel sur 4 octets sera exportée avec un format de 3P2 au lieu de 5P2.