|
this is the way I did it: P Centerfld B export d CenterFld PI 32766 opdesc d FieldToCtr 32766 options(*varsize) *-----------------------------------------------------------------* * Prototype for CEEDOD (Retrieve operational descriptor) *----------------------------------------------------------------- D CEEDOD PR D ParmNum 10I 0 CONST D 10I 0 D 10I 0 D 10I 0 D 10I 0 D 10I 0 D 12A OPTIONS(*OMIT) C CALLP CEEDOD(1 :DescType:DataType: C DescInfo1 : DescInfo2: Inlen: C *OMIT) c eval X = InLen the calling program could do this: c eval Field40 = CenterFld(Field40) HTH Ron -----Original Message----- From: owner-midrange-l@midrange.com [mailto:owner-midrange-l@midrange.com]On Behalf Of Wayne Achenbaum Sent: Thursday, December 30, 1999 1:11 PM To: MIDRANGE-L@midrange.com Subject: Procedure Problem I have been watching the debate on the correct way to code the centering procedure. I also can't seem to get it to work the way that I want to. What I would like to accomplish is, to allow a caller to use the following code. *--------------------------------------------------------------------* * Calling Module * *--------------------------------------------------------------------* C eval Ctrfld = $Center(Entryfld) The problem I am trying to overcome is that I want the calling module to be oblivious to size and not have to know about defining a varying size variable to center. I tried all the permeatations that I could conceive of. My module does not compile with Entryfld defined as 50a. Can Anyone help with the definition of the field as parameter 1? I tried Const (*varsize) that didn't work. How can I overcome the parameter type mismatch if at all. TIA The Following is a snip from a string utility service Program that works as long as the parameter is some variable of any size up to and icluding size 256 that is of type varying. *--------------------------------------------------------------------* * Prototype for $Center procedure * *--------------------------------------------------------------------* d $Center PR 256a varying d InputData 256a Varying Options(*Varsize) *--------------------------------------------------------------------* * $Center procedure * *--------------------------------------------------------------------* p $Center B Export * d $Center PI 256a Varying d Field_In 256a Varying Options(*Varsize) * d Half s 3s 0 d Len s 3s 0 d Size_In s 3s 0 d Start s 3s 0 d Field_Out s 256a * c ' ' Checkr(E) Field_In Len c Eval Size_In = %Len(Field_In) * c If %Found c Eval Half = %Div(Len:2) c Eval Start = (((Size_In) /2) c +1) - Half c eval %Subst(Field_Out : Start : Len) = c %subst(Field_In : 1 : Len) c Return Field_Out * c Else * c Return Field_In c EndIf * p $Center E +--- | This is the Midrange System Mailing List! | To submit a new message, send your mail to MIDRANGE-L@midrange.com. | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +--- +--- | This is the Midrange System Mailing List! | To submit a new message, send your mail to MIDRANGE-L@midrange.com. | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.