You can change all the paremeters in a function call, just like in a
subroutine call.
There's a default file in BASIC. If you open a file without naming a
file variable, then you can use it in subsequent reads and writes:
OPEN 'VOC' ELSE DEBUG
READ LOGIN FROM 'LOGIN' ELSE DEBUG
Probably not a good idea from a maintenance standpoint though. You're
better off using a named common or passing around an array of relevant
variables.

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of 
> [EMAIL PROTECTED]
> Sent: Thursday, June 23, 2005 2:15 PM
> To: [email protected]
> Subject: RE: [U2] Custom Functions
> 
> 
> Wendy;
> 
> I tend not to use a FUNCTION unless I really need it for the 
> syntax. It helps me to remember that even when calling a 
> function you can change any of the passed variables - not 
> just the return variable (just like a subroutine). For some 
> reason I didn't think a function could do that, I'm not sure 
> if I saw that in the documentation or was just the way I 
> thought it should work.
> 
> In any case, I don't know how to give it a "default" file to 
> use. If you call it from UniQuery you have the @ID and 
> @RECORD variables to use but nothing really for a file. What 
> I did - that made a HUGE difference - was to put the filevar 
> into named common. Since the program could be called from 
> multiple accounts I also put the path into common as well.
> E.g.:
> 
> SUBROUTINE TESTSUB(RET_DATA, FILENAME, ID, FIELDNUM)
> COMMON /TESTSUB/ PATH, FILEVAR
> RET_DATA = ''
> IF UNASSIGNED(PATH) THEN PATH = 'Some path that will not 
> exist on any system' IF PATH # @PATH THEN
>   OPEN FILENAME TO FILEVAR THEN
>     PATH = @PATH
>   END ELSE
>     RETURN
>   END
> END
> READV RET_DATA FROM FILEVAR, ID, FIELDNUM ELSE RET_DATA = '' RETURN
> 
> This will help if you call it from UniQuery or multiple times 
> from another subroutine; I'm not sure how well it will work 
> if you called it multiple times from UniObjects. 
> 
> Colin Alfke
> From Calgary, AB where I can't believe we've been flooded for 
> a week....
> 
> >-----Original Message-----
> >From: Wendy Smoak
> >
> >From: "Ray Wurlod" <[EMAIL PROTECTED]>
> >>
> >> Try using the SUBR() function, as I mentioned in another post.
> >>
> >
> >Ouch.  Granted my function opens a file and [currently, for
> >debug] prints to the screen, but attempting to call it with 
> >SUBR from an I-Descriptor caused... '25945 Bus error' and left 
> >the session unresponsive.
> >
> >Leaving aside the I-Descriptor issue for a moment...
> >
> >Is there a way for it a function to "assume" that the last
> >file opened is the one I want to use?  I thought there might 
> >be an @FILE or something, the way there is @ID and you can 
> >have a 'default' file for READ.
> >
> >http://www.pickwiki.com/cgi-bin/wiki.pl?TreeTraversal
> >
> >I thought of opening the file in the calling program, and
> >passing a file handle instead of the filename.  But I need 
> >this to work when called [indirectly] from UOJ also, and 
> >historically I've seen 'Error 30102' if I attempt to pass file 
> >handles around in any code called from UOJ.
> -------
> u2-users mailing list
> [email protected]
> To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to