>> #$%& is indeed delimiter, any character set, anything which cannot be 
found in real email address.

R.S,

Yes that is indeed my delimiter that I added in the earlier on the 1st 
IFTHEN statement, where I was converting to upper case.  I added that 
delimiter as stopper to stop PARSE from getting into the domain data when 
we are re-parsing the name once again. May be I should have added more 
detail comments but then it would overshadow the actual control cards. So 
I kept the comments to be short. 

>>> Sri, you're great guy, I appreciate your contribution very much!

Thank You


Thanks,
Kolusu

IBM Mainframe Discussion List <[email protected]> wrote on 
07/19/2017 06:37:33 AM:

> From: "R.S." <[email protected]>
> To: [email protected]
> Date: 07/19/2017 06:38 AM
> Subject: Re: Sort Question
> Sent by: IBM Mainframe Discussion List <[email protected]>
> 
> W dniu 2017-07-19 o 15:11, R.S. pisze:
> > W dniu 2017-07-17 o 17:33, Sri h Kolusu pisze:
> >>>> I see the following room for improvement: 1. Do NOT limit domain 
field
> >> to first dot. Just take it as whole string.
> >> Example of sorted domains
> >>
> >> R.S
> >>
> >> My earlier job was just an untested sample that I wrote on the 
> >> weekend to
> >> meet Edward's requirement.  Here is a fully tested version and it 
takes
> >> into consideration all the points raised here so far.  Thanks paul 
for
> >> sending in some sample data. It also handles the lower case and upper
> >> case. We only convert the parsed values to upper case and leave the
> >> original record as is.
> >>
> >> I did not code the OUTREC statement to remove the parsed fields as I
> >> wanted to show how the values are parsed. If the job met all your
> >> requirements then simply add OUTREC BUILD=(1,80)
> >>
> >> //STEP0100 EXEC PGM=SORT
> >> //SYSOUT   DD SYSOUT=*
> >> //SORTIN   DD *
> >> John Sr Doe <[email protected]>,
> >> SORT EXPERT <[email protected]>,
> >> [email protected],
> >> <[email protected]>,
> >> <"JOHNDOE"@US.IBM.COM>,
> >> (MUST BE EQUIVALENT) <"JOHNDOE"@US.IBM.COM>,
> >> (OPTIONALLY DISTINCT) <"JOHNDOE"@US.IBM.COM>,
> >> (MAY BE REJECTED BY IBM) <"JOHNDOE+FOLDER"@US.IBM.COM>
> >> [email protected]
> >> [email protected]
> >> [email protected]
> >> [email protected]
> >> [email protected]
> >> [email protected]
> >> [email protected]
> >> [email protected]
> >> [email protected]
> >> [email protected]
> >> [email protected]
> >> [email protected]
> >> [email protected]
> >> //SORTOUT  DD SYSOUT=*
> >>    INREC IFTHEN=(WHEN=INIT,
> >>           PARSE=(%01=(ENDBEFR=C'@',FIXLEN=50),   $ GET FIELD BEFORE @
> >>                  %02=(ENDBEFR=C'>',              $ GET FIELD BEFORE <
> >>                       ENDBEFR=C',',              $ GET FIELD BEFORE ,
> >>                       ENDBEFR=C' ',FIXLEN=50)),  $ GET FIELD BEFORE ' 
'
> >>     OVERLAY=(081:%01,TRAN=LTOU,                  $ PUT NAME AT 81
> >>              C'#$%&',                            $ ADD SPL CHAR #$%&
> >>              135:%02,TRAN=LTOU)),                $ PUT DOMAIN AT 135
> >>     IFTHEN=(WHEN=INIT,
> >>            PARSE=(%03=(ABSPOS=81,STARTAFT=C'<',  $ REPARSE THE NAME
> >>                       ENDBEFR=C'#$%&',           $ SPL CHAR AS 
STOPPER
> >>                       FIXLEN=50)),
> >>     OVERLAY=(185:%03)),                          $ PUT NAME AT 185
> >>      IFTHEN=(WHEN=INIT,
> >>     FINDREP=(STARTPOS=181,INOUT=(C'"',C''))),    $ REPLACE THE "
> >>        IFTHEN=(WHEN=(185,50,CH,GT,C' '),
> >>    BUILD=(001,80,                                $ ORIGINAL REC
> >>           185,50,                                $ NAME
> >>           135,50)),                              $ DOMAIN
> >>      IFTHEN=(WHEN=NONE,
> >>    BUILD=(001,80,                                $ ORIGINAL REC
> >>           081,50,                                $ NAME
> >>           135,50))                               $ DOMAIN
> >>      SORT FIELDS=(081,50,CH,A,                     $ NAME
> >>                 131,50,CH,A),EQUALS              $ DOMAIN
> >> /*
> >>
> >> Thanks,
> >> Kolusu
> >> DFSORT Development
> >> IBM Corporation
> >
> > OK, I give up.
> > The job is obvoiusly working OK, however I can't fully understand its 
> > logic.
> >
> > My understanding:
> > ** first IFTHEN + OVERLAY put string before @ (with all the garbage 
> > like "John Sr Doe <") and string before end of domain (which can be 
> > space or ">" or comma). First string is placed in col 81, the second 
> > in col 135.
> > What is "#$%&" ? is kind of delimiter?
> >
> > ** the second IFTHEN parses "name" field again to remove "<". What 
> > about records without "<>" ?
> >
> > ** third IFTHEN simply removes " character, but why it starts from 
> > 181, while name was put on 185?
> >
> > ** fourth IFTHEN chooses records with non-empty field 185,50 and 
> > builds record using original record (1,80), name (185,50) and domain 
> > (135,50).
> >
> > ** fifth IFTHEN takes rest of records (means empty 185,50) and builds 
> > record using original record (1,80) "raw" name (81,50) and domain 
> > (131,50).
> >
> 
> 
> When I wrote the above I started again and (probably) understood more.
> #$%& is indeed delimiter, any character set, anything which cannot be 
> found in real email address.
> third IFTHEN removes " and should start in 185, however earlier start 
> does not hurt anything.
> indeed fourth IFTHEN si for reparsed usernames and fifth is for 
> usernames which did not require reparsing.
> 
> Sri, you're great guy, I appreciate your contribution very much!
> 
> 
> Regards
> -- 
> Radoslaw Skorupka
> Lodz, Poland
> 
> 
> 
> 
> ======================================================================
> 
> 
>         --
>  Treść tej wiadomości może zawierać informacje prawnie chronione 
> Banku przeznaczone wyłącznie do użytku służbowego adresata. Odbiorcą
> może być jedynie jej adresat z wyłączeniem dostępu osób trzecich. 
> Jeżeli nie jesteś adresatem niniejszej wiadomości lub pracownikiem 
> upoważnionym do jej przekazania adresatowi, informujemy, że jej 
> rozpowszechnianie, kopiowanie, rozprowadzanie lub inne działanie o 
> podobnym charakterze jest prawnie zabronione i może być karalne. 
> Jeżeli otrzymałeś tę wiadomość omyłkowo, prosimy niezwłocznie 
> zawiadomić nadawcę wysyłając odpowiedź oraz trwale usunąć tę 
> wiadomość włączając w to wszelkie jej kopie wydrukowane lub zapisanena 
dysku.
> 
>  This e-mail may contain legally privileged information of the Bank 
> and is intended solely for business use of the addressee. This e-
> mail may only be received by the addressee and may not be disclosed 
> to any third parties. If you are not the intended addressee of this 
> e-mail or the employee authorized to forward it to the addressee, be
> advised that any dissemination, copying, distribution or any other 
> similar activity is legally prohibited and may be punishable. If you
> received this e-mail by mistake please advise the sender immediately
> by using the reply facility in your e-mail software and delete 
> permanently this e-mail including any copies of it either printed or
> saved to hard drive.
> 
>  mBank S.A. z siedzibą w Warszawie, ul. Senatorska 18, 00-950 Warszawa, 
> www.mBank.pl, e-mail: [email protected]ąd Rejonowy dla m. st. 
> Warszawy XII Wydział Gospodarczy Krajowego Rejestru Sądowego, nr 
> rejestru przedsiębiorców KRS 0000025237, NIP: 526-021-50-88. Według 
> stanu na dzień 01.01.2016 r. kapitał zakładowy mBanku S.A. (w 
> całości wpłacony) wynosi 168.955.696 złotych.
> 
> 
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN
> 



----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to