using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
Hi, maybe something like this can help you,
vspath="/opt/uat/eur/sources/sqr/file"
vsexit="N"
while (vsexit="N")
vspath=$replace(vspath,1,$syntax("/&*/"),"/",-1)
if($scan(vspath,"/")=$rscan(vspath,"/"))
vsexit="Y"
vspath=vspath[2]
endif
endwhile
Regards, Rafa.
Author: uniface8 (spanish_uniface@hotmail.es)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
Hi
Thanks for reply it seems $replace is a better way of achieveing my goal , thanks for pointing to that
however it gives output as
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 uat a c c c/ftp_make.sqr:1
$syntax("/&*/") how does it work ? I mean if we can trac patter like /opt/uat/eur/a/b/c/c/c/c/c/ ( /*/) then it will be done in one single command
text_to_view="-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/a/b/c/c/c/c/c/ftp_make.sqr:1"
text_to_view=$replace(text_to_view,1,$syntax("/&*/")," ", -1)
Author: lalitpct (lalitpct@gmail.com)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
That pattern finds /any character/ , if you do
$replace(text_to_view,1,$syntax("/&*/")," ", -1)
you replace /opt/ uat /eur/ a /b/ c /c/ c /c/ c/ --> uat a c c c/ftp_make.sqr
look at the example;
while (..)
$replace(text_to_view,1,$syntax("/&*/"),"/", -1)
endwhile
at the end of the first loop you get
/opt/uat/eur/a/b/c/c/c/c/c/ftp_make.sqr -->/uat/a/c/c/c/ftp_make.sqr
in the second
/uat/a/c/c/c/ftp_make.sqr-->/a/c/ftp_make.sqr
the third
/a/c/ftp_make.sqr-->/c/ftp_make.sqr
and finally
/c/ftp_make.sqr-->/ftp_make.sqr
Modify the instruction to end the while cause in 8.4 rscan not exist.
Regards, Rafa.
Author: uniface8 (spanish_uniface@hotmail.es)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
thanks it worked ,
Author: lalitpct (lalitpct@gmail.com)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
always running scan througl a long text results in unacceptable performance.
So at first separate the file so you work always with a single line.
if you use the current uniface version, there is a "scan from right side" $rscan to speed up processing.
Using an external file gives you the alternative to apply regular-expression replacement (outside of uniface)
and just load the resulting file.
Uli
P.S: If it is an external file you can use USEQREAD to read it line-by-line with lightspeed processing.
AND you reduce memory consumption from "the whole filesize" down to "the longest line"
Author: ulrich-merkel (ulrichmerkel@web.de)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
uniface version is 8.4 and hence it seems rscan is not working
Author: lalitpct (lalitpct@gmail.com)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
... and 8.4 is NOT the current version I mentioned
Author: ulrich-merkel (ulrichmerkel@web.de)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
From my personal archives: a "rightscan avant la lettre", which will work in Uniface version 8 and below:
entry RIGHTSCAN
params
string pi_string : IN
string pi_profile : IN
numeric po_position : OUT
endparams
variables
numeric lv_len_profile
string lv_characters
endvariables
length pi_profile
lv_len_profile = $result
length pi_string
po_position = $result - lv_len_profile + 1
lv_characters = pi_string[po_position:lv_len_profile]
while(lv_characters != pi_profile & po_position > 0)
po_position = po_position - 1
lv_characters = pi_string[po_position:lv_len_profile]
endwhile
end
Usage example:
call RIGHTSCAN(u_glab.ucrelsh, "_", lv_positie)
Author: Arjen van Vliet (arjen.van.vliet@uniface.com)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
uniface version is 8.4 and hence it seems rscan is not working
So it would have been better if you posted this in the Uniface 8 part of the forum...
Author: Theo Neeskens (tneeskens@itblockz.nl)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
i have moved it to 8.4
Author: lalitpct (lalitpct@gmail.com)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
because uniface is terrible slow handling longer texts and does not provide enough string manipulation routines I recommend external processing.
Using GAWK.EXE (open source awk for windows) a simple command line (use a SPAWN or activate OSCOMMAND) will do the job:
C:\\#mig_awk>gawk " {sub(/\\/.*\\//,'',$0);print}" < lalitpct.in
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 ftp_make.sqr
it's fast, straight foreward so why spend time and energy in doing it otherwise.
And if you got the info from a unix system, why not ask if someone can "pipe" this awk command into the preparation sequence ?
Uli
Author: ulrich-merkel (ulrichmerkel@web.de)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
Hello
i dont remember in what version uniface introduce the $itemcount , $itemnr but if these commands are available to your version you can simply translate your string in list and get the last element from list
vsFileName = "-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr"
;The ; is the golden ;
vsFullPath = $ItemNr($ItemCount($Replace(vsFullPath,1,"/","·;",-1)),$Replace(vsFullPath,1,"/","·;",-1))
;Result Is :
; vsFullPath = "ftp_make.sqr"
Author: jtsagara (jtsagara@logisoft.gr)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
Without $itemcount it is possibile to use
vsFullPath = $ItemNr(-1,$Replace(vsFullPath,1,"/","·;",-1))
to extract the last element from the list.
Author: Marco (marco.aquino@dedalus.eu)
using replace one in tricky way
Author: lalitpct@gmail.com (lalitpct)
In a variable below is the content and I want to remove the path shown for a file , and I would like to do in uniface
***00-RETURN: Listing Files:
-rwxrwxr-x 1 smt2uxb smt2uxb 28561 May 12 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr:1
-rwxrwxr-x 1 smt2uxb smt2uxb 28560 May 13 2010 /opt/uat/eur/sources/sqr/ftp_make.sqr
what I was thinking was
1)find first position " /" via scan command
2)Find end of the word found from above position
3)from the end to the left find /
4)Replace the above string from first " /" to the end "/" in the variable
5)loop until all of them are replaced
the second step I am unable to think of anyway to do it , please let me know if any one has got any idea to do or if they have done this before.
If you have better idea on this you can tell me that as well
Yes marco
this is possible after some patching ( if i remember well ) in uniface
cause in first edititions of uniface that can handle $itemnr ( i think ~ 8 or 9 ) had a bug with -1
cheers
Author: jtsagara (jtsagara@logisoft.gr)