* animate2.cmd IF F Bill Weinman, 10 May 1983 In answer to Michael Cohn's Animate.cmd It would appear that the problem you were running into was dBASE's steadfast refusal to evaluate an expression as an argument to @ SAY. Really you can only have a variable or a literal as an argument to @ SAY. The routine that I am presenting here has only been tested under dBASE II version 2.4 (yet to be released by Ashton-Tate). Copyright (c) 1983, by: Bill Weinman, PO Box 60807, Los Angeles, CA 90060 pursuant to the following paragraph: Reserving the right to sell these routines myself in any form that I wish, I hereby donate this file in it's origional form as of 10 May 1983 to the public domain. You may do with it as you wish. TIP: Try turning of the terminal's cursor! ( ?? chr(27)+'.0' for the Televideo 950 and ?? chr(27)+'.2' to turn it back on ). 10 May 1983 Bill E. Weinman Business Computer Services P O Box 60807 Los Angeles, CA 90060 ENDIF F ***************************************************************** * initialization section set talk off set colon off erase store ' ' to string store 0 to col store 0 to colfin store 0 to row @ 10,10 say 'Enter the string to be animated: ' get string @ 11,10 say ' Enter the column to start in: ' get col pict '##' @ 12,10 say ' Enter the column to finish in: ' get colfin pict '##' @ 13,10 say ' Enter the line to animate on: ' get row pict '##' read clear gets erase store col+1 to initcol store trim(string) to string store len(string) to length * the "if not firsttime" within the "do while not done" loop * is to force dbase to read the entire routine into memory * before executing it. this eliminates any disk bound delays * in the middle of animation. store t to firsttime store f to done do while .not. done if .not. firsttime * the animation starts here do while (initcol-col) # length * first, evaluate the sub-string store $(string,1,initcol-col) to partial @ row,col say partial store col-1 to col enddo do while col > colfin @ row,col say string+' ' store col-1 to col enddo * a little flash store col+1 to col store 0 to wait * low is a logical switch used to control the * alternation of the flash (only for terminals * that support rev video or dual intensity) store t to low do while wait < 10 if .not. low set inte off @ row,col say string store t to low else set inte on @ row,col say string store f to low endif store wait+1 to wait enddo store t to done endif firsttime store f to firsttime enddo * rele firsttime, done, row, col, wait, string, partial, length, low set inte on return