Re: Strings & Reports (2)
Posted in 1996
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---559023410-1804928587-848580717=:28524 Content-Type: TEXT/PLAIN; charset=US-ASCII On 19 Nov 1996, Ramiro Rela wrote: > Is there a function that returns a string of length N filled with char C > given C and N? (In I4GL 4.10 (Yeech!)) > Note: I know how to make it, I only want to know if there is one > already. I have function that made what you want. But this function is have comments in czech languague. (I replaced leastwise varibles names) I hope that it help you Sorry my english is poor. ! ! I forget attach this function ! ! Jiri Lisicky CD CIT Olomouc e-mail: lisicky@cit.cdrail.cz Jeremenkova 42 phone: +42-068-5507 318 Olomouc, Czech Republic ---559023410-1804928587-848580717=:28524 Content-Type: TEXT/PLAIN; charset=ISO-8859-2; name="dupl_char.4gl" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.SV4.3.94.961121135157.28524J@iclol> Content-Description: #______________________________________________________________________________ # dupl_char # # parameters : l_c_char # l_s_count max 255x # returning : l_c_string or l_v_string # globals : - # forms : - # # vrátí øetìzec ve kterém je "l_s_count" zopakován znak "l_c_char" # pokud je "l_c_char" mezera, musí být hostitelská promìnná typu VARCHAR #______________________________________________________________________________ FUNCTION dupl_char(l_c_char, l_s_count) DEFINE l_c_char CHAR, l_s_count SMALLINT, l_c_string CHAR(255), l_c_10znaku CHAR(10), l_c_100znaku CHAR(100), l_s_1 SMALLINT, l_v_string VARCHAR(255) # Takhle je to napsáno aby to fungovalo i pro l_s_count IS NULL IF l_s_count > 0 THEN ELSE RETURN "" END IF IF l_c_char IS NULL THEN RETURN "" END IF # pokud se mají duplikovat mezery, musí to být VARCHAR IF l_c_char = " " THEN # nainicializovat na délku 255 LET l_v_string = " ", " ", " ", " ", " ", " " RETURN l_v_string[1, l_s_count] END IF LET l_c_string = "" IF l_s_count >= 10 THEN LET l_s_1 = 5 LET l_c_10znaku = "" # vytvoø 5ti znakový øetìzec WHILE l_s_1 > 0 LET l_c_10znaku = l_c_10znaku CLIPPED, l_c_char LET l_s_1 = l_s_1 - 1 END WHILE # spoj dva 5ti znakové øetìzce = 10 LET l_c_10znaku = l_c_10znaku CLIPPED, l_c_10znaku CLIPPED END IF IF l_s_count >= 100 THEN LET l_s_1 = 5 LET l_c_100znaku = "" # vytvoø 50ti znakový øetìzec WHILE l_s_1 > 0 LET l_c_100znaku = l_c_100znaku CLIPPED, l_c_10znaku LET l_s_1 = l_s_1 - 1 END WHILE # spoj dva 50ti znakové øetìzce = 100 LET l_c_100znaku = l_c_100znaku CLIPPED, l_c_100znaku CLIPPED END IF # pøièítaní 100 LET l_s_1 = l_s_count / 100 IF l_s_1 > 0 THEN WHILE l_s_1 > 0 LET l_c_string = l_c_string CLIPPED, l_c_100znaku LET l_s_1 = l_s_1 - 1 LET l_s_count = l_s_count - 100 END WHILE END IF # pøièítaní 10 LET l_s_1 = l_s_count / 10 IF l_s_1 > 0 THEN WHILE l_s_1 > 0 LET l_c_string = l_c_string CLIPPED, l_c_10znaku LET l_s_1 = l_s_1 - 1 LET l_s_count = l_s_count - 10 END WHILE END IF # pøièítaní 1 LET l_s_1 = l_s_count IF l_s_1 > 0 THEN WHILE l_s_1 > 0 LET l_c_string = l_c_string CLIPPED, l_c_char LET l_s_1 = l_s_1 - 1 END WHILE END IF RETURN l_c_string CLIPPED END FUNCTION ---559023410-1804928587-848580717=:28524--