IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Cobol Discussion :

PACBASE variable en Varchar


Sujet :

Cobol

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 35
    Points : 37
    Points
    37
    Par défaut PACBASE variable en Varchar
    Bonjour,

    en PACBASE, dans un ordre EXECUTE IMMEDIATE, je dois utiliser une host variable en Varchar. Je ne sais pas comment la déclarer.

    Qui peut m'aider?

    Si ce n'est pas possible, je suis dans la m... car le programme est écrit mais ne compile pas.

    Christian

  2. #2
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Je ne connais pas PACBASE, mais certains compilateurs Cobol prennent en charge les champs à longueur variable, moyennant éventuellement une option de compilation.

    Exemple :
    06 ITEM1.
    49 ITEM1-LENGTH PIC S9(4) COMP-4. (ou BINARY)
    49 ITEM1-DATA PIC X(n).
    where n represents the maximum length of the variable-length field.
    Within the program, the PIC S9(4) COMP-4 is treated like any other declaration of this type,
    and the PIC X(n) is treated as standard alphanumeric.

  3. #3
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Manifestement, c'est une question concernant l'équivalent COBOL (puisque PACBASE ce n'est jamais qu'un générateur de COBOL finalement ... ) d'une colonne d'une table DB2 déclarée en VARCHAR.


    Soit :

    peut donner en COBOL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    01 COL-VARCHAR.
        49 LONG-COL-VARCHAR PIC S9(4) USAGE BINARY.
        49 TEXT-COL-VARCHAR PIC X(n).

    Le niveau groupe définit la variable hôte à coder dans l'instruction SQL.

    La première sous-variable contiendra la longueur de la colonne.

    La deuxième sous-variable contiendra le texte de la colonne.


    Attention : bien respecter les numéros de niveau !

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 35
    Points : 37
    Points
    37
    Par défaut Varchar dans PACBASE
    Bonjour,

    C'est bien ça qu'il faut faire en cobol.
    Ci-dessous, pour ceux que ça pourrait intéresser, le contenu d'une note technique qui explique comment faire en PACBASE.

    Merci beaucoup

    --------------------------------------------------------------

    Cette note technique explique comment codifier et utiliser une
    zone en type VARCHAR DB2 dans un programme BATCH.

    La définition d'une rubrique en VARCHAR ce fait au niveau d'un
    segment (-CE).
    Sur la ligne de la rubrique à définir en VARCHAR, il faut mettre
    'W' (VARCHAR) ou 'L' (LONG VARCHAR) dans la colonne I.

    Pour que la rubrique soit reconnue comme VARCHAR dans un programme
    , il faut définir le segment qui l'utilise, comme étant une
    description d'une table DB2.

    Utilisation en working (-W) :
    -----------------------------
    Sur la ligne d'appel de segment (type F), il faut mettre '2' dans
    la zone ORG (organisation) et le no de sous-schéma (vue) dans la
    zone SS.
    Remarque : le sous-schéma 1 correspond à la vue V0, le 2 à la
    vue V1, le 3 à la vue V2 etc.

    Utilisation sur l'écran d'appel de ressources externes (-CD) :
    --------------------------------------------------------------
    Mettre '2' dans la zone O (premier O de OAMOU --> Organisation)
    et le no de sous-schéma dans la zone O (à droite de l'écran).

    Ces deux actions permettent de générer le compteur DB2 qui
    contient la longueur de la rubrique en VARCHAR.
    Ce compteur est généré par PACBASE, c'est une zone technique.

    Exemple de génération :
    -----------------------
    A partir le la rubrique ZG300 qui est définie en VARCHAR dans le
    segment F101, on obtient en générer les lignes suivantes :

    10 VF101-ZG300.
    49 LF101-ZG300 PICTURE S9(4) COMP.
    49 F101-ZG300 PICTURE X(300).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 06/01/2010, 08h32
  2. Réponses: 5
    Dernier message: 21/11/2006, 16h24
  3. Créer une variable varchar interne à une procédure stockée
    Par killysui dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 26/04/2006, 17h59
  4. soucis avec MAX(variable de type varchar)
    Par littledoudou dans le forum Langage SQL
    Réponses: 1
    Dernier message: 24/04/2006, 19h07
  5. Tester qu'une variable varchar est un nombre
    Par Oluha dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/06/2005, 13h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo