2010-06-08 11 views
0

J'ai un jeu de données séquentiel dont certaines données sont formatées en colonnes. supposons ci-dessous le format de mon ensemble de données.Jeu de données de macroordinateur

Emp_ID Emp_name  Emp_addr 
--------------------------------- 

Je souhaite supprimer la colonne Emp_Name de l'ensemble de données. Puis-je le faire sans écrire le programme COBOL? S'il vous plaît laissez-moi savoir si nous avons n'importe quelle commande pour faire la même chose.

Merci et Cordialement, Manasi Kulkarni.

Répondre

6

Vous pouvez utiliser SORT pour éliminer les octets de votre fichier séquentiel.

Supposons que le format suivant:

Employee ID  Bytes 1 - 10 
Employee Name  Bytes 11 - 40 
Employee Address Bytes 41 - 70  

Nous voulons éliminer le Nom de l'employé. Nous voulons copier les 10 premiers octets, passer les 30 octets suivants et copier les 30 derniers octets.

Le fichier séquentiel d'entrée est de 70 octets et le fichier séquentiel de sortie sera de 40 octets.

Voici le JCL SORT pour effectuer cette tâche. Vous devrez modifier le JCL pour vous conformer aux normes de votre magasin mainframe.

//EXAMP JOB A400,PROGRAMMER 
//COPY  EXEC PGM=SORT 
//SYSOUT DD SYSOUT=* 
//SORTIN DD DSN=SMF.DATA,DISP=SHR 
//SORTOUT DD DSN=SMF.COPY,DISP=(,KEEP),SPACE=(CYL,(2,5)) 
//   UNIT=SYSDA 
//SYSIN DD * 
OPTION COPY 
OUTREC FIELDS=(1,10,41,30) 
/* 
// 

L'instruction OUTREC dit à copier à partir de l'octet 1 de 10 octets, et à partir de l'octet 41 pour 30 octets, pour un total de 40 octets.

Voici le DFSORT manual d'IBM pour plus d'informations.

+0

Merci beaucoup Gilbert :) Je vais essayer cette sortie. – Saisha

+0

+1 pour donner une solution correcte plus un lien vers le manuel de référence approprié pour que l'OP puisse faire son propre suivi. – NealB

0

Vous pouvez également utiliser IEBGENER reformater les données comme suit:

//FORMAT EXEC PGM=IEBGENER  
//SYSPRINT DD SYSOUT=*   
//SYSUT1 DD *     
EMP_ID EMP_NAME  EMP_ADDR 
--------------------------------- 
120  FIRST  NEW ROAD 
130  SECOND  OLD ROAD 
/*        
//SYSUT2 DD SYSOUT=*   
//SYSIN DD *     
    GENERATE MAXFLDS=99,MAXLITS=99 
    RECORD  FIELD=(10,1,,1), 
       FIELD=(30,24,,11) 
/*        
//        

De plus amples détails sur la syntaxe de commande IEBGENER se trouve here.

+1

DFSORT est à la fois moins gourmand en ressources et plus flexible que IEBGENER. En effet, sur de nombreux sites, grâce à "aliasing", ICEGENER est utilisé, où tout ce qui peut être fait dans DFSORT est fait dans DFSORT, sinon dans IEBGENER, sans que l'utilisateur ait à le savoir. –

0

Aussi, si vous voulez plus de contrôle, vous pouvez toujours écrire un rapide Script REXX avec deux commande EXEXCIO pour lire le fichier et écrire seulement les parties que vous voulez dans la deuxième commande.

0

Pour une modification unique d'un jeu de données plus petit - cela ne serait probablement pas approprié ici - l'éditeur ISPF peut le faire. Il suffit d'utiliser la commande de ligne BNDS pour définir la limite gauche, puis la touche 'gauche' ('commande de ligne pour décaler les données laissées par la largeur de cette colonne pour l'éliminer efficacement)