Est-ce que je ne peux pas employer des likeds dans ma pièce de P.R. (pi) ?
Tant que le proc appelant introduit un DS, puis vous pouvez employer un DS du côté de réception.
C'est-à-dire, si le proc appelant passe un paramètre « par la référence », votre proc de réception va seulement recevoir une adresse -- la définition est non pertinente en ce qui concerne le système ; il est essentiellement seulement approprié en termes d'entretien. (Mais c'est une pertinence importante. Vous voulez réutiliser des définitions entre le visiteur et l'appelé afin de réduire au minimum des bogues des définitions incompatibles.)
Si la mémoire est définie dans un DS dans le proc appelant, vous pouvez employer la même définition de DS dans le proc appelé parce qu'ils se dirigeront à la même mémoire (tant que passé « par la référence »). Et dans ce cas, il n'y aurait pas aucun besoin de votre proc à EVAL de/à l'argument et un DS séparé ; les valeurs seraient déjà dans le DS.
Ou si un groupe de 400 variables tout s'avèrent justement être dans la mémoire contiguë dans le proc appelant et elles toutes ont la même définition, vous devez seulement passer l'adresse de la première variable -- le proc appelé peut définir son argument pour être une rangée de 400 éléments. (Naturellement, il peut être rusé pour s'assurer que vous employez la mémoire contiguë -- un DS est employé souvent pour celui.)
Mais avoir différentes définitions entre appeler et les procs appelés est ce qui élargit le risque de parms mal adaptés. Ainsi nous employons régulièrement des membres de /COPY pour aider à s'assurer que nous mettons en référence la mémoire la même manière sur les deux extrémités.
Si vous passez dans un DS, vous devrez charger le DS avec des valeurs dans chaque proc qui appelle votre proc. Si vous passez dans les parms séparés, vous chargez seulement le DS dans votre proc. Vous devez choisir où la gestion de la mémoire principale a lieu.
Si c'est dans un proc qui sera seulement lié dans un programme simple, il ne pourrait faire aucune différence. Il sera seulement fait dans l'une seule pièce du code l'une ou l'autre manière.
Mais si votre proc peut s'appeler du multiple d'autres procs, vous devriez voir que le chargement de la rangée pourrait être le meilleur dans votre proc. Ne pas dicter aux procs appelants comment ils doivent organiser leurs variables.
La réponse est… lui dépend.
Tom