2010-02-17 6 views
0

J'ai un programme MF COBOL 4.0 existant avec des années de données dans un fichier ISAM mais j'ai besoin d'ajouter un nouveau champ au fichier existant. L'enregistrement a actuellement 1208 caractères et je dois en ajouter 10 autres.Ajout d'un champ à un fichier de données COBOL existant

Si je mets simplement le champ supplémentaire PIC X (10) dans mon cahier, cela me donne une erreur.

+0

Quel genre d'erreur obtenez-vous? –

+0

S'agit-il d'une erreur de compilation ou d'une erreur d'exécution? Et comme Peter le demande, donnez-nous un peu plus de détails. Le numéro de message/texte spécifique serait très utile. – NealB

+0

Il me donne une erreur 39. –

Répondre

2

Vous devez modifier le fichier de données sous-jacent pour qu'il corresponde à la définition de votre fichier dans COBOL. Une façon de le faire serait de définir une ligne de sortie exactement comme les lignes de vos données ressemblent maintenant, mais avec un Pic x (10) supplémentaire à la fin de celle-ci. Vous liriez alors votre ligne de données par ligne, et la sortirais dans un nouvel emplacement avec 10 espaces supplémentaires à la fin de celle-ci. De cette façon, vos données sont plus longues de 10 caractères, et vous pouvez revenir en arrière et ajouter ce Pic x (10) supplémentaire à votre programme principal. Il devrait marcher après ça.

0

En changeant le copybook, vous changez seulement la représentation des données utilisées dans votre programme. Ne devriez-vous pas restructurer la source de données (c'est-à-dire le fichier ISAM)?

0

Réponse tardive, mais j'ai pensé que cela pourrait vous intéresser.

Je travaille sur notre système Cobol depuis plus de 20 ans et nous avons rencontré ce problème plusieurs fois.

Les modifications apportées à la structure de nos fichiers d'index sont ce que nous considérons comme une «version majeure». Ceux-ci exigent des programmes de conversion spécifiques:

  1. Renommez le fichier physique, déplacer de côté à une version « ancien » fichier
  2. Ouvrez le « vieux » du fichier (en utilisant une version du copybook avant le changement)
  3. Ouvrir (créer) la « nouvelle » version du fichier
  4. Déplacer le contenu de chacun des enregistrements « anciens » à un « nouveau » disque et l'écrit

Bien sûr, ces conversions nécessitent la système à être «bas», d'où th La raison pour laquelle ils sont considérés comme des rejets majeurs. Si vous avez des fichiers susceptibles d'avoir des champs ajoutés dans le futur, vous pouvez ajouter un FILLER supplémentaire à la fin du fichier d'index pour vous permettre de gérer les nouveaux champs ajoutés. Nous avons tendance à ajouter un FILLER de 50 ou 100. Bien sûr, cela ne vous aide pas si vous modifiez l'un des champs existants, ou même la structure de l'une des clés.

0

Pour les erreurs de fichier, vous souhaiterez conserver une liste à portée de main. Je recommande de commencer avec une liste que vous trouvez en ligne, et chaque fois que vous obtenez une erreur que vous ne pouvez pas comprendre en 5 secondes, ajoutez une explication détaillée de la résolution afin que vous l'ayez dans vos notes la prochaine fois. Voici quelques listes décentes pour commencer

Dans ma liste, l'état du fichier 39 est:

  • OUVERT-CONFLIT-FILE-ATR - La L'instruction 'open' a échoué car un conflit a été détecté entre les attributs de fichier fixe spécifiés pour ce fichier dans le programme.Ces attributs comprennent l'organisation du fichier (séquentiel, relatif ou indexé), la clé d'enregistrement principal, les clés d'enregistrement secondaire, l'ensemble de codes, la taille d'enregistrement maximale et le type d'enregistrement (fixe ou variable).

Et c'est à partir de la note personnalisée: Vérifiez le fichier que vous avez affecté à votre nom de domaine dans votre JCL. Surtout l'allocation de longueur. Dans votre cas, vous savez que la longueur ne correspond pas, puisque vous venez de changer le programme.

Il existe des utilitaires pour reformater les ensembles de données, en particulier SYNCSORT. Ou bien, vous pouvez écrire le vôtre.

Questions connexes