|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre émérite
![]() ![]() Fabrice Ingénieur systèmes et réseaux Inscription : juin 2005 Messages : 393 ![]() |
Bonjour,
Je souhaiterai savoir s'il est possible de tester si une ligne est vide en COBOL. Après mon autre sujet + pc-xp-percobol-lecture-sequentielle-fichier-tete/, j'ai vu que normalement les fichiers sont bien fixés à l'avance... Il n'y a donc JAMAIS de lignes vides dans "la vie réelle en COBOL" ? Enfin en gros pour essayer d'améliorer ce que je fais : 1) fichier en entrée avec du texte et quelques lignes vides 2) tri interne de ce fichier (en suivant l'aide de Hedhili) 3) lecture du tri pour écrire en sortie J'aimerais avant d'écrire de vérifier si ma ligne est vide ou pas (chaque ligne est stockée dans un PIC X(100)... il n'y a qu'un seul champs en gros...) Merci d'avance ! |
|
00
|
|
|
#2 | |
|
Expert Confirmé
![]() Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol Inscription : juin 2007 Messages : 1 789 ![]() |
Citation:
Comment les tester ? Tout dépend de comment les enregistrements ont été initialisés avant leur écriture, globalement par MOVE SPACES ou MOVE LOW-VALUE dans le niveau 01 du FD (le nom de l'enregistrement ou du format), ou zone par zone par des MOVE individuels ou l'instruction INTIALIZE. Cette instruction mets des 0 ou des espaces (pour simplifier à cause des types date/time) dans les zones élémentaires d'un groupe (niveau juste en dessous (supérieur) du niveau du groupe) en fonction de leur type. Pour simplifier : soit on teste le niveau 01 à SPACES ou à LOW-VALUE, soit chaque zone à 0 (ou ALL 0, ZEROS, ALL ZEROS), à SPACES ou à LOW-VALUE. Pour les fichiers texte, on teste à SPACES même si le CR/LF est en début de ligne. Je te laisse traduire tout ça. |
|
|
|
10
|
|
|
#3 | ||||
|
Membre émérite
![]() ![]() Fabrice Ingénieur systèmes et réseaux Inscription : juin 2005 Messages : 393 ![]() |
C'est bon ça marche !
Merci beaucoup ! Voici les variables et la routine : Code :
Code :
|
||||
|
00
|
|
|
#4 | ||||
|
Membre habitué
![]() Julien GuiffroyIngénieur d'étude Mainframe Inscription : septembre 2012 Messages : 61 ![]() |
En fait t'u navais pas besoin de programme pour ça
Si tu utilises le JCL pour compiler/exécuter des programmes, tu peux le faire par JCL Code :
Sinon, si tu sais combiner JCL et Assembleur (mais on sort du sujet, mais ça peut servir) : Code :
assembleur tout seul ......... ok JCL tout seul ......... ok les deux ensemble ......... euh Voilà
|
||||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() philippe Ingénieur intégration Inscription : avril 2013 Messages : 1 ![]() |
Bonjour,
il existe un autre moyen de tester le contenu "vide" d'un champ COBOL, il faut tester la longueur de son contenu. Exemple : un champ TOTO pic x(100). écrire l'instruction suivante MOVE LENGTH OF TOTO TO LONG (à définir en WSS) IF LONG = 0 le contenu de TOTO est vide. ATTENTION : le contenu d'un enregistrement "vide" n'est pas obligatoirement à SPACES il peut aussi être à LOW-VALUE. Philippe |
|
|
10
|
|
|
#6 |
|
Membre émérite
![]() ![]() Fabrice Ingénieur systèmes et réseaux Inscription : juin 2005 Messages : 393 ![]() |
Tout cela s'ajoute aux premiers posts en effet !
Merci pour le complément d'informations (certes un peu tardif, mais pas inutile) !
__________________
-- Metalman ! Attendez 5 mins après mes posts... les EDIT vont vite avec moi... Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c OU gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c (ANSI retire quelques fonctions comme strdup...) L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme Et s'assurer que la logique est bonne "aussi" ! |
|
00
|
|
|
#7 | |||||
|
Membre habitué
![]() Julien GuiffroyIngénieur d'étude Mainframe Inscription : septembre 2012 Messages : 61 ![]() |
Citation:
L'instruction LENGTH OF ne renvoie pas la taille maximale allouée par le programme ? (en l'occurence 100 pour l'exemple) Le plus simple serait de passer par Code :
Code :
|
|||||
|
|
10
|
Copyright © 2000-2013 - www.developpez.com