Vous pouvez configurer le transcodeur du connecteur Mainframe en ajoutant la configuration requise dans un fichier JSON.
Ce fichier est appelé "fichier de configuration du transcodeur". Vous devez définir la configuration comme indiqué dans la section Configuration.
Les commandes qsam encode
et qsam decode
utilisent le fichier de configuration du transcodeur pour effectuer le transcodage des données.
Cette page décrit les différentes façons de configurer le transcodeur Mainframe Connector.
Configuration
L'objet Configuration
est la racine de la configuration du transcodeur.
Il contient toutes les options de configuration du transcodeur.
Représentation JSON |
---|
{ "defaults": object ( |
Champs | |
---|---|
defaults |
Spécifiez les modificateurs de champ par défaut pour les archétypes Cobol. |
field_suffixes |
Spécifiez les suffixes de champ. |
field_overrides |
Spécifiez les remplacements de champs. |
transformations |
Spécifiez les transformations de champ. |
schema_validation_mode |
Spécifiez le mode de validation du schéma. |
DefaultsSection
L'objet DefaultsSection
permet de spécifier les modifications par défaut en fonction des types Cobol.
Elles sont appliquées avant toute modification de suffixe ou de forçage.
Représentation JSON |
---|
{ "alpha_numeric_display": object ( |
Champs | |
---|---|
alpha_numeric_display |
Spécifiez les valeurs par défaut pour les champs alphanumériques (PIC X). |
numeric_display |
Spécifiez les valeurs par défaut pour les champs d'affichage numérique (décimal à virgule décimale). |
binary |
Spécifiez les valeurs par défaut pour les champs de nombres binaires (COMP). |
packed_decimal |
Spécifiez les valeurs par défaut pour les champs décimaux empaquetés (COMP-3). |
national |
Spécifiez les valeurs par défaut pour les champs nationaux (PIC N). |
utf8 |
Spécifiez les valeurs par défaut pour les champs UTF-8 (PIC U). |
dbcs |
Valeur par défaut pour les champs dbcs (DISPLAY-1). |
hexadecimal_floating_point |
Valeur par défaut pour les champs à virgule flottante hexadécimaux (COMP-1, COMP-2). |
FieldSuffix
Les suffixes de champ s'appliquent à tous les champs qui en ont un.
Les champs sont mis en correspondance s'ils se terminent par un trait d'union (-
) ou un trait de soulignement (_
) suivi du suffixe.
Les suffixes ne sont pas sensibles à la casse.
Le modificateur FieldSuffix
est appliqué après le modificateur FieldOverride
.
Par exemple, le modificateur défini pour le suffixe NID
sera appliqué au champ nommé FLD-NID
, mais pas au champ FUNID
.
Représentation JSON |
---|
{ "suffix": string, "is_inverse": boolean, "modifier": object ( |
Champs | |
---|---|
suffix |
Le modificateur sera appliqué au champ associé à ce suffixe. |
is_inverse |
Indiquez si le modificateur est un modificateur de champ inverse ou non.
Un modificateur de champ inverse applique le modificateur à un autre champ portant le même nom que le champ avec le modificateur, sans le modificateur. Par exemple, si les champs Lorsque vous utilisez un modificateur de champ inverse, l'identifiant spécial Par exemple, pour créer un champ d'indicateur de valeur nulle, vous pouvez utiliser le modificateur de champ |
modifier |
Spécifiez le modificateur à appliquer aux champs correspondants. |
FieldOverride
Remplacez ou modifiez la chaîne de décodage et d'encodage pour le champ spécifié.
Représentation JSON |
---|
{ "field": string, "modifier": object ( |
Champs | |
---|---|
field |
Spécifiez le nom du champ auquel appliquer le modificateur. |
modifier |
Spécifiez le modificateur à appliquer au champ de correspondance. |
Transformation
Les transformations de vue permettent de modifier la relation entre la table et le fichier QSAM. Les transformations sont toujours formulées du point de vue des données. Le concept est semblable à celui des tables de vues dans BigQuery.
Représentation JSON |
---|
{ "exclude": object ( |
Champs | |
---|---|
exclude |
|
unnest |
|
move |
|
rename |
|
FieldModifier
Un modificateur de champ vous permet de modifier l'encodage ou le décodage d'un champ spécifique. Notez que tous les modificateurs ne peuvent pas être appliqués à tous les champs. Pour en savoir plus, consultez la documentation des modificateurs spécifiques.
Représentation JSON |
---|
{ "filler": object ( |
Champs | |
---|---|
filler |
Exclut le champ du traitement et de la sortie. |
null_if |
Définit le champ sur "null" de manière conditionnelle en fonction de la valeur d'un autre champ. |
format_date |
Met en forme un champ de chaîne sous forme de date. |
chain |
Enchaîne plusieurs modificateurs à appliquer de manière séquentielle. |
zoned_decimal |
Remplace la configuration par défaut pour les champs décimaux à zone. |
binary |
Remplace la configuration par défaut pour les champs numériques binaires. |
packed_decimal |
Remplace la configuration par défaut pour les champs décimaux empaquetés. |
null_if_invalid |
Définit le champ sur "null" en cas d'erreur de transcodage, ce qui empêche le débordement des enregistrements. |
bytes |
Traite le champ comme une séquence brute d'octets, en ignorant les informations de type précédentes. |
varlen |
Définissez l'enregistrement en tant que champ à longueur variable. |
string |
Remplace la configuration par défaut pour les champs de chaîne. |
null_if_empty |
Définit le champ sur "null" si son contenu est considéré comme vide. |
format_timestamp |
Formate un champ de chaîne en tant que code temporel. |
hfp |
Interpréte le champ en tant que nombre à virgule flottante hexadécimal. |
decode_as_null |
Définit la façon dont les valeurs nulles doivent être décodées. |
encode_null_as |
Définit la façon dont les valeurs nulles doivent être encodées. |
Exclure
Excluez un champ de la table générée, mais effectuez toujours le décodage ou l'encodage. Cette option est utile lorsque le champ n'a pas besoin d'être transféré vers le tableau, mais qu'il est requis pour le transcodage. Par exemple, les champs d'indicateur de valeur nulle ou de longueur peuvent être omis de la table.
Pour contourner complètement le transcodage, appliquez le modificateur de remplissage.
Représentation JSON |
---|
{ "field": string |
Champs | |
---|---|
field |
Spécifiez le champ à exclure. |
Unnest
Désimbriquez le champ.
Représentation JSON |
---|
{ "field": string, "format": string |
Champs | |
---|---|
field |
Spécifiez le champ à désimbriquer. |
format |
Spécifiez le nouveau format de champ.
Pour les structs non imbriquées, Pour les tableaux et les listes non imbriqués, |
Déplacer
Déplacer un champ dans l'enregistrement
Représentation JSON |
---|
{ "field": string, "offset": int |
Champs | |
---|---|
field |
Spécifiez le champ à déplacer. |
offset |
Spécifiez le nombre de positions, avant ou arrière, auxquelles le champ doit être déplacé. |
Renommer
Renommez un ou plusieurs champs en fonction d'une correspondance d'expression régulière.
Par exemple, pour remplacer tous les traits de soulignement par des traits d'union, utilisez le format JSON suivant : {"find": "\\-", "replace":"_"}
.
Représentation JSON |
---|
{ "find": string, "replace": string |
Champs | |
---|---|
find |
Spécifie un modèle d'expression régulière Java pour identifier le ou les champs à renommer. Le modèle est mis en correspondance avec le nom complet du champ. Si le modèle correspond à une partie du nom du champ, le champ est considéré comme une correspondance. Exemples :
|
replace |
Spécifie le nouveau nom du ou des champs mis en correspondance. Les groupes de capture de l'expression régulière Exemples :
|
Complément alimentaire
Indique qu'un champ sera ignoré lors du traitement. Le champ ne sera pas décodé à partir de l'entrée ni encodé à la sortie. Il sera exclu du schéma et de la table de données résultants lors du décodage. Vous pouvez appliquer ce modificateur à n'importe quel champ dont la taille est connue et statique.
Fournissez un objet JSON vide comme suit:
Représentation JSON |
---|
{ |
NullIf
Définissez un champ sur "null" si une condition est remplie. Vous devez spécifier null_value
, non_null_value
ou les deux.
Pour créer un champ d'indicateur de valeur nulle, vous pouvez utiliser un FieldSuffix
avec un modificateur de champ null_if
et définir is_inverse
sur true
, comme illustré dans les exemples suivants:
Exemple: Indicateur de valeur nulle
Pour créer un champ d'indicateur de valeur nulle, vous pouvez utiliser le modificateur de champnull_if
comme suit.
{ "field_suffixes": [ { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "?", "target_field": "$self" } } } ] }
NID
d'être effectivement des indicateurs de valeur nulle, comme indiqué dans l'extrait de code suivant:
01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
Exemple: Indicateur de valeur nulle binaire
Pour créer un champ d'indicateur de valeur nullebinary
, vous pouvez utiliser les modificateurs de champ binary
et null_if
comme suit.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "binary": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "15", "target_field": "$self" } } } ] }
NID
peuvent ainsi être des indicateurs de valeur nulle binary
à l'aide du même livre de copie que dans l'exemple précédent.
Exemple: Indicateur de valeur nulle des octets
Pour créer un champ d'indicateur de valeur nullebytes
, nous pouvons utiliser les modificateurs de champ bytes
et null_if
comme suit. Les valeurs de valeur nulle et non nulle sont exprimées sous la forme HEX
.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "bytes": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "FF", "target_field": "$self" } } } ] }
NID
peuvent ainsi être un indicateur de valeur nulle bytes
à l'aide du même livre de copie que dans l'exemple précédent.
Représentation JSON |
---|
{ "target_field": string, "null_value": string, "null_values": string, "non_null_value": string, "non_null_values": string |
Champs | |
---|---|
target_field |
Spécifiez le champ dont vous souhaitez vérifier la valeur. Le champ doit être inclus dans le champ d'application. |
null_value |
Si |
null_values |
Si |
non_null_value |
Lorsque cette valeur est spécifiée, si |
non_null_values |
Si |
FormatDate
Formatez une chaîne en date à l'aide de l'un des formats compatibles. Vous ne pouvez appliquer ce modificateur qu'aux champs de taille. Lors du processus de décodage, les formats sont testés dans l'ordre jusqu'à ce que l'un d'eux corresponde à la chaîne. Lors du processus d'encodage, le premier format est utilisé et les autres sont ignorés.
Représentation JSON |
---|
{ "formats": object ( |
Champs | |
---|---|
formats |
Liste des formats de date. |
ModifierChain
Spécifiez une chaîne de modificateurs pour appliquer plusieurs modificateurs en série. Les modificateurs sont appliqués dans l'ordre dans lequel ils sont spécifiés.
Représentation JSON |
---|
{ "modifiers": object ( |
Champs | |
---|---|
modifiers |
Spécifiez la liste des modificateurs à appliquer. |
ZonedDecimal
Définit différentes options liées à l'encodage et au décodage des nombres décimaux à zone. Vous ne pouvez appliquer ce modificateur qu'à un champ décimal.
Représentation JSON |
---|
{ "logical_type": enum ( |
Champs | |
---|---|
logical_type |
Spécifiez le type logique à utiliser lors du décodage ou de l'encodage du champ. |
encoding |
Encodage du champ. |
Binaire
Ignorez tous les modificateurs précédents et traitez ce champ comme un nombre binaire.
Représentation JSON |
---|
{ "signedness": enum ( |
Champs | |
---|---|
signedness |
Signification du nombre. |
PackedDecimal
Définissez ce champ sur un PackedDecimal.
Représentation JSON |
---|
{ "logical_type": enum ( |
Champs | |
---|---|
logical_type |
Ignorez le type logique. Par défaut, le connecteur Mainframe utilise le type logique optimal en fonction de la précision et de l'évolutivité. |
NullIfInvalid
Traitez la valeur comme nulle si le transcodage échoue. Vous ne pouvez appliquer ce modificateur qu'aux champs de taille. L'erreur est ignorée et n'est pas enregistrée dans l'ensemble de données de déversement. Lors du processus de décodage, la valeur de ce champ sera nulle pour cet enregistrement. Lors du processus d'encodage, si les données ne peuvent pas être écrites, l'ensemble du champ est rempli d'octets nuls.
Fournissez un objet JSON vide comme suit:
Représentation JSON |
---|
{ |
Octets
Traite le champ comme une séquence brute d'octets. Ce modificateur remplace toutes les informations de type précédentes, ce qui permet de conserver les données d'octet brutes du champ telles quelles, sans encodage de caractères ni interprétation numérique spécifiques. Vous pouvez appliquer ce modificateur à n'importe quel champ, quel que soit son type ou sa taille d'origine.
Fournissez un objet JSON vide comme suit:
Représentation JSON |
---|
{ |
VarLen
Représente un champ à longueur variable.
Un champ à longueur variable se compose de trois parties:
- Élément de groupe contenant deux sous-champs
- Champ de l'élément de groupe contenant la longueur des données de transaction.
- Champ de l'élément de groupe contenant les données.
Le nom du champ à longueur variable sera le nom du groupe.
Fournissez un objet JSON vide comme suit:
Représentation JSON |
---|
{ |
Chaîne
Définit les différentes options liées au décodage et à l'encodage des chaînes. Ne peut être appliqué qu'à un champ de chaîne.
Représentation JSON |
---|
{ "encoding": string, "trim_suffix": boolean, "pad_char": string |
Champs | |
---|---|
encoding |
Encodage du champ. |
trim_suffix |
Si cette valeur est définie sur "true", tous les espaces au bout de la chaîne sont supprimés. trim_suffix n'affecte que le décodage, l'encodage ignore trim_suffix. Notez que les chaînes qui ne contiennent que des espaces deviennent des chaînes vides. |
pad_char |
Lorsque vous définissez la mise en forme des chaînes d'exportation avec |
NullIfEmpty
Le champ doit être défini sur "null" si tous les octets de ce champ sont nuls.
Fournissez un objet JSON vide comme suit:
Représentation JSON |
---|
{ |
FormatTimestamp
Mettez en forme une chaîne en code temporel à l'aide de l'un des formats fournis. Cette option ne peut être appliquée qu'aux champs de taille. Lors du décodage, les formats sont testés dans l'ordre jusqu'à ce que l'un d'eux corresponde à la chaîne. Lors de l'encodage, le premier format est utilisé et les autres sont ignorés.
Représentation JSON |
---|
{ "formats": object ( |
Champs | |
---|---|
formats |
Liste des formats de code temporel. |
HFP
Définissez ce champ sur "Nombre à virgule flottante hexadécimal".
Fournissez un objet JSON vide comme suit:
Représentation JSON |
---|
{ |
DecodeAsNull
Définit la façon dont les valeurs nulles sont interprétées lors du processus de décodage. Comme COBOL n'est pas compatible nativement avec les valeurs nulles, ce paramètre spécifie les valeurs qui doivent être traitées comme nulles.
Représentation JSON |
---|
{ "values": string, "hex_bytes": string |
Champs | |
---|---|
values |
Liste de représentations de chaînes. Après le décodage initial du champ en chaîne, si le contenu du champ correspond à l'une de ces valeurs, il est traité comme nul. |
hex_bytes |
Liste des représentations hexadécimales d'un seul octet.
Lorsqu'un champ contient des répétitions de l'un de ces octets, il est traité comme nul.
Par exemple, utilisez |
EncodeNullAs
Définit la façon dont les valeurs nulles sont représentées pendant le processus d'encodage.
Représentation JSON |
---|
{ "value": string, "hex_byte": string |
Champs | |
---|---|
value |
Encodez cette valeur spécifique lorsque la valeur source est nulle. Vérifiez que la chaîne est valide pour le type du champ. |
hex_byte |
Encodez cette séquence d'octets spécifique (représentée sous forme de chaîne hexadécimale) lorsque la valeur source est nulle. Par exemple, |
DateTimeFormat
Taille et format à utiliser lors de la conversion du champ en date.
Représentation JSON |
---|
{ "size": int, "pattern": string |
Champs | |
---|---|
size |
Spécifiez la taille du champ auquel ce modèle s'applique. |
pattern |
Spécifiez le format du formateur de date. Pour en savoir plus sur les modèles de formatage valides, consultez la page Classe DateTimeFormatter. |
BinarySignedness
Type logique à utiliser pour un champ décimal.
Énumérations | |
---|---|
UNSPECIFIED |
Utilisez le type le plus optimal en fonction de l'échelle et de la précision. |
SIGNED |
Utilisez 64 bits pour stocker la valeur. Ce modificateur ne fonctionne que pour les nombres dont la précision est inférieure ou égale à 18 et dont l'échelle est 0. |
UNSIGNED |
Utilisez 64 bits pour stocker la valeur. Ce modificateur ne fonctionne que pour les nombres dont la précision est inférieure ou égale à 18. |
SchemaValidationMode
Spécifiez le mode de validation du schéma à utiliser lors de la compilation du livre de copie. Ce mode vérifie la compatibilité avec un format de données cible spécifique.
Énumérations | |
---|---|
DEFAULT |
Mode de validation de schéma par défaut. Ce mode vérifie que des noms de champ uniques figurent dans le cahier de copie. |
BIG_QUERY |
Mode de validation de schéma pour la compatibilité avec BigQuery. Ce mode étend la validation par défaut pour vérifier que le schéma du carnet de copie est compatible avec les types de données de BigQuery. |
ZonedDecimalEncoding
Spécifiez l'encodage à utiliser lors du décodage ou de l'encodage d'un champ décimal à zone.
Énumérations | |
---|---|
UNSPECIFIED |
Conservez l'encodage spécifié dans la chaîne de modificateur.
Si aucun modificateur n'est spécifié, EBCDIC est utilisé. |
EBCDIC |
Utilisez l'encodage EBCDIC . |
ASCII |
Utilisez l'encodage ASCII . |
DecimalLogicalType
Type logique à utiliser pour un champ décimal.
Énumérations | |
---|---|
AUTO |
Utilisez le type le plus optimal en fonction de l'échelle et de la précision. |
LONG |
Utilisez 64 bits pour stocker la valeur. Ce modificateur ne fonctionne que pour les nombres dont la précision est inférieure ou égale à 18 et dont l'échelle est 0. |
DECIMAL64 |
Utilisez 64 bits pour stocker la valeur. Ce modificateur ne fonctionne que pour les nombres dont la précision est inférieure ou égale à 18. |
BIG_DECIMAL |
Stockez la valeur sous forme de valeur décimale illimitée. Il s'agit de l'option la plus lente, mais elle accepte toutes les décimales de n'importe quelle précision à n'importe quelle échelle. |
BIG_INTEGER |
Stockez la valeur en tant que valeur entière illimitée. Il s'agit de l'option la plus lente, mais elle accepte n'importe quel entier de n'importe quelle précision. |