2017-11-15 4 views
0

Ich hoffe, Sie sind in Ordnung. Ich habe ein Problem und brauche deine Hilfe, wenn möglich.MAINFRAME: SORTIEREN in JCL, um einen Datensatz in CSV-Format zu konvertieren

Ich arbeite mit Mainframe JCL und ich habe einen Datensatz mit Datensätzen; Jeder Datensatz hat verschiedene feste Spalten, die durch "~" getrennt sind (wir verwenden das, da in der Spalte NAME die Namen durch Kommata getrennt sind). Ich muss diesen Datensatz in ein CSV-Dateiformat konvertieren, so dass es sein muss: 1) getrennt durch Komma 2) mit variabler Länge anstelle von Fixlänge 3) Ich brauche nicht alle Spalten, nur 4 von sie (und in anderer Reihenfolge als original) 4) die erste colum muß unterschiedlich seine 5) Wenn der Name hat ein (Ex: Name, Vorname) verwenden „“

Dies ist ein Beispiel für die Eingabedatei :

ROLENAME~LID  ~NAME     ~NONCNCL~ACCDATE ~SUSPEND 
CARINQ ~X  ~*** NOT FOUND ***  ~  ~  ~  
CARONL ~AZBLCH ~*** NOT FOUND ***  ~  ~  ~  
SOTHER ~BZBWD4 ~SUAREZ, VICTOR  ~N  ~10/01/17~N  
CARONL ~BZCJHS ~CHURCH DAVID S  ~N  ~11/10/17~N  
CARONL ~VZC2G1 ~*** NOT FOUND ***  ~  ~  ~  
CARONL ~BZDKKF ~PLAARDRTE ALLY  ~N  ~11/13/17~N  
SOTHER ~HZDFGH ~*** NOT FOUND ***  ~  ~  ~  
CARONL ~JZFPOI ~LOPEZ KAREN N   ~N  ~11/10/17~N  
CARONL ~IZG0WZ ~FOSHIL, RICHARD  ~N  ~11/13/17~N  
SOTHER ~OZG3T2 ~CARLINE KECHUA  ~N  ~11/13/17~N  
CARONL ~PZMMNB ~BARELTINE, DUANE  ~N  ~11/13/17~N  
CARONL ~PZNSWX ~*** NOT FOUND ***  ~  ~  ~  
CARONL ~RZPF5V ~SLIMMORE JACK   ~N  ~10/12/17~N 

Dies ist ein Beispiel der Ausgabedatei:

GMID,Name,Last Login Date,Role/Group 
X,*** NOT FOUND ***,,CARINQ 
AZBLCH,*** NOT FOUND ***,,CARONL 
BZBWD4,"SUAREZ, VICTOR",10/01/17,SOTHER 
BZCJHS,CHURCH DAVID S,11/10/17,CARONL 
VZC2G1,*** NOT FOUND ***,,CARONL 
BZDKKF,PLAARDRTE ALLY,11/13/17,CARONL 
HZDFGH,*** NOT FOUND ***,,SOTHER 
JZFPOI,LOPEZ KAREN N,11/10/17,CARONL 
IZG0WZ,"FOSHIL, RICHARD",11/13/17,CARONL 
OZG3T2,CARLINE KECHUA,11/13/17,SOTHER 
PZMMNB,"BARELTINE, DUANE",11/13/17,CARONL 
PZNSWX,*** NOT FOUND ***,,CARONL 
RZPF5V,SLIMMORE JACK,10/12/17,CARONL 

Ich versuche, Programm SORT zu verwenden, um INREC PARSE und BUILD zu verwenden, aber ich kann es nicht vollständig erhalten, vor allem, um eine Feldvariable statt Fixlänge zu machen und den Namen der Spalten zu ändern, die ich in jedem Fall könnte wenn nötig später verketten, keine große Sache (Ich möchte EasyTrieve vermeiden, da ich nicht so vertraut bin). Hat jemand ein Beispiel dafür? Ich suchte nach ähnlichen Fällen mit SORT und konnte keine finden. Ich kann den Bericht aber nur mit festen Spalten erstellen, kann ich nicht den Weg finden, es zu tun Variable Länge

Es tut mir leid für den langen Text, aber ich wollte so klar wie möglich sein. Vielen Dank im Voraus! Guten Tag/Nacht!

Antwort

0

Wenn Sie nicht besorgt über die Header sind, können Sie verwenden:

OPTION COPY        
INREC IFTHEN=(WHEN=INIT,BUILD=(1,15,31,15,46,15,SQZ=(SHIFT=LEFT))),  
     IFTHEN=(WHEN=INIT,FINDREP=(IN=C'~',OUT=C',')) 

ich die LRECL angenommen 80 zu sein, und auch davon ausgegangen, dass Sie nur 3 Spalten müssen aus den Spalten beginnend 1, 31 und 46 mit 15 Bytes jeweils.

.

+0

Danke! Das hat nicht so funktioniert, wie es ist, aber es hat mir einige Ideen gegeben, einige Fehler zu beheben. –

+1

@Jorge, wenn die Antwort nützlich ist, überdenken Sie es eine –

+0

Ich tat .... aber es sagt, dass ich nicht genug Ruf, um das zu zeigen :( –

Verwandte Themen