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 :

[AS/400-V5R3] Retour chariot en fin de ligne


Sujet :

Cobol

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut [AS/400-V5R3] Retour chariot en fin de ligne
    Bonjour,

    Est-il possible pour un fichier physique d'avoir un format de ligne différent ??
    je m'explique : on me demande de fournir des résultats d'états réglementaires pour un pays, et chaque ligne est de longueur variable et doit se terminer obligatoirement par un retour charriot ... sinon le fichier sera rejeté !!!

    C'est possible ça avec COBOL ???

    d'avance merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Bien sûr, pourquoi pas ?

    Pour la longueur variable, tu disposes de fichiers de type variable.

    Après, tu te poses peut-être la question de la manière d'alimenter les lignes. Cela dépend de ce que tu appelles "variable" :
    • s'il y a un nombre déterminé de formats de lignes, alors tu peux les décrire en Working ;
    • dans le cas contraire, il faut construire chaque ligne en ajoutant des éléments au fur et à mesure. Tu trouveras dans ce forum des sujets traitant de ça (avec en particulier la modification de référence).


    Est-ce que cela répond à ta question ?

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    Qu'appelles-tu des fichiers de type variable ?
    Je travail sur un système AS 400, V5R3M0 pour info.

    Merci.

  4. #4
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Points : 638
    Points
    638
    Par défaut
    certains compilateurs comportent la clause "line sequential"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           FILE-CONTROL.                                                            
                   SELECT  FIC ASSIGN TO UT-S-SYS011                           
                  ORGANIZATION LINE SEQUENTIAL.
    qui fait qu'à l'écriture d'un enregistrement se rajoute
    automatiquement en fin de celui-ci le(s) catactère(s) \r\n
    (en fonction de l'OS)

    La lecture d'un enregistrement d'un tel fichier s'arrête
    à la rencontre des caractères indiqués supra

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    Mais comment savoir sur quel OS ta solution fonctionne ?

    En fait, je dois fournir un fichier qui contient une ligne d'entête qui fera 24 caractères et les lignes suivantes seront plus longues.
    En temps normal, je n'aurais pas de problème mais on m'impose l'insertion d'un retour charriot en fin de ligne ...
    alors je ne sais pas si je laisse admettons 50 caractères blancs en fin de ma ligne d'entête, si la fin de la ligne sera considéré comme un retour charriot ...
    En plus, il m'est indiqué que les lignes d'enregistrements contiennent des champs qui sont tous de taille variables !!! mais bon, je pense que je vais les figer ..

    Donc le problème qu'il me reste, c'est cette première ligne et ce retour charriot systématique en fin de ligne ...

    Si je suis assez clair et que vous avez une solution, d'avance merci..

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par vince29 Voir le message
    Qu'appelles-tu des fichiers de type variable ?
    Un fichier déclaré en FD avec un

    Après, effectivement, cela va dépendre de l'OS.

    Sur Z/OS, il n'y a pas (à ma connaissance) de CR/LF explicite. Mais si cela existe sur AS400, il faut que tu gères la longueur réelle de ta ligne.

    Par exemple, pour ta 1ère ligne qui contient déjà 24 caractères, tu auras quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MOVE WS-CRLF           TO WS-MA-LIGNE (25:2)
    (en supposant que le CRLF est sur deux caractères). Mais tu peux directement le déclarer en Working si ta 1ère ligne a toujours la même longueur (ici 26 = 24 + 2 du CRLF).

    Pour les autres lignes, si tu gères une variable "position" qui indique à quel endroit de la ligne tu te trouves effectivement, tu auras alors une instruction de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MOVE WS-CRLF           TO WS-MA-LIGNE (WS-POSITION:2)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par vince29 Voir le message
    Mais comment savoir sur quel OS ta solution fonctionne ?

    Il faut que tu saches qui est le destinataire du fichier, et s'il n'est pas comme toi sur AS400, vérifier si le protocole de transfert insère le retour chariot en fin de ligne (ça devrait être une option, tu peux le paramétrer par exemple quand tu tranfères un fichier sur ton PC).

    Citation Envoyé par vince29 Voir le message
    alors je ne sais pas si je laisse admettons 50 caractères blancs en fin de ma ligne d'entête, si la fin de la ligne sera considéré comme un retour charriot ...
    A priori, c'est justement ce que l'on te demande d'éviter : ne transmettre que la partie utile de la ligne, d'où la notion de longueur variable.

    Citation Envoyé par vince29 Voir le message
    En plus, il m'est indiqué que les lignes d'enregistrements contiennent des champs qui sont tous de taille variables !!! mais bon, je pense que je vais les figer ..
    Ben justement non, ce serait plus conforme à la demande de gérer dynamiquement la taille réelle de ta ligne (cf. mon post précédent).

    Citation Envoyé par vince29 Voir le message
    Donc le problème qu'il me reste, c'est cette première ligne et ce retour charriot systématique en fin de ligne ...
    Si tu le résouds pour 1 ligne (par un fichier de taille variable et la gestion de la longueur de ligne), alors tu sais le faire pour toutes les autres...

    Je te renvoie à cette discussion dont tu étais l'initiateur et qui traitait déjà cette problématique de chaînes de caractères "dynamiques".

  8. #8
    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.

    En complément de ce que a été si bien dit :
    Bonjour.

    - pour ce qui est des fichiers physiques multi-formats sur AS400 : la réponse est non.
    Ce sont les fichiers logiques qui peuvent l'être.

    - si vraiment on veut forcer ce genre de structure pour les fichiers, on fait plutôt des descriptions internes aux programmes et on redéfinit le 01 du FD par d'autres 01. Il est vivement conseillé dans ce cas d'avoir une partie commune aux divers formats, dont la clé et un identifiant du type d'enregistrement.

    - Les zones de longueurs variables sont possibles. (voir doc DDS et Cobol). La longueur réelle est la longueur maximale déclarée plus 2 caractères réservés pour la longueur de la zone (binaire). Un problème de perf peut se poser.

    - Pour cette histoire de CR/LF :
    - Si tu vas transférer par Client Access et assimilés (HOD par ex), on n'a pas besoin d'insérer le CR, parce qu'il est fait automatiquement : à vérifier par Word ou affichage ASCII (PC Tools par exemple)
    - Si le flot doit être envoyé vers une imprimante ou via SNA (caractères de contrôle SCS), là le CR et le LF sont obligatoire CR = X'0D', LF = X'0A' qu'on peut insérer par un move x'0D0A' à la fin des enregistrements dans une position fixe ou variable.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    En complément de ce que a été si bien dit :
    Merci

    ... je me doutais bien que "M. AS400" allait nous éclairer

  10. #10
    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
    Citation Envoyé par fremen167 Voir le message
    Merci

    ... je me doutais bien que "M. AS400" allait nous éclairer
    A vrai dire j'attendais une invitation de ta part, je plaisante bien sûr. Et c'est quoi ce titre que tu me donnes ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Et c'est quoi ce titre que tu me donnes ?
    Rien, juste que j'ai remarqué que tu as toujours plein d'infos super précises à apporter sur les questions concernant l'AS400. Je l'ai d'autant plus remarqué que moi-même, je n'y connais absolument rien

  12. #12
    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
    Citation Envoyé par fremen167 Voir le message
    ...
    Je l'ai d'autant plus remarqué que moi-même, je n'y connais absolument rien
    Si un jour tu penses t'y mettre, il faudrait que tu prévoies un petit budget, pas trop, je te ferai un prix d'ami

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

Discussions similaires

  1. fgets sans retour chariot et saut de ligne
    Par zugolin dans le forum Langage
    Réponses: 5
    Dernier message: 10/05/2009, 16h02
  2. Manipulation de texte, retour chariot et saut de ligne
    Par Jessica_ dans le forum VBA Word
    Réponses: 5
    Dernier message: 26/07/2007, 14h09
  3. [XSLT][->texte] les fameux retour chariot et a la ligne
    Par SOPRA-Eherve dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/06/2006, 00h14
  4. Supprimer retour chariot à la fin de fichier txt
    Par vinaely dans le forum Oracle
    Réponses: 4
    Dernier message: 29/03/2006, 17h13
  5. LOAD DATA et retour chariot de fin de ligne
    Par izioto dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 16/03/2006, 13h52

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