######################################################################### # # This documents is a scratch pad - things talked about here # should be moved to manuals, and in some cases are just a bunch of # interesting ideas, or a reference to some information. # # The idea is that developers often won't have time to update 'propper' # documentation, so it is better to have a place like this where they can # just 'dump' at least something resembling a usefull thoughts. # # As things move from here to manual, they will be deleted here. # # # # ######################################################################### Acceptable values of key (in lowercase or uppercase letters) for the ON KEY block are: ACCEPT HELP NEXT or RETURN or ENTER DELETE INSERT NEXTPAGE RIGHT DOWN INTERRUPT PREVIOUS or TAB ESC or ESCAPE LEFT PREVPAGE UP F1 through F64 CONTROL-char (except A, D, H, I, J, L, M, R, or X) ================================================================== copile Aubit programs into 4Js custom C runner to get instant PDF, XML, Jabber, and RPC support. ==================================================================== 1) how do we compile 4glc with no ODBC? Obviouisly, all DEFINE LIKE will not compile... 4Js uses file to contain database schemma, so they can compile without database on local system - can be usefull. ================================================================= find way to embede HTML, like you embede C ================================================================= Variables for establishing path to find libraryes AIX LIBPATH HP-UX SHLIB_PATH Solaris and most other platforms LD_LIBRARY_PATH Windows PATH ============================================================== UESQLC - embeded SQL in C under GPL http://uesqlc.dedalo-ing.com ======================================================================== Use Apache mod_fastcgi to keep Aubit CGI programs running between requests ================================================================ Michael John Kuzminski [mkuzminski@ldcglobal.com] : Would it be possible to make a request for more character array functions that would allow you to maniuplate those character arrays? For example, an "instring" function which would locate the first occurence of a set of characters? I have developed my own, but I know that this would be beneficial as part of the language. btw, here is my code: FUNCTION instr(start_pos,searched,sought) DEFINE start_pos INTEGER DEFINE pos_found INTEGER DEFINE searched CHAR(512) DEFINE sought CHAR(128) DEFINE sought_len INTEGER DEFINE len_start_pos INTEGER DEFINE total_length INTEGER #Description: Function to search for a character or string within another string #Arguments : start_pos - position in searched to being searching; typically 1 # : searched - the string to be searched # : sought - the string or character you are looking for #Returns : the position where the sought string or character appears # : returns a 0 (zero) if not found, #Author : Michael Kuzminski #Date : 10-4-01 LET pos_found = 0 LET sought_len = LENGTH(sought) LET len_start_pos = start_pos + LENGTH(sought)-1 LET total_length = (LENGTH(searched) - LENGTH(sought)+1) #Error checking IF start_pos > LENGTH(searched) THEN ERROR "Function instr: Start position exceeds string length to be searched!" SLEEP 5 ELSE FOR start_pos = start_pos TO total_length IF searched[start_pos,len_start_pos] = sought THEN LET pos_found = start_pos EXIT FOR ELSE LET len_start_pos = len_start_pos + 1 END IF END FOR END IF RETURN pos_found END FUNCTION ================================================================= Move all temporary manual supplements from "docs" on SF to manual ================================================================= BUGS ? ------ ----------------------------------------------------------- test whenever error in adbload.4gl: WHENEVER ERROR CONTINIE don't work whenever error is ignored > I'm investigating the whenever error problem - > for now - if you use : > whenever any error continue > whenever sqlerror continue > whenever error continue > > > Can't remember - I'll put it on my 'todo' list. > > > I want to change that whole area anyway - its very messy at the ------------------------------------------------------------- downshift not working compiler stops after first error, why? CONNECT can't take variables as parameters. Theres a bug - it doesn't trim the username and password, so it logs you in as 'mike ' rather than 'mike'. intervals partially implemented and their 'UNITS'. There is still currently no maths allowed on datetime/intervals. (Ie no "00:03:00" + "00:02:00".) Its worth bearing in mind that the error numbers and codes in a4gl and i4gl will be different anyway... #this works fine OPEN SESSION s_id1 TO DATABASE ptest as user "postgres" password "pg" #this does not: # OPEN SESSION s_id1 TO DATABASE DSN_postgres as user "postgres" password "pg" #this does not compile at all # OPEN SESSION s_id1 TO DATABASE _variable(DSN_postgres) as user "postgres" password "pg" help files: No - it doesn't look for files anywhere but the current directory - this will need fixing.. aubit programs need to look for .afr not .frm for forms to avoid colision with i4gl when compiling in same directory fcompile should produce afr files. Is this fixed?: Another reason for a core dump on startup is if you haven't set SQLUID and SQLPWD as environment variables, and you're accessing a database.. ============================================================= add #include - see note about include in amake docs ============================================================== asql_yacc ANSI-compliant SQL parser (LEX,YACC,C) cfuncts functions for use in 4GL, including a Soundex routine (C) m4gl m4 macro to provide define/include for 4GL myexport replacements for dbexport and dbimport (KSH,AWK) sql_yacc SQL parser (LEX,YACC,C) sqlfmt 4GL cross-referencing program (C) ========================================================================= adbload: "where are you going to get a list of tables from ?" > If your doing an informix only program - you can rely on using systables. If > you're doing something more generic - you won't be able to. PG have systable equivalent (thanks Mr Sonebraker!) Then again, see SQL_ACCESSIBLE_TABLES at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcsqlgetinfo.asp > > Which I don't think you can't do. If ODBC 3.0 can - then fine. > > But what are the ODBC calls to do it so I can add them.. > > http://www.dbmsmag.com/9604d53.html > http://msdn.microsoft.com/library/ (Data access->MDAC->ODBC) ============================================================ On Sat, 21 Jul 2001, Andrej Falout wrote: >I found several posts where you discussed insert cursors; Quick >question is: Is there a way to implement Informix insert cursors via >ODBC (Aubit 4gl) ? Not that I know of, but that is far from saying that it doesn't exist. About the only offer I can make is http://www.informix.com/answers Looking at index in the CLI 2.5 manual, under INSERT, it mentions SQLParamOptions(). The manual page for SQLParamOptions() mentions 'bulk inserts'. ------------------------------------------------------ Note that message files are specified in full - no implied extension - where as form files are not specified in full - the extension is implied. Now, you could sensibly ensure that the extension for a message file is in fact implied for Aubit -- that would be an improvement. ------------------------------------------------------- > You could also use this technique to define names such as fgiusr.c vs > fglExt.c for the p-code runners. Of course, it would be best if the > p-code runners didn't have to be recompiled to add extensions; it should > be able to dynamically load a shared library specified on the command > line (or maybe in an initialization call made at the start of a program, > such as: > > CALL a4gl_load_ccode_library("myname.so") > > and then collect a well-known symbol from that library which is a > pointer to the array of structs defining the function names and pointers > for the I4GL code in the library. Like Perl, Tcl/Tk, PHP, etc do. I'm > not sure whether the function call will work -- it depends on whether > all symbols have to be resolved before the code starts running (as in > Classic 4GL p-code) or not (as in Dynamic 4GL). ================================================================== how to strip executables (and libraries) of any not called functions? ==================================================== Subject: Re: random value with 4GL From: Scott MacKenzie Date: Thu, 02 Aug 2001 12:07:32 -0600 Organization: =?iso-8859-1?Q?Din=E9?= College I dunno, rseed looks like a hash function, not a prng function. Ronald Cole wrote: > > "Andrew Hamm" writes: > > Danny De Koster wrote in message <9k8snq$1i88$1@rivage.news.be.easynet.net>... > > >I think that I once read about a function 'random'. I searched overall but > > >no trace of this function. Did I dream about it of does it exist. > > >Any information will be nice. > > > > Yup - you're dreaming ;-) > > 4GL does not have a random function, but it would be trivial to link one > > into the runner. Here's an interface to the standard C rand and srand > > functions: > > I've used this code successfully. I think I snagged the basic > algorithm from the C faq. The trick is finding a good source for the > initial seed. Maybe you can adapt one of the 4gl "datetime to > number-of-seconds-since-midnight-1/1/70" functions posted here recently > if you're in a pinch... > ------------------------------------------------------------------------------- > DEFINE > rseed INTEGER > > FUNCTION seed(s) > > DEFINE > s INTEGER > > LET rseed = s > > END FUNCTION > > FUNCTION rand() > > DEFINE > hi INTEGER, > lo INTEGER, > test INTEGER > > LET hi = rseed / (2147483647 / 48271) > LET lo = rseed MOD (2147483647 / 48271) > LET test = 48271 * lo - (2147483647 MOD 48271) * hi; > IF test > 0 THEN > LET rseed = test; > ELSE > LET rseed = test + 2147483647 > END IF > RETURN rseed / 2147483647 > > END FUNCTION > > -- > Forte International, P.O. Box 1412, Ridgecrest, CA 93556-1412 > Ronald Cole Phone: (760) 499-9142 > President, CEO Fax: (760) 499-9152 > My GPG fingerprint: C3AF 4BE9 BEA6 F1C2 B084 4A88 8851 E6C8 69E3 B00B -- ( ______ )) .--- Scott MacKenzie; Dine' College ---. >===<--. C|~~| (>--- Phone/Voice Mail: 520-724-6639 ---<) | = |-' `--' `- Email: scottm@crystal.ncc.cc.nm.us -' `-----' ============================================================= Things to implement in makefiles: #foo:= a b c #bar:= $(subst $(space),$(comma),$(foo)) ### bar is now `a,b,c'. #$(basename names...) #find_files = $(wildcard $(dir)/*) #dirs := a b c d #files := $(foreach dir,$(dirs),$(find_files)) #$(if condition,then-part[,else-part]) =============================================================== see database engine specific funcions from 4Js fgldbutl.4gl - how 4Js detects different engines ================================================================== library collections: Make it: 4glpc a.4gl b.4gl c.4gl -o intermediate.aox Use it: 4glpc new.4gl intermediate.aox -o outputfile.4ae > > Won't this report missing MAIN when linking, since it will try to generate > > executable, and there will be no MAIN on any of this 4gl files? > > > > Normally the .o on the -o line will suppress the final linking stage... So I'll need to apply same code used for *.o in 4glpc to *.aox ======================================== > > > >"order of their appearance in the FORMAT section" > > > > I've put in a fudge for this - it will take the order they are supplied in > the parameter list if they are not explicitly defined. > This will allow a compile - but this may not produce the expected results on > execution. > > > As the object of this exercise was to get it to compile - fixing this can be > left until afterwards! ================================================================== what happened to A4GL Wizard and program templates code? Nothing - they are 'on hold' Can you please send me that to include in CVS? ========================================================= missing code and dummy functions: > > I stuffed dummy functions in builtin.c > > > > aclfgl_startlog (char *filename) > > aclfgl_errorlog (char *string) > > aclfgl_showhelp (int helpnumber) Also added Dummy function for DEFER QUIT def_quit() to lib/fglwrap.c /// in ERR_GET(status) implemented????? > >FIXME: not coded > > > > There are a few 'exitwith("Not Implemented")'s knocking around for this kind > of thing - but they are in the library - not in the compiler. > > I'll do an audit sometime soon to make sure everything in there outputs > something (even if it is just a FIXME warning). ================================================================== Jabber/IksEmEl libs: /usr/local/include/iksemel.h /usr/local/lib/libiksemel.la /usr/local/lib/libiksemel.so /usr/local/lib/libiksemel.a ranlib /usr/local/lib/libiksemel.a ldconfig -n /usr/local/lib Libraries have been installed in: /usr/local/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /usr/local/bin/JabberX /usr/local/share/JabberX/inprogram.help JabberX --help for command line options. Configuration: -------------- JabberX read its configuration from ".JabberXrc" file in your home directory (you can change this by --config command line argument). Format of the file is naturally XML. Here is an example: dean@unseen.edu bornToRune /home/dean/logs/JabberX.xml and tags are evident. All the incoming/outgoing XML data is stored in (useful for debugging). If you left it empty, logging is disabled. ldd /usr/local/bin/JabberX -------------------------- libnsl.so.1 => /lib/libnsl.so.1 (0x4001a000) libdl.so.2 => /lib/libdl.so.2 (0x4002f000) libm.so.6 => /lib/libm.so.6 (0x40033000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004f000) libncurses.so.4 => /usr/lib/libncurses.so.4 (0x4007c000) libiksemel.so.0 => /usr/local/lib/libiksemel.so.0 (0x400b9000) libc.so.6 => /lib/libc.so.6 (0x400c0000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) ========================================================================= Take a look at ONC_RPC.tgz from Datafocus for nutCracker. ftp://ftp.datafocus.com/reskit3/libs+utils/RPC/ONC/ They have a source code available for download which is patched to compile with gcc and MSVC under nutCracker environment. May be it will help you to solve the rstat and rstat_svc issues. The DCE RPC source code also available from them at: ftp://ftp.datafocus.com/reskit3/libs+utils/RPC/DCE/ Reagrds Suhaib >the new version of Sun RPC 4.0 on >ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin32/porters/Vinschen_Corinna/B20 > >named > sunrpc-4.0.cygwin1.README > sunrpc-4.0.cygwin1.bin.tar.gz > sunrpc-4.0.cygwin1.src.tar.gz > >contains the missing patch to xdr_float.c for working float >support in cygwin. Many thanks to > Rafael Rodriguez Pappalardo >for contributing the patch. > >Also in case of xdr_float, send further patches or complaints >to me, please. > >The problem in compiling rstat and rstat_svc isn't solved yet. >Does anyone have an interest in giving it a try? > >Regards, >Corinna ==================================================================== FIXME: why is this not ASCII grapgics like on Unix? ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ Hello World ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ =================================================================== I've now added IN and EXISTS as valid 4GL expressions. This means you can now : IF a in (1,2,3) THEN IF a not in (1,2,3) THEN IF a in (select tabid from systables) THEN IF exists (select * from systables where tabid=1) THEN IF NOT exists (select * from systables where tabid=1) THEN should all now work.. [ For ones using SQL - at the minute - you can't use any variables in the SQL.. I'll fix this soon.. ] (Is MATCHES allowed in 4gl ?) MATCHES should already be in there... IF exists (variable_name ) THEN - is NOT implemented =================================================================== > >1) "enable" keyword found in tools/test/gui > > > > enable cal > > enable a1,a2,a3,b1,b2,b3,c1,c2,c3 > > > > please describe usage for manual > > These enable and disable fields in GUI mode (see Plexus manuals - > its in there) ==================================================================== > >2) .xpm picture format > > > > How is this format generated. > > Can we use png, jpg, gif, bmp...? > .xpm is the X format, > I think we can use the others - but I need to go back to my GTK-LIST stuff > to find out how! -------------------------------------------- > >3) bug: forms using WIDGET="pixmap" core dump is pictures are not found. > > I'll investigate.. > ---------------------------------------------- Mark D. Stock wrote: > Jonathan Leffler wrote: > > tyson_oswald wrote: > > > I am trying to connect to an Informix-Turbo 3.1 database from a > > > Informix Dynamic Server 7x. Everything seems to work but when I goto > > > connect to it I get error 408: Invalid message type received from the > > > sqlexec process. What does this mean I read in the Informix error > > > index that it has something to do with the database and the libraries > > > having trouble communicating. I also get this error when trying to > > > connect to the local database. By the way, I'm new to installing > > > informix. > > > > Where to start? We're going to need some platform details, and more > > precise version numbers, probably. Not being able to connect to the > > local database means there's a big setup problem of some sort. > > > > More seriously, the Turbo 3.1 version has me completely puzzled. > > Unless my memory is failing me (always a possibility), Turbo was > > only available in versions 1.10.03x for x in a range of upper-case > > letters (such as A..M). It is also very, very obsolete. > > I seem to remember working with Turbo 4.00. I think it was this > version that Plexus added multi-media support to and which Informix > bought from them and released as OnLine 4.00. But I could be wrong. > I certainly don't remember version 3.1 either, but that's not to say > it didn't exist. There were version 3 products around, but most > seemed to skip from 1.10/2.10 to 4.00 for some reason. > > Memories hey? If only we could remember them! :-) Ancient history remembered through the haze... In the beginning was C-ISAM, and then the original Informix product, which reached version 3.30 on Unix, and apparently 3.60 on DOS. This product did not use SQL. Then Informix-SQL 1.10 was released, with no support for NULLs; this was released in 1985 or early 1986, I believe. Then Informix-SQL 2.00 and Informix-4GL 1.00 were released in mid-1986; C-ISAM and ESQL/C had release numbers 3.00, I believe. This was also the point at which I started working with Informix products. My first task was to learn enough to be able to teach I4GL and ISQL 2.00, only to find that the machine I was to use for the course had ISQL 1.10 on it (it was a Z8000 box, and the superuser was called zeus, not root). Then Informix-SQL 2.10 and Informix-4GL 1.10 were released, and I think this was when I4GL-RDS and I4GL-ID appeared. Since Informix 3.30 was still relatively recent, the next versions were called ISQL 2.10.03 and I4GL et al 1.10.03 on Unix to avoid the ineveitable confusion if it was called Informix SQL 3.00; I believe the versions were 2.10.06 and 1.10.06 on DOS. Also, Informix-Turbo 1.10.03 was released, and it was pointed out as a future direction that SE would be separated from the ISQL and I4GL tools -- until then, the engine had always been distributed with ISQL, I4GL and I4GL-RDS (but not ID since you needed RDS to make any use of ID). To avoid confusion with Informix 3.30, the subsequent release was version 4.00 of Informix-SE, Informix-OnLine, ISQL and I4GL (and C-ISAM and ESQL/C) - there was never a 3.x version of the main products other than (perhaps) C-ISAM and ESQL/C. It was also at about this point that the Tools and Servers groups were split apart. Now, Plexus certainly had a hand in the Turbo to OnLine transition, but I don't know what versions they used -- they may even have had a 3.1 Turbo product, as the original questioner mentioned it. I don't know, and I don't think the original questioner has chimed in again to help clarify what they've got. It is safe to assume that any Turbo product is seriously out of date -- OnLine 5.00 was released effectively in January 1991 (officially 30th December 1990 or thereabouts), and there was a version 4.10 between 4.00 and 5.00. As to the connection question -- the revised opinion is that you should be able to use a network connection to an I-Net that matches the version of Turbo. I'm not wholly sure when I-Net arrived on the scene; I-Star definitely arrived with 4.00 and OnLine, but I-Net probably pre-dates that. However, it is not going to be officially supported, and an upgrade would be recommended. -- Jonathan Leffler (jleffler@informix.com, jleffler@earthlink.net) Guardian of DBD::Informix v0.62 -- see http://www.perl.com/CPAN #include =================================================================== I'm just going through this very topic in my text book (Discovering Computers, Shelly Cashman Series, 2001 edition), and here's how the book classifies the programming languages: "1GL - Machine Language 2GL - Assembly Languages 3GL - High-level languages, are machine-independent, use English-like words; require the program to tell the computer not only WHAT to accomplish, but also HOW, therefore often called procedural languages; use a compiler or interpreter to translate the source code into machine language 4GL - use English-like statements; are NON-PROCEDURAL languages. The programmer only specifies WHAT the program accomplish without explaining HOW. Many 4GLs work in combination with a database. Example: SQL 5GL, or Natural Languages - do not have to follow a specific set of rules and syntax, like 4GLs. Are often associated with expert systems and AI. Popular in the medical field, but are not widely used in business applications." By the way, the book is being very nice to Cobol, and it states that ..."Cobol is one of the more widely used procedural programming languages for business applications. Although Cobol programs are often lengthy, their English-like statements make them easy to read, write, and maintain... The most popular personal computer Cobol program is Micro Focus Personal Cobol, which supports both procedural and object-oriented programming..." 3GLs are third-generation languages, such as BASIC, Cobol, or Fortran. They were more advanced than "first generation" machine languages and second generation assemblers. 4GLs, originally defined as languages that could offer a ten-fold (or was it a hundred-fold?) increase in productivity relative to 3GLs, still exist in forms such as Progress 4GL, Informix 4GL, Forte 4GL, Cognos' PowerHouse 4GL, and Information Builders' FOCUS 4GL. More than a decade ago, Japan's MITI launched a 5GL language project with the goal of embedding AI into programming, but the effort fizzled. INFORMIX-4GL: development environment composed by Menus (GUI generator), Forms (4GL code generator), ID (debugger), QuickStep (state machine) and a set of interfaces with C, Cobol, Adam Fortran. INFORMIX-OpenCase: software development environment based on ToolBus (a software bus), ToolKit (interface with INFORMIX-4GL) and Encapsulator. ------------------------------------------------------------------------- At that time, the product had a table-oriented, non-SQL C interface that used the data dictionary, but otherwise it was like C-ISAM. This was also in the non-SQL product, though I can't remember if it was in the SQL product. Clearly, the SQL product needed a pre-compiler based product that provided all of the SQL syntax and cursors to C programmers. Chris Maloney and I felt that C was still too low level for most programmers of data processing applications. We designed Informix-4GL as an elegant combination of Betty Chang's Perform screen package, Roy's SQL engine, and Bill's report writer, sewn together with a language that would provide powerful leverage of the data dictionary. This idea worked very well, and I am still very proud of that product. It allowed us to succeed when larger companies like Oracle finally came to the UNIX market in a serious way in the late 1980s. http://www.informixhandbook.com/ Chris Maloney and Roger Sippl - co-designed Informix-4GL based on: Betty Chang - Perform screen package Roy Harrington - SQL engine (wrote a smaller UNIX clone, Cromix) Bill Hedge - ACE report writer Chris Maloney Roger Sippl Betty Chang Roy Harrington Bill Hedge Maloney created the specification for the Informix flagship product Informix-4GL and led the development team for the Informix database data access system. Later he was responsible for development of Viewpoint, a Windows based tool set for "non-programmers" and directed a 100 person development group responsible for Informix's "shrink wrap" business products. At Pencel, Maloney is responsible for product development. http://www.pencel.com/company/team.htm ====================================================================== On Friday 23 November 2001 8:25 am, Brett Geer wrote: > Now, can we call gtk functions directly and imbed the values to call > the 4gl functions? that'd be real cool. Of course you can - you've just got to get the GtkObject associated with the field in question - which can be done using : ID_TO_INT( field_name) eg (and untested). DEFINE obj integer LET obj=ID_TO_INT(myfield) code gtk_entry_set_text (obj, "Test"); endcode ======================================================================= menuhandlers - not currently for text mode - when? Formhandlers and menuhandlers are autonomous units - ie you can have multiple forms open - multiple menus. This is easy to do in GTK and windows etc - because they are based on message passing and callbacks. The TUI is not... It may be possible to have them - but how would you switch between windows ? Do we assume they have a mouse ? Do we dump the current TUI - because that works with loops rather than callbacks.. I don't even think you can use the ncurses form library with callbacks - so do we rewrite that too ? It all starts to get very very messy.. -- Mike Aubury ===================================================================== + XDP AD32, Developer's Guide XDP AD32, Windows 4GL Statements + XDP AD32, Windows 4GL Functions XDP AD32, Troubleshooting and Error Messages Formhandler This section manipulates and exchanges data with a form. Each formhandler section begins with the statement FORMHANDLER name and ends with the statement END FORMHANDLER. A formhandler is active as long as its form is open. Unlike functions, formhandlers cannot have input or return parameters. For more information on formhandlers, see “The Handler Routines” on page 141. Menuhandler This section contains Windows 4GL statements that accept input from menus and programmable keys. Each menuhandler module begins with the statement MENUHANDLER name and ends with the statement END MENUHANDLER. A menuhandler is active as long as its menu is displayed. Unlike functions, menuhandlers cannot have input or return parameters. For more information on menuhandlers, see “The Handler Routines” on page 141. DDEhandler This section processes all messages exchanged via a Dynamic Data Exchange (DDE) between a client application and a server application. There can only be one DDEhandler in an AD32 application. A DDEhandler routine begins with the statement DDEHANDLER and ends with the statement END DDEHANDLER. For more information on DDE, see the Dynamic Data Exchange chapter starting on page 247. curr_file_name CHAR(13) Current 4GL file name. curr_line_no CONST Current 4GL line number; curr_line_no is actually a CONST, but behaves like a variable in that the value is equal to the current line number. err_file_name CHAR(13) 4GL file name where an error occurred. err_line_no SMALLINT 4GL line number within the file where an error occurred. Use the user interface data types to access objects created or defined in the UIBuilder. FORM A variable with the type FORM identifies a form, as defined in UIBuilder. The predefined variable curr_form, used only within a formhandler, refers to the form attached to that formhandler by an OPEN FORM statement. STATUSBOX Variables of type STATUSBOX identify a status box, which can be defined in UIBuilder or Windows 4GL code. ====================================================================== Perl code version ----------------- 1) Status ------ The perl stuff is experimental and no where near fully functional - for example - I'm still working on getting function calls to work ! 2) Prerequisites ------------- Install Perl (www.perl.org) , and then Swig (http://www.swig.org/) you need to compile swig up from source: ./configure make make install 3) Make aubit 4gl Perl-generating compiler and libraries ----------------------------------------------------- cd $AUBITDIR make perl this will create $AUBITDIR/bin/4glc_perl compiler, Perl libraries and compile up the swig interface and copy it to the right places. 4) Ussage: To compile 4gl program to Perl: 4glc_perl hello.4gl This will generate hello.pl, to run $ perl hello.pl - or - $ chmod 777 hello.pl $ ./hello.pl > By what i understand the generation modules (compile_c and compile_perl) > have the same functions and when we link we define the target language. > > This implies that we can only link one generator each time to the parser. Yes - for now - but I'll be doing a compile_dl eventually which should be retargetable for those with shared library capabilities (most modern Unix's and Windows via DLLs).. --------------------------------------------------------------- 18:39:18 root@aptiva /usr/aubit/aubit4glsrc/tools/test# perl test_build.pl Can't locate aubit4gl.pm in @INC (@INC contains: /usr/lib/perl5/5.00503/i386-lin ux /usr/lib/perl5/5.00503 /usr/lib/perl5/site_perl/5.005/i386-linux /usr/lib/per l5/site_perl/5.005 .) at test_build.pl line 2. FIME: We need to install aubit4gl.pm in perl modiles directory ! =========================================================== Use code/endcode blocks or shared library calls... CODE call_some_jabber_c_function ENDCODE or - wrap that up in 4gl : FUNCTION call_some_func(...) code call_some_c_func endcode END FUNCTION - compile this '--as-dll' 4glpc --as-dll some_module.4gl -o some_module.so then use CALL SHARED "call_some_func" IN "some_module.so" (...) RETURNING ... [Without really messing with the compiler - it would be hard to implement as a language construct (as andrejs original shows).] ============================================================ add jabber readme to manual =========================================================== > To mark a tag you can use: > cvs rtag 0_3 : Marks a tag in the repositpry whithout needing for co. > cvs rtag 0_3 -D : Marks a tag in the repository in a specific date. > cvs tag 0_3 : Mark a tag but you need a co before and then a commit > > For the branches, i think that since this is by default a sticky tag you just > need to create the branches, but im not shure. ========================================================== Hi Jonathan, can we continue on the Aubit list, please? > >"either"? You have more then one? > > Of course. On my... :-) > I'm only referring to the ones that I've written. I'm not > counting Dave Snyder's version (db4glgen, available at the IIUG -- I'm > sorry, I didn't mean to swear at you), :-O Can you please compare it with other 4gl code generators you know about? > or the never-published M4-based > system (igen) written by Informix staff in their spare time that I have > copies of. Hmm, M4 is good, is it not? Can we take a look at this too? > And then there's Fourgen, and ... Ahhh, and New Zealand's own, 5GL... > >Of course they would be of interest! How come I never heard anything > >about them? Where are you hiding them? > > I've not made them all that generally available previously. > They're hiding on my computers, very dormant for the most part. This is about to change. Oh, I love this... > >OK, can you please explain what's on offer, if you have documentation, > >and send it to me.... > > Two possible products: > > FGLBLD - Program to generate Perform-like programs with good > extensibility. I've used this for real on some fairly > serious systems, and it helped me churn out a lot of code > very quickly. It uses I4GL to collect the information and > some shell/sed scripts to generate the code. > > FGLGEN - Meant to be the next generation of FGLBLD, with a little > language to describe what you want built and a system of > template files (and immense configurability) to outline the > code. I've used it a bit; it works OK. But it was > intended to do more complex things such as handle > master/detail forms or multi-screen input, and I didn't get > around to building enough intelligence into it before > moving to the USA, and I've done essentially nothing to it > since then. Ok; so if I'm reading this correctly, BLD thing is good to be used as is, to quickly get Perform like functionality, with very little coding. GEN thing is supposed to be much more, but needs more work, will require more coding to get results, but it will be much more powerful. If this is correct, I would like them both in Aubit, since they cover two related, but ultimately different tasks. BLD would probably make a nice extension to adbaccess code we already have in CVS, approaching "isql" functionality. GEN would probably be a standalone tool, when it's finished, possibly integrated into your IDE code. How does that sound? > I've attached the documentation I have. The FGLBLD stuff is based on > troff and was last modified in 1990 - I told you these have been > dormant! Some of the files have .doc extensions; although MS Word > probably did exist back then, it didn't as far as I was concerned. Ok, I converted fglbld.big to PS/PDF/text - html don't work for some reason 16:23:19 root@aptiva /usr/aubit/fglcodegen/BLDManual# groff -Thtml fglbld.big groff: can't find `DESC' file groff:fatal error: invalid device `html' All is in fglbld.big, right? All formatting lost unfortunately. See attached. If you can confirm this is all, I can reformat it in HTML manually. > The FGLGEN documentation is plain text, despite having similar *.doc > file names. Once upon a time, they would have been converted to troff. > Nowadays, I'm not sure what I'd use - HTML or XML/DocBook probably. I If it's OK with you, I can translate them to HTML fairly quickly. > did some work on fglgen back in 1998, but didn't get around to > completing the conversion to use ANSI prototypes, for example. The > previous changes were circa 1992 or 1993. When I was first developing > it, the ANSI compilers were only just starting to be available, and > portable code certainly did not use prototypes unconditionally. So, > again, you can see that this has been dormant for a long time, and > that's why you've not heard about them before. Must say, looks impressive to me. I expect we will have no problem generating sufficient interest to get the work needed started. > >Then again, you have Aubit CVS account, so feel free to pump it in - if > >you prefer. > > For the time being, let's see if you can make head or tail of it and > whether it is worth putting into Aubit4GL. I would say, this is exactly what I was looking for. Initially we should give it new CVS branch, like : aubit4glsrc aubit4gldoc aubit4glwww hy4gl fgldocgen - Sergio's tools fgllib - Starting with Power-4gl .. fglgen/fglgen fglgen/fglbld But ultimately, I would like to see fglbld in adbaccess, or at least for this to be an option, and fglgen integrated in your IDE, or some other IDE, or at least for this to be an option. BTW: I'm looking at NetBeans IDE (written in Java, but supports different languages) and "Source Navigator" (RedHat-ex. Cygnus). CodeCrusader is no longer OpenSource. I'm looking for IDE that is OpenSource, GPL, multiplatform, and have ability to be extended into supporting 4gl. Ideas? I'm using GWD text processor, and I built in most of the functions of IDE in it using scripting inside it (ANSII C), but this is shareware, and not multiplatform (OK, I run it on Linux under Wine, but this is not what I want) > If you need me to fix up the > FGLBLD documents into postscript, then tell me -- I do have GNU troff > around and I think I can get it to work OK. If mine is not OK, please do. Especially if you can do -Thtml Will you be sending me code for import, or do you want to do it yourself? Thanks again, Andrej =========================================================== project.c > > > >I just want to tell some more things about-it (questions and remarks): > > - How it works the mechanism that fills this ? Its automatic ? > > Documentary only? Or maybe there is an option somewhere that dumps the > array to stdout. 4glc -vfull ======================================================================== HTML Application (HTA). http://msdn.microsoft.com/library/default.asp?url=/workshop/author/hta/overview/htaoverview.asp