|
|||||||
CatalystOne of the nice things about catalyst is that there are so many unexplored areas of it. Everybody uses the standard calls but it's sometimes interesting to ponder why certain facilities were included but others omitted, for example why have an Execute and a Perform, but not their PC equivalents? Anyway, in this short article I'll assume that you don't need to be told the basics (P, W, E, B, X, V codes et al. If you are not familiar with Catalyst and its usage then let me know and if needs be I'll expand on it in a later edition.) but that you may not be familiar with some of the more obscure codes and specifically with some of the more obscure code modifiers. First things first - it is possible to "Stack" catalyst calls by separating them with semicolons - 0001 DECLARE SUBROUTINE CATALYST 0002 CATALYST("X;P","SSELECT VOC;POPUPS*VOC") This has the effect of taking the first catalyst action specified, then the second then the third until all of the stacked code/command sets are exhausted. ModifiersIt is also possible to modify catalyst calls by adding another code after the main code concatenated directly onto it. These modifiers permit us to do some quite sexy things. = How many subroutines have you written to make a catalyst call to a popup and then take the value returned and put it in a DATA statement (this avoids the user choosing a value from the popup and then having to press return again to enter the data)? Well, this can be avoided by the use of the "=" modifier. Simply add an equals sign to the end of your code, and whatever would have come back in @ANS now comes back in DATA - DECLARE SUBROUTINE CATALYST CATALYST("P=","POPUPS*VOC") : A similar modifier is ":", which returns @ANS into @DATA (same as = but without the carriage return). R Saves the screen image and restores it when the catalyst call has been completed P Saves @PLAYBACK (See Readers' Clinic) M Adds @RM to the end of @ANS. (@RM can be used in conjunction with browse lists) C Clear the screen before proceeding. CodesS/L Some confusion arises among beginners to AREV between the use of the S and L codes. Quite simply, there is no difference. Both perform the same function, that of calling a subroutine with an optional branch label. The existence of both codes is a hangover from original system development when S was not going to allow a passed parameter and L was. O Opens the filename contained in WC_IS% to WC_SRC_FILE%. It can thus be used as the post prompt on the key field of a collector window if the collector window is to prompt for a file and then allow amendments of the records in that file. This code does not take a command. @ Adds the capture record nominated into @CAPTURE H The help code has so many permutations that it is worth its own article. One of the most useful codes though is HFT. The calling syntax is CATALYST("HFT","Main.rec,Browse.rec") This command looks into the SYS.HELP file for a record with the same key as Main.rec. It then displays this help record but if the user presses F2, the system looks for the second record specified as Browse.rec and treats this as a browse list, displaying a popup of additional help topics. To test this try the following CATALYST("HFT","ENTRY.EDIT,PAINT.TOPICS" )(Volume 1, Issue 1, Pages 4,9) |
|||||||
| |||||||