creez facilement

Correcteur de source ISeria – Conseils de correction avancés

Il n’y a pas si longtemps, un de mes amis a eu un problème avec un programme qu’il venait de terminer.

Nous utilisions le correcteur de source pour découvrir la cause de son problème. Nous avons finalement compris le problème, mais au cours de notre travail, nous sommes tombés sur des commandes et des options correctives dont je n’étais pas au courant auparavant. Maintenant, je ne dirai pas que je sais tout sur le correcteur de source IBM, mais je l’utilise depuis longtemps. J’ai été surpris de découvrir quelque chose de nouveau, alors j’ai pensé partager avec vous ce que j’ai appris.

Fonction intégrée% INDEX

La fonction% INDEX est l’une des fonctions dont je n’étais pas au courant jusqu’à récemment. C’est vraiment utile lorsque vous manipulez plusieurs structures de données. Il est encore plus utile lorsqu’il est utilisé en conjonction avec la valeur intégrée _QRNU_DSI_xxxx (où xxxx = le nom d’une structure de données multi-occurrences). La commande EVAL _QRNU_DSI_xxxx renvoie l’affichage actuel d’une structure de données multi-événements. C’est souvent une chose très utile à savoir lors de l’exécution du programme et pour autant que je sache, c’est le seul moyen de l’obtenir. À l’aide de la fonction % INDEX, vous pouvez également modifier l’affichage actuel d’une structure de données multi-événements. Voir ci-dessous.

d WorkMultDS1 ds se produit (30)

d ChaîneA 10a

d ChaîneB 25a

Pour trouver l’affichage actuel de la structure de données sans le modifier :

Commander: EVAL _QRNU_DSI_WorkMultDS1

Résultat: 1 (ou quelle que soit l’occurrence actuelle de WorkMultDS1)

Pour modifier l’événement en cours :

Commander: WorkMultDS1 =% INDEX (12)

Résultat: WorkMultDS1 = % INDICE (12) = 12

Après avoir émis la commande ci-dessus, les sous-champs demandés refléteront les valeurs du douzième affichage de la structure de données.

% SUBSTR Fonction intégrée

Cette fonctionnalité est vraiment pratique lorsque vous travaillez avec de grands tableaux. L’utilisation de la fonction EVAL elle-même n’affichera que les 500 premiers caractères d’un champ. En passant, la solution simple à ce problème consiste à ajouter un type et une longueur à la fonction EVAL, comme indiqué ci-dessous :

Cette commande affichera les 2000 premiers caractères de la variable Long_String_Name au format caractère :

Commander: EVAL Long_String_Name : C 2000

Cette commande affichera les 2000 premiers caractères de la variable Long_String_Name au format hexadécimal :

Commander: EVAL Long_String_Name : X 2000

L’affichage hexadécimal est important lors de l’affichage de données décimales emballées ou binaires. Mais nous ne parlons pas de la fonction EVAL. La fonction SUBSTR fera exactement ce que son nom implique ; affichera une sous-chaîne ou une partie de la valeur de la chaîne. Voir exemples ci-dessous.

Supposons StringFldA = ‘Le moment est venu pour toutes les bonnes personnes …’

Commander: EVAL% SUBSTR (StringFldA 12 4)

Résultat: % SUBSTR (StringFldA 12 4) = ‘temps’

Sans surprise, vous pouvez également utiliser la fonction % SUBSTR pour définir la valeur d’une certaine partie d’une chaîne. Parfois, c’est un moyen beaucoup plus utile d’utiliser cette fonctionnalité. Un exemple de cette utilisation est présenté ci-dessous.

Supposons StringFldA = ‘Le moment est venu pour toutes les bonnes personnes …’

Commander: EVAL% SUBSTR (StringFldA 12 4) = « blabla »

Résultat: % SUBSTR (StringFldA 12 4) = « blabla »

Pour afficher la chaîne complète, utilisez la commande suivante :

Commander: EVAL ChaîneFldA

Résultat: StringFldA = ‘Maintenant c’est bla pour toutes les bonnes personnes …’

La fonction % SUBSTR peut également être utilisée pour définir un point d’arrêt conditionnel ou une condition de vue. À titre d’exemple, le code ci-dessous n’arrêtera l’exécution que lorsque les positions StringFldA 12 à 15 sont « blabla » :

Commander: BREAK 100 kur% SUBSTR (StringFldA 12 4) = ‘blabla’

Ou vous pouvez voir les mêmes positions changer en utilisant cette position d’horloge :

Commander: HEURES % SUBSTR (StringFldA 12 4)

Après avoir émis la commande ci-dessus, à tout moment le contenu des positions 12 à 15 change, l’exécution du programme s’arrête et vous en êtes averti.

Fonction ÉQUATION

Je tombe de plus en plus souvent sur des noms de domaine très longs. Ne vous méprenez pas ici, je pense que c’est merveilleux. Mais je n’écris pas si bien, donc un nom de champ de 25 caractères a beaucoup plus de chances d’être mal saisi qu’un ancien champ de 6 caractères (même si celui de 25 caractères est beaucoup plus compréhensible). Donc, si vous n’écrivez pas bien (ou n’aimez tout simplement pas écrire, comme moi), utilisez la fonction de débogage EQUATE. Cette fonctionnalité vous permet de spécifier un « alias » pour un nom de champ, une expression ou une commande. Prenons l’exemple ci-dessous.

Commander: EQUATE SmName This_is_a_really_long_field_name

Vous pouvez ensuite trouver la valeur de « This_is_a_really_long_field_name » en tapant la commande ci-dessous :

Commander: EVAL Nom Sm

La commande EQUATE peut également être utilisée pour créer une macro de type …. Cela peut être fait en affectant un « alias » à une commande de correction complète.

Commander: EQUATE SmCmd EVAL% substr (StringA, 5.5)

Maintenant, en appuyant simplement sur SmCmd et en appuyant sur Entrée, vous pouvez afficher la valeur des positions 5 à 9 de la variable StringA.

Ainsi, la prochaine fois que vous commencerez à tester un programme ou à la suite d’une erreur, souvenez-vous-en et vous pourrez vous épargner des maux de tête.

Comments are closed.