Comment accéder à caractère unique à partir d'une chaîne en COBOL?
Comment accéder à un caractère particulier dans une chaîne de caractères en langage COBOL?
Par exemple, si une chaîne est "travail", j'ai accès à un personnage dit " w " dans la chaîne et de le stocker dans un personnage. J'ai besoin de la correspondance de caractère, et non pas la position du personnage.
Par exemple en c, nous prenons les mesures suivantes pour extraire un i-ième caractère dans une chaîne,
char data[5] = "work";
char temp;
temp = data[3];
temp aura la valeur 'k'
Maintenant j'ai besoin de la même COBOL.
- nous montrer le code de la Procédure-la Division des Données et de la Division.
- Quand vous dites caractère particulier, entendez-vous la position d'un caractère ou de caractère correspondant? En d'autres termes, si la chaîne est "travail" voulez-vous "w" pour retourner 1, ou voulez-vous 1 de retour "w"?
Vous devez vous connecter pour publier un commentaire.
La première chose à comprendre est que le tableau des indices en partant de zéro en C et 1 basé en COBOL.
Prochaine COBOL et C ont très différentes façons de représenter des chaînes de caractères. En C, une chaîne de caractères est généralement stocké
comme un tableau de caractères, la fin de la chaîne est généralement représenté à l'aide d'un zéro binaire (null \0). COBOL
dispose pas d'une telle convention. Les chaînes de caractères sont stockées dans les données nominatives les éléments d'une longueur spécifiée. Ces éléments sont généralement
déclarée sous le TRAVAIL de STOCKAGE et ont une Clause de l'IMAGE associée de type " X " (il y en a plusieurs autres
les possibilités pour l'IMAGE de clauses, mais " X " représente n'importe quel type de caractère). Par exemple:
La mémoire de Travail variable appelée MA-VARIABLE est déclarée comme 20 caractères de long. Il peut être attribué une valeur
dans la PROCÉDURE de DIVISION comme suit.
Vous pouvez ensuite accéder aux différents personnages de cette chaîne (ou de sous-chaînes) en utilisant une technique connue sous le nom
référence modification:
affichera le troisième caractère de MA VARIABLE (1 à base d'indexation), qui est "r". Le premier nombre entre parenthèses ci-dessus (3)
indique le décalage à partir du début de la variable, le deuxième nombre est le nombre de caractères à partir de cette position (1).
Il y a d'autres méthodes, telles que la REDÉFINIT, d'où MA VARIABLE pourrait être redéfini comme un tableau de 20 1 caractère cellules. Cette
est un peu obsolète mécanisme je voudrais donc encourager les à l'aide de la modification d'accéder à des parties de chaînes de caractères.
Re-répondu. En dépit de la mention "chaîne", je pense que vous parlez de ce qui pourrait être appelé un "champ", un morceau de données.
un-morceau-de-données est un "élément de groupe", qui est de quatre octets de long. Les "subalternes" définitions de vous permettre d'accéder aux différents octets dans les quatre octets.
Il peut être fait de cette façon:
Il peut être fait avec "subscripting":
Maintenant,
références le troisième octet de données.
La subscripting peut être fait avec un littéral, comme illustré, ou de données-nom (nom et de stockage que vous avez défini de la façon normale, doit être numérique, le mieux être binaire) ou un nom d'index (à l'aide de INDEXÉES PAR, qui permet de définir le nom, mais le compilateur définit le stockage).
Il peut également être fait avec la référence de modification, comme NealB a montré.
Pour moi, le choix se résume souvent à "qui est la plus claire pour la personne suivante le long?".
Qui est la même que (ou est-il?, vous pouvez toujours vérifier dans un manuel à chaque fois):
PS. Je sais que sur VAR2, mais dans mon expérience, c'est la façon dont beaucoup de gens sans expérience qui utilisent de référence-modification de code. Vous verrez également VAR2 (1:), tandis qu'une plaine VAR2 est tout ce qui est nécessaire. Oui, les noms choisis sont le type de noms qui semblent aller de pair avec référence-modification et aucune expérience.