View previous topic :: View next topic
|
Author |
Message |
Saini19
New User
Joined: 12 Apr 2012 Posts: 23 Location: Singapore
|
|
|
|
I have a file (VB 32191 length) with 6 records ... where each record actually spans in 2 lines ... now I want to replicate each record 500 times ... making total as 3000.
The problem is, there are two fields referring them as "A" and "B". "A" field occurs at static 191'th byte in both rows of a single record, as well as between tags <TAGONE> and </TAGONE> that can occur at any position ... I want that for all 500 records, this field (a 10byte numeric field) should have unique values or else my logic will abend ...
Also, the field "B" appears between tags <TAGTWO> and </TAGTWO>, again at varying positions 9 byte alphanumeric, which again has to be unique for all records ...
This needs something in REXX I believe to replicate the records but I am totally unaware of REXX ... can anybody help me here please. |
|
Back to top |
|
|
Gnanas N
Active Member
Joined: 06 Sep 2007 Posts: 792 Location: Chennai, India
|
|
|
|
Please post sample input and output records, for clarification. Kindly use code tags. |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
If you're considering SORT, look at your documentation for OUTFIL REPEAT.
You can use a SEQNUM to make A in fixed position unique.
You need to check on PARSE for limits to the size of a field, but basically break it up by PARSEing it, then put it back together with two "tagged" values, (the B can also be a SEQNUM).
If you want to go that way, tell us which SORT product you use so that the topic can be moved.
You do want 500 copies of record one, followed by 500 copies of record two, etc...? |
|
Back to top |
|
|
Saini19
New User
Joined: 12 Apr 2012 Posts: 23 Location: Singapore
|
|
|
|
Gnanas N wrote: |
Please post sample input and output records, for clarification. Kindly use code tags. |
0000011100<TAGONE>111</TAGONE>DBABGBAMB<TAGTWO>ABC123</TAGTWO>EEEEEEEEEE
0000011100NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000002220000000<TAGONE>222</TAGONE>AFAFAFAF<TAGTWO>ABC123</TAGTWO>GGGGGG
0000022200MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
00000333<TAGONE>333</TAGONE>AFAFAFAFAAAAA<TAGTWO>ABC123</TAGTWO>GGGGGGGG
0000033300KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
like in this example, "A" field is a static 5th byte of length 3-bytes and also between TAGONE at different positions in various records
"B" field is between TAGTWO at varying positions of 6 byte alphanumeric |
|
Back to top |
|
|
Saini19
New User
Joined: 12 Apr 2012 Posts: 23 Location: Singapore
|
|
|
|
Code: |
0000011100<TAGONE>111</TAGONE>DBABGBAMB<TAGTWO>ABC123</TAGTWO>EEEEEEEEEE
0000011100NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000002220000000<TAGONE>222</TAGONE>AFAFAFAF<TAGTWO>ABC123</TAGTWO>GGGGGG
0000022200MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
00000333<TAGONE>333</TAGONE>AFAFAFAFAAAAA<TAGTWO>ABC123</TAGTWO>GGGGGGGG
0000033300KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
|
|
|
Back to top |
|
|
Saini19
New User
Joined: 12 Apr 2012 Posts: 23 Location: Singapore
|
|
|
|
Bill Woodger wrote: |
If you're considering SORT, look at your documentation for OUTFIL REPEAT.
You can use a SEQNUM to make A in fixed position unique.
You need to check on PARSE for limits to the size of a field, but basically break it up by PARSEing it, then put it back together with two "tagged" values, (the B can also be a SEQNUM).
If you want to go that way, tell us which SORT product you use so that the topic can be moved.
You do want 500 copies of record one, followed by 500 copies of record two, etc...? |
for your first query, we have DFSORT
for your second query, it can be in any order
order will not matter, just the uniqueness of these two fields matter |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
OK, before moving it we need to know if it may fly.
I can't see a maximum for FIXLEN in PARSE, so how about you have an experiment to see.
With your records, try a simple PARSE with FIXLEN=32000
Let us know. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
Quote: |
This needs something in REXX I believe to replicate the records but I am totally unaware of REXX |
just curious ...
if You are - as You say - totally unaware of REXX,
why in &heaven did You chose REXX for a solution ? |
|
Back to top |
|
|
Saini19
New User
Joined: 12 Apr 2012 Posts: 23 Location: Singapore
|
|
|
|
enrico-sorichetti wrote: |
Quote: |
This needs something in REXX I believe to replicate the records but I am totally unaware of REXX |
just curious ...
if You are - as You say - totally unaware of REXX,
why in &heaven did You chose REXX for a solution ? |
I just made a guess since I have heard a lot about REXX from my colleagues that it can do any wonder naive user you know
Anyways, will keep you all posted with what I get, though working with REPEAT on varying position field seems tough to me ... |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
and ... apart the <language>/<utility> used
what are the rules to create unique A and B values ? |
|
Back to top |
|
|
Saini19
New User
Joined: 12 Apr 2012 Posts: 23 Location: Singapore
|
|
|
|
enrico-sorichetti wrote: |
and ... apart the <language>/<utility> used
what are the rules to create unique A and B values ? |
No rules except that A is numeric in nature while B is alphanumeric. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
Your description is inconsistent with the data you provided
since at the end You will have 1500 different couples of records
the requirement about equality of TAGONE filed with the data at 6,3 cannot be satisfied
here is a REXX snippet that will do it
( the whole first 8 bytes will be considered as the <key>
Code: |
Trace "O"
signal on novalue name novalue
numeric digits 12
arbdgts = "0A1B2C3D4E5F6G7H8I9JKLMNOPQRSTUVWXYZ"
in.0 = 6
in.1 = "0000011100<TAGONE>111</TAGONE>DBABGBAMB<TAGTWO>ABC123</TAGTWO>EEEEEEEEEE"
in.2 = "0000011100NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
in.3 = "000002220000000<TAGONE>222</TAGONE>AFAFAFAF<TAGTWO>ABC123</TAGTWO>FFFFFF"
in.4 = "0000022200MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
in.5 = "0000033300<TAGONE>333</TAGONE>AFAFAFAFAAAAA<TAGTWO>ABC123</TAGTWO>GGGGGG"
in.6 = "0000033300KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK"
k1 = random(999)
k2 = random(10000,99999)
kd = random(1,999)
do 10
do i = 1 to in.0 by 2
j = i+1
ou.1 = substr(in.i,9)
parse var ou.1 h1 "<TAGONE>" . "</TAGONE>" t1
ou.1 = right(k1,8,"0") || h1 || "<TAGONE>" || k1 || "</TAGONE>" || t1
parse var ou.1 h1 "<TAGTWO>" . "</TAGTWO>" t1
ou.1 = h1 || "<TAGTWO>" || to_arb(k2) || "</TAGTWO>" || t1
ou.2 = right(k1,8,"0") || substr(in.j,9)
say ou.1
say ou.2
end
k1 = k1 + kd
k2 = k2 + kd
end
exit
logic_error:
call __log "******************************************************************"
call __log "** "
call __log "** Logic error at line '"sigl"' "
call __log "** "
call __log "******************************************************************"
exit
novalue:
call __log "******************************************************************"
call __log "** "
call __log "** Novalue trapped, line '"sigl"' var '"condition("D")"' "
call __log "** "
call __log "******************************************************************"
exit
to_dec:procedure expose arbdgts
trace "O"
parse upper arg arbn
base = length(arbdgts)
mult = 1
decn = 0
do d = length(arbn) to 1 by -1
work = substr(arbn,d,1)
decn = decn + mult * ( pos(work,arbdgts) - 1 )
mult = mult * base
end
return decn
to_arb:procedure expose arbdgts
trace "O"
parse upper arg decn
base = length(arbdgts)
arbn = ""
do while ( decn >= base )
work = decn // base
decn = decn % base
arbn = substr(arbdgts,work+1,1) || arbn
end
arbn = substr(arbdgts,decn+1,1) || arbn
return arbn
|
and here is the result
Code: |
0000038900<TAGONE>389</TAGONE>DBABGBAMB<TAGTWO>VE2</TAGTWO>EEEEEEEEEE
0000038900NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000003890000000<TAGONE>389</TAGONE>AFAFAFAF<TAGTWO>VE2</TAGTWO>FFFFFF
0000038900MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000038900<TAGONE>389</TAGONE>AFAFAFAFAAAAA<TAGTWO>VE2</TAGTWO>GGGGGG
0000038900KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000135800<TAGONE>1358</TAGONE>DBABGBAMB<TAGTWO>W0A</TAGTWO>EEEEEEEEEE
0000135800NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000013580000000<TAGONE>1358</TAGONE>AFAFAFAF<TAGTWO>W0A</TAGTWO>FFFFFF
0000135800MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000135800<TAGONE>1358</TAGONE>AFAFAFAFAAAAA<TAGTWO>W0A</TAGTWO>GGGGGG
0000135800KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000232700<TAGONE>2327</TAGONE>DBABGBAMB<TAGTWO>WQY</TAGTWO>EEEEEEEEEE
0000232700NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000023270000000<TAGONE>2327</TAGONE>AFAFAFAF<TAGTWO>WQY</TAGTWO>FFFFFF
0000232700MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000232700<TAGONE>2327</TAGONE>AFAFAFAFAAAAA<TAGTWO>WQY</TAGTWO>GGGGGG
0000232700KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000329600<TAGONE>3296</TAGONE>DBABGBAMB<TAGTWO>XIV</TAGTWO>EEEEEEEEEE
0000329600NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000032960000000<TAGONE>3296</TAGONE>AFAFAFAF<TAGTWO>XIV</TAGTWO>FFFFFF
0000329600MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000329600<TAGONE>3296</TAGONE>AFAFAFAFAAAAA<TAGTWO>XIV</TAGTWO>GGGGGG
0000329600KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000426500<TAGONE>4265</TAGONE>DBABGBAMB<TAGTWO>Y4S</TAGTWO>EEEEEEEEEE
0000426500NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000042650000000<TAGONE>4265</TAGONE>AFAFAFAF<TAGTWO>Y4S</TAGTWO>FFFFFF
0000426500MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000426500<TAGONE>4265</TAGONE>AFAFAFAFAAAAA<TAGTWO>Y4S</TAGTWO>GGGGGG
0000426500KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000523400<TAGONE>5234</TAGONE>DBABGBAMB<TAGTWO>YZP</TAGTWO>EEEEEEEEEE
0000523400NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000052340000000<TAGONE>5234</TAGONE>AFAFAFAF<TAGTWO>YZP</TAGTWO>FFFFFF
0000523400MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000523400<TAGONE>5234</TAGONE>AFAFAFAFAAAAA<TAGTWO>YZP</TAGTWO>GGGGGG
0000523400KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000620300<TAGONE>6203</TAGONE>DBABGBAMB<TAGTWO>ZQM</TAGTWO>EEEEEEEEEE
0000620300NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000062030000000<TAGONE>6203</TAGONE>AFAFAFAF<TAGTWO>ZQM</TAGTWO>FFFFFF
0000620300MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000620300<TAGONE>6203</TAGONE>AFAFAFAFAAAAA<TAGTWO>ZQM</TAGTWO>GGGGGG
0000620300KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000717200<TAGONE>7172</TAGONE>DBABGBAMB<TAGTWO>A0IJ</TAGTWO>EEEEEEEEEE
0000717200NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000071720000000<TAGONE>7172</TAGONE>AFAFAFAF<TAGTWO>A0IJ</TAGTWO>FFFFFF
0000717200MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000717200<TAGONE>7172</TAGONE>AFAFAFAFAAAAA<TAGTWO>A0IJ</TAGTWO>GGGGGG
0000717200KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000814100<TAGONE>8141</TAGONE>DBABGBAMB<TAGTWO>AA48</TAGTWO>EEEEEEEEEE
0000814100NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000081410000000<TAGONE>8141</TAGONE>AFAFAFAF<TAGTWO>AA48</TAGTWO>FFFFFF
0000814100MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000814100<TAGONE>8141</TAGONE>AFAFAFAFAAAAA<TAGTWO>AA48</TAGTWO>GGGGGG
0000814100KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000911000<TAGONE>9110</TAGONE>DBABGBAMB<TAGTWO>AAZG</TAGTWO>EEEEEEEEEE
0000911000NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000091100000000<TAGONE>9110</TAGONE>AFAFAFAF<TAGTWO>AAZG</TAGTWO>FFFFFF
0000911000MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000911000<TAGONE>9110</TAGONE>AFAFAFAFAAAAA<TAGTWO>AAZG</TAGTWO>GGGGGG
0000911000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
|
|
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
follow on ...
changing the k2 seed to
Code: |
k2 = random(900000000,999999999) |
will provide a longer TAGTWO field
resulting for example in
Code: |
0000009000<TAGONE>90</TAGONE>DBABGBAMB<TAGTWO>HCO05R</TAGTWO>EEEEEEEEEE
0000009000NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000000900000000<TAGONE>90</TAGONE>AFAFAFAF<TAGTWO>HCO05R</TAGTWO>FFFFFF
0000009000MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000009000<TAGONE>90</TAGONE>AFAFAFAFAAAAA<TAGTWO>HCO05R</TAGTWO>GGGGGG
0000009000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000027900<TAGONE>279</TAGONE>DBABGBAMB<TAGTWO>HCO080</TAGTWO>EEEEEEEEEE
0000027900NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000002790000000<TAGONE>279</TAGONE>AFAFAFAF<TAGTWO>HCO080</TAGTWO>FFFFFF
0000027900MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000027900<TAGONE>279</TAGONE>AFAFAFAFAAAAA<TAGTWO>HCO080</TAGTWO>GGGGGG
0000027900KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000046800<TAGONE>468</TAGONE>DBABGBAMB<TAGTWO>HCO0LE</TAGTWO>EEEEEEEEEE
0000046800NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000004680000000<TAGONE>468</TAGONE>AFAFAFAF<TAGTWO>HCO0LE</TAGTWO>FFFFFF
0000046800MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000046800<TAGONE>468</TAGONE>AFAFAFAFAAAAA<TAGTWO>HCO0LE</TAGTWO>GGGGGG
0000046800KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000065700<TAGONE>657</TAGONE>DBABGBAMB<TAGTWO>HCO0Q9</TAGTWO>EEEEEEEEEE
0000065700NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000006570000000<TAGONE>657</TAGONE>AFAFAFAF<TAGTWO>HCO0Q9</TAGTWO>FFFFFF
0000065700MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000065700<TAGONE>657</TAGONE>AFAFAFAFAAAAA<TAGTWO>HCO0Q9</TAGTWO>GGGGGG
0000065700KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000084600<TAGONE>846</TAGONE>DBABGBAMB<TAGTWO>HCO0VR</TAGTWO>EEEEEEEEEE
0000084600NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000008460000000<TAGONE>846</TAGONE>AFAFAFAF<TAGTWO>HCO0VR</TAGTWO>FFFFFF
0000084600MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000084600<TAGONE>846</TAGONE>AFAFAFAFAAAAA<TAGTWO>HCO0VR</TAGTWO>GGGGGG
0000084600KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000103500<TAGONE>1035</TAGONE>DBABGBAMB<TAGTWO>HCOAA0</TAGTWO>EEEEEEEEEE
0000103500NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000010350000000<TAGONE>1035</TAGONE>AFAFAFAF<TAGTWO>HCOAA0</TAGTWO>FFFFFF
0000103500MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000103500<TAGONE>1035</TAGONE>AFAFAFAFAAAAA<TAGTWO>HCOAA0</TAGTWO>GGGGGG
0000103500KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000122400<TAGONE>1224</TAGONE>DBABGBAMB<TAGTWO>HCOA3E</TAGTWO>EEEEEEEEEE
0000122400NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000012240000000<TAGONE>1224</TAGONE>AFAFAFAF<TAGTWO>HCOA3E</TAGTWO>FFFFFF
0000122400MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000122400<TAGONE>1224</TAGONE>AFAFAFAFAAAAA<TAGTWO>HCOA3E</TAGTWO>GGGGGG
0000122400KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000141300<TAGONE>1413</TAGONE>DBABGBAMB<TAGTWO>HCOAF9</TAGTWO>EEEEEEEEEE
0000141300NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000014130000000<TAGONE>1413</TAGONE>AFAFAFAF<TAGTWO>HCOAF9</TAGTWO>FFFFFF
0000141300MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000141300<TAGONE>1413</TAGONE>AFAFAFAFAAAAA<TAGTWO>HCOAF9</TAGTWO>GGGGGG
0000141300KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000160200<TAGONE>1602</TAGONE>DBABGBAMB<TAGTWO>HCOA8R</TAGTWO>EEEEEEEEEE
0000160200NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000016020000000<TAGONE>1602</TAGONE>AFAFAFAF<TAGTWO>HCOA8R</TAGTWO>FFFFFF
0000160200MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000160200<TAGONE>1602</TAGONE>AFAFAFAFAAAAA<TAGTWO>HCOA8R</TAGTWO>GGGGGG
0000160200KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000179100<TAGONE>1791</TAGONE>DBABGBAMB<TAGTWO>HCOAM0</TAGTWO>EEEEEEEEEE
0000179100NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000017910000000<TAGONE>1791</TAGONE>AFAFAFAF<TAGTWO>HCOAM0</TAGTWO>FFFFFF
0000179100MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000179100<TAGONE>1791</TAGONE>AFAFAFAFAAAAA<TAGTWO>HCOAM0</TAGTWO>GGGGGG
0000179100KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
|
for real execution You should change the
DO 10 to DO 1500 |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
With the size of your records, I'm sure PARSE will not work, so it is good you have some Rexx now.
There is a simple solution, though it may not suit your requirement. You could use FINDREP to destroy the original TAGONE and TAGTWO and then insert them in the first variable position on the relevant record. This makes them "fixed" in position, so simple to insert sequence numbers. However, TAGONE and TAGTWO will no longer be in their original positions, although it presumably will not affect the processing... |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
I hope that the TS will be able to understand it..
the code is pretty tight
disregard the previous snippets ,
( cut and paste syndrome struck again )
I pasted the increment of the values in the wrong place - outer loop instead of inner loop
( giving duplicate values for the <keys> )
here is the fixed code
Code: |
Trace "O"
signal on novalue name novalue
numeric digits 12
arbdgts = "0A1B2C3D4E5F6G7H8I9JKLMNOPQRSTUVWXYZ"
in.0 = 6
in.1 = "0000011100<TAGONE>111</TAGONE>DBABGBAMB<TAGTWO>ABC123</TAGTWO>EEEEEEEEEE"
in.2 = "0000011100NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
in.3 = "000002220000000<TAGONE>222</TAGONE>AFAFAFAF<TAGTWO>ABC123</TAGTWO>FFFFFF"
in.4 = "0000022200MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
in.5 = "0000033300<TAGONE>333</TAGONE>AFAFAFAFAAAAA<TAGTWO>ABC123</TAGTWO>GGGGGG"
in.6 = "0000033300KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK"
k1 = random(999)
k2 = random(900000000,999999999)
kd = random(1,999)
do 10
do i = 1 to in.0 by 2
j = i+1
ou.1 = substr(in.i,9)
parse var ou.1 h1 "<TAGONE>" . "</TAGONE>" t1
ou.1 = right(k1,8,"0") || h1 || "<TAGONE>" || k1 || "</TAGONE>" || t1
parse var ou.1 h1 "<TAGTWO>" . "</TAGTWO>" t1
ou.1 = h1 || "<TAGTWO>" || to_arb(k2) || "</TAGTWO>" || t1
ou.2 = right(k1,8,"0") || substr(in.j,9)
say ou.1
say ou.2
say ""
k1 = k1 + kd
k2 = k2 + kd
end
end
exit
logic_error:
call __log "******************************************************************"
call __log "** "
call __log "** Logic error at line '"sigl"' "
call __log "** "
call __log "******************************************************************"
exit
novalue:
call __log "******************************************************************"
call __log "** "
call __log "** Novalue trapped, line '"sigl"' var '"condition("D")"' "
call __log "** "
call __log "******************************************************************"
exit
to_dec:procedure expose arbdgts
trace "O"
parse upper arg arbn
base = length(arbdgts)
mult = 1
decn = 0
do d = length(arbn) to 1 by -1
work = substr(arbn,d,1)
decn = decn + mult * ( pos(work,arbdgts) - 1 )
mult = mult * base
end
return decn
to_arb:procedure expose arbdgts
trace "O"
parse upper arg decn
base = length(arbdgts)
arbn = ""
do while ( decn >= base )
work = decn // base
decn = decn % base
arbn = substr(arbdgts,work+1,1) || arbn
end
arbn = substr(arbdgts,decn+1,1) || arbn
return arbn
|
and the result
Code: |
0000072900<TAGONE>729</TAGONE>DBABGBAMB<TAGTWO>HBA2LN</TAGTWO>EEEEEEEEEE
0000072900NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000011860000000<TAGONE>1186</TAGONE>AFAFAFAF<TAGTWO>HBA2Y6</TAGTWO>FFFFFF
0000118600MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000164300<TAGONE>1643</TAGONE>AFAFAFAFAAAAA<TAGTWO>HBACFA</TAGTWO>GGGGGG
0000164300KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000210000<TAGONE>2100</TAGONE>DBABGBAMB<TAGTWO>HBACNQ</TAGTWO>EEEEEEEEEE
0000210000NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000025570000000<TAGONE>2557</TAGONE>AFAFAFAF<TAGTWO>HBA30H</TAGTWO>FFFFFF
0000255700MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000301400<TAGONE>3014</TAGONE>AFAFAFAFAAAAA<TAGTWO>HBA3G2</TAGTWO>GGGGGG
0000301400KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000347100<TAGONE>3471</TAGONE>DBABGBAMB<TAGTWO>HBA3PT</TAGTWO>EEEEEEEEEE
0000347100NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000039280000000<TAGONE>3928</TAGONE>AFAFAFAF<TAGTWO>HBAD19</TAGTWO>FFFFFF
0000392800MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000438500<TAGONE>4385</TAGONE>AFAFAFAFAAAAA<TAGTWO>HBADHD</TAGTWO>GGGGGG
0000438500KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000484200<TAGONE>4842</TAGONE>DBABGBAMB<TAGTWO>HBADRW</TAGTWO>EEEEEEEEEE
0000484200NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000052990000000<TAGONE>5299</TAGONE>AFAFAFAF<TAGTWO>HBA42L</TAGTWO>FFFFFF
0000529900MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000575600<TAGONE>5756</TAGONE>AFAFAFAFAAAAA<TAGTWO>HBA4I5</TAGTWO>GGGGGG
0000575600KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000621300<TAGONE>6213</TAGONE>DBABGBAMB<TAGTWO>HBA4TZ</TAGTWO>EEEEEEEEEE
0000621300NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000066700000000<TAGONE>6670</TAGONE>AFAFAFAF<TAGTWO>HBAE3O</TAGTWO>FFFFFF
0000667000MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000712700<TAGONE>7127</TAGONE>AFAFAFAFAAAAA<TAGTWO>HBAEJG</TAGTWO>GGGGGG
0000712700KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000758400<TAGONE>7584</TAGONE>DBABGBAMB<TAGTWO>HBAEW1</TAGTWO>EEEEEEEEEE
0000758400NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000080410000000<TAGONE>8041</TAGONE>AFAFAFAF<TAGTWO>HBA54R</TAGTWO>FFFFFF
0000804100MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000849800<TAGONE>8498</TAGONE>AFAFAFAFAAAAA<TAGTWO>HBA5L8</TAGTWO>GGGGGG
0000849800KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0000895500<TAGONE>8955</TAGONE>DBABGBAMB<TAGTWO>HBA5YC</TAGTWO>EEEEEEEEEE
0000895500NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000094120000000<TAGONE>9412</TAGONE>AFAFAFAF<TAGTWO>HBAF5U</TAGTWO>FFFFFF
0000941200MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0000986900<TAGONE>9869</TAGONE>AFAFAFAFAAAAA<TAGTWO>HBAFNJ</TAGTWO>GGGGGG
0000986900KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0001032600<TAGONE>10326</TAGONE>DBABGBAMB<TAGTWO>HBA604</TAGTWO>EEEEEEEEEE
0001032600NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000107830000000<TAGONE>10783</TAGONE>AFAFAFAF<TAGTWO>HBA66X</TAGTWO>FFFFFF
0001078300MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0001124000<TAGONE>11240</TAGONE>AFAFAFAFAAAAA<TAGTWO>HBA6PM</TAGTWO>GGGGGG
0001124000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0001169700<TAGONE>11697</TAGONE>DBABGBAMB<TAGTWO>HBAG1F</TAGTWO>EEEEEEEEEE
0001169700NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000121540000000<TAGONE>12154</TAGONE>AFAFAFAF<TAGTWO>HBAGH0</TAGTWO>FFFFFF
0001215400MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0001261100<TAGONE>12611</TAGONE>AFAFAFAFAAAAA<TAGTWO>HBAGRP</TAGTWO>GGGGGG
0001261100KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
0001306800<TAGONE>13068</TAGONE>DBABGBAMB<TAGTWO>HBA727</TAGTWO>EEEEEEEEEE
0001306800NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000135250000000<TAGONE>13525</TAGONE>AFAFAFAF<TAGTWO>HBA7IB</TAGTWO>FFFFFF
0001352500MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0001398200<TAGONE>13982</TAGONE>AFAFAFAFAAAAA<TAGTWO>HBA7TS</TAGTWO>GGGGGG
0001398200KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
|
|
|
Back to top |
|
|
Saini19
New User
Joined: 12 Apr 2012 Posts: 23 Location: Singapore
|
|
|
|
Thanks to Bill and Enrico, and everybody who gave me certain ideas. I will execute the code and keep you posted on output. |
|
Back to top |
|
|
Saini19
New User
Joined: 12 Apr 2012 Posts: 23 Location: Singapore
|
|
|
|
Well, thanks Enrico for the solution, however it is having two impacts.
First, you have used RIGHT function to change the bytes, which is forcing my first 5 bytes also to be "0". I wanted to retain the original data. I am able to figure out it's solution. So this issue exists no longer.
Second, the RANDOM function used is changing the length of my B field, which is having an impact. I am not able to resolve this issue. Can you please help here with a solution, that should make it more dynamic. In the sense that it should consume the same number of bytes as is present in the input record. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
before complaining with stupidities You should learn to post properly
( reread the whole topic from the beginning )
did You care to read my previous comments about the poor description of the requirements
as I already said there is a mismatch between the data shown and the description in words of the requirement ...
You said to repeat 500 hundred times to get 1500 <couples> of records
where the TAGONE must be numeric unique and must match <some part> of the <prefix key>
You defined as the unique part 3 three bytes,
with that assumption You cannot have uniqueness for 1500 <things>
second You told that
TAGONE content would be numeric up to 9 digits
TAGTWO content would be alphanumeric up to 10 chars
Quote: |
I want that for all 500 records, this field (a 10byte numeric field) should have unique values or else my logic will abend ...
Also, the field "B" appears between tags <TAGTWO> and </TAGTWO>, again at varying positions 9 byte alphanumeric, which again has to be unique for all records ...
now You change You mind ... |
given the above assumption the snippet posted satisfied the requirement
with the natural assumption that non <tagged> fields should be considered as fixed length
repost clearly a logical description of the requirement
so that nobody will wast time replying to something that is not what You really want
after that I will think if it is worth to spend my time to keep going on |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
Before complaining with stupidities you should learn to post properly. Reread the whole topic from the beginning.
Such good words, I thought I'd use them again after your latest stupidity (was deleted).
If you are unable to take benefit from such good words, then I suggest you go to someone at your site for assistance. It is up to you how you go about that, but if you genuinely expect someone to help you, then learn how to take advice when seeking it, even if the advice is not what you want, or to ignore the advice with grace. The advice was well-intended and whether you know it or not was the advice you needed at that point. |
|
Back to top |
|
|
|