2017-06-19 6 views
-2

Je voudrais savoir quelle est la différence entre ces deux lignes de code: -Quelle est la différence entre? STEP1.SYSIN DD * // STEP1.SYSIN et STEP1.SYSIN DD & SYSUID..COBOL (CBL0001), DISP = SHR?

//STEP1.SYSIN DD * 

et

//STEP1.SYSIN and STEP1.SYSIN DD &SYSUID..COBOL(CBL0001),DISP=SHR 

et s'il y a des différences.

+0

S'il vous plaît mettre les deux lignes de code dans votre question à l'aide d'un bloc de code afin qu'il sera plus facile de repérer les différences. – Bawpotter

Répondre

2
//STEP1.SYSIN DD * 

passera les données dans les lignes suite à la déclaration instream-données au SYSIN DD par exemple

//SYSIN DD * 
fred 
bert 
harry 

RESULTERAIENT dans les trois lignes en cours de lecture lorsque SYSIN est ouvert et lu pour l'entrée.

//STEP1.SYSIN DD DSN=&SYSUID..COBOL(CBL0001),DISP=SHR 

allouera le membre PDS/PDSE CBL0001 de l'ensemble de données user.COBOL (où l'utilisateur sera le userid (c.-à-& SYSUID. Décide de l'ID utilisateur de l'émetteur) de l'utilisateur qui a envoyé le travail) à Nom DD SYSIN.

//STEP1.SYSIN 

Tel qu'il est utilisé par les deux, dit à remplacer ou à ajouter la SYSIN déclaration DD pour le nom d'étape de procédure ETAPE1 (la procédure elle-même serait défini dans le JCL précédent). La différence sera que les données lues par SYSIN seront différentes (ie d'une source différente, il pourrait s'agir des mêmes données sous-jacentes), la première sera la donnée qui suit l'instruction JCL, la seconde sera la données détenues dans le membre CBL001 (les deux seraient probablement un programme COBOL).

Avec instream-données, les données se terminera si /* est codé ou si une déclaration de DD est codé ou si rien ne suit d'autre (comme indiqué ci-dessus), par exemple

//STEP1.SYSIN DD * 
fred 
bert 
harry 
/* 
...... more JCL here 

ou

//STEP1.SYSIN DD * 
fred 
bert 
harry 
//STEP1.OTHER DD ......... 

au lieu de * DATA peut être utilisé par exemple (Même résultat que ci-dessus à savoir trois lignes)

//STEP1.SYSIN DD DATA 
fred 
bert 
harry 
/* 

Dans les deux cas * ou DATA vous pouvez spécifier le séparateur en utilisant DLM par exemple

//STEP1.SYSIN DD *,DLM="%%" 
fred 
bert 
//harry 
%% 

(dans ce cas, la troisième ligne sera // harry)

+0

Très proche, mais //STEP1.SYSIN DD & SYSUID..COBOL (CBL0001), DISP = SHR n'alloue pas de fichier.la disposition est SHR ce qui signifie qu'il essaie de spécifier un fichier à utiliser, et le programme n'a pas besoin d'une utilisation exclusive du fichier. Autre bonne réponse. – SaggingRufus

+0

@SaggingRufus Vous parlez d'allouer de l'espace, il y a un peu plus. L'ensemble du processus d'association d'un DATASET avec un DDNAME à l'étape où ce DATASET peut ensuite être ouvert à partir d'un programme est souvent appelé ALLOCATION. par exemple. -Utiliser la commande ALLOCATE ou la sous-commande ALLOCATE de EDIT (la fonction et la syntaxe de la sous-commande sont identiques à la commande ALLOCATE) pour allouer dynamiquement les ... ensembles de données requis par un programme que vous avez l'intention d'exécuter. - https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.ikjc500/dup0009.htm – MikeT

+0

Peut-être qu'une définition plus insupportable/définitive de l'allocation est _Allocation est le processus par Le système affecte ou alloue des ressources d'E/S à votre travail. Une ressource d'E/S est une combinaison ** ddname-ensemble de données **, avec tous les volumes et périphériques associés._ [Présentation de l'allocation] (https://www.ibm.com/support/knowledgecenter/fr/SSLTBW_2.1.0 /com.ibm.zos.v2r1.ieaa800/allocov.htm) – MikeT