Multi-screen Input -- Example: Part 2
Posted in 1994
Part 2 of a multi-part (originally 2 part) posting. : "%W% %E%" #!/bin/sh # shar: Shell Archiver (v1.22) # # This is a shell archive. # Remove everything above this line and run sh on the resulting file # If this archive is complete, you will see this message at the end # "All files extracted" # # Created: Wed Apr 27 20:50:17 1994 by johnl at Sphinx Ltd. # Files archived in this archive: # checkint.4gl # dbexpln.4gl # dbtype.4gl # dlist.c # dlist.h # dlist.man # dliststr.c # dliststr.man # helpfile.4gl # incdec.4gl # interr.4gl # ldint.c # makefile # msgtext.c # nxtfield.4gl # openlog.4gl # repdest.4gl # repdest.per # reptype.4gl # translog.4gl # uname.c # popstr.c # scrndump.4gl # scrndump.per # security.4gl # shell.4gl # stdopt.4gl # spi.msg # spi.sql # if test -f checkint.4gl; then echo "File checkint.4gl exists"; else echo "x - checkint.4gl" sed 's/^X//' << 'SHAR_EOF' > checkint.4gl && X{ X @(#)checkint.4gl 2.4 90/04/05 X @(#)Sphinx Informix Tools: General Library X @(#)Interrupt checker X @(#)Author: JL X} X X{ Warn about ignored interrupt if interrupt has occurred } XFUNCTION check_interrupt() X X DEFINE X sccs CHAR(1) X X IF int_flag != 0 THEN X LET sccs = "@(#)checkint.4gl 2.4 90/04/05" X ERROR "Interrupt detected -- ignored" X LET int_flag = 0 X END IF X XEND FUNCTION {check_interrupt} SHAR_EOF chmod 0444 checkint.4gl || echo "$0: failed to restore checkint.4gl" fi if test -f dbexpln.4gl; then echo "File dbexpln.4gl exists"; else echo "x - dbexpln.4gl" sed 's/^X//' << 'SHAR_EOF' > dbexpln.4gl && X{ X @(#)dbexpln.4gl 1.2 91/05/09 X @(#)JLSS Informix Tools: General Library X @(#)Handle SET EXPLAIN mode X} X XDEFINE X expl_mode INTEGER, X sccs CHAR(1) X X{ Set explain mode from DBEXPLAIN environment variable } XFUNCTION set_dbexplain() X X DEFINE X dbexpl CHAR(3) X X LET dbexpl = fgl_getenv("DBEXPLAIN") X LET dbexpl = DOWNSHIFT(dbexpl) X IF dbexpl = "on" THEN X SET EXPLAIN ON X LET expl_mode = 1 X ELSE X SET EXPLAIN OFF X LET expl_mode = 0 X LET sccs = "@(#)dbexpln.4gl 1.2 91/05/09" X END IF X XEND FUNCTION {set_dbexplain} X X{ Set explain mode } XFUNCTION set_explain(dbexpl) X X DEFINE X dbexpl CHAR(3) X X LET dbexpl = DOWNSHIFT(dbexpl) X IF dbexpl = "on" THEN X SET EXPLAIN ON X LET expl_mode = 1 X ELSE X SET EXPLAIN OFF X LET expl_mode = 0 X END IF X XEND FUNCTION {set_explain} X X{ Get current explain mode } XFUNCTION get_explain() X X RETURN expl_mode X XEND FUNCTION {get_explain} SHAR_EOF chmod 0664 dbexpln.4gl || echo "$0: failed to restore dbexpln.4gl" fi if test -f dbtype.4gl; then echo "File dbtype.4gl exists"; else echo "x - dbtype.4gl" sed 's/^X//' << 'SHAR_EOF' > dbtype.4gl && X{ X @(#)dbtype.4gl 1.2 91/05/09 X @(#)JLSS Informix Tools: General Library X @(#)Determine type of database X @(#)Author: JL X} X X{ XThe set_databasetype() function should be called after a database is opened Xand before the next operation that alters the SQLCA record. It will try Xto determine whether the database is Version 4.00 or earlier than Version 4.00, Xwhether it is OnLine or Standard Engine, whether the database has logging Xenabled, and whether the database is mode ANSI. X XThe other routines are used to interrogate the database type. X Xget_databasemode() returns true if the database is mode ANSI. Xget_databasetype() returns true if the database is OnLine Xget_databasevers() returns true if the database is Version 4.00 or later Xget_databaselogs() returns true if the database is logged. X} X XDEFINE X db_init INTEGER, X db_mode INTEGER, X db_type INTEGER, X db_vers INTEGER, X db_logs INTEGER, X db_sccs CHAR(1) X X{ Establish characteristics of database } X{ It is assumed that the last statement was a DATABASE statement } XFUNCTION set_databasetype() X X DEFINE X counter INTEGER X X IF SQLCA.SQLAWARN[1] != 'W' THEN X { Damn; could be version 4.00 unlogged SE database in non-ANSI mode } X { Could be earlier version with or without logs } X WHENEVER ERROR CONTINUE X SELECT COUNT(*) INTO counter X FROM Informix.Systables WHERE Tabid = 1 X IF STATUS < 0 THEN X LET db_vers = FALSE { It clearly isn't a Version 4.00 database } X LET db_mode = FALSE { It cannot therefore be mode ANSI } X LET db_type = FALSE { It is assumed to be Standard Engine } X SELECT COUNT(*) INTO counter X FROM Systables WHERE Tabtype = 'L' X LET db_logs = (counter = 1) X LET db_sccs = "@(#)dbtype.4gl 1.2 91/05/09" X ELSE X LET db_vers = TRUE { It must be Version 4.00 or later } X SELECT COUNT(*) INTO counter X FROM Informix.Syscolumns WHERE Tabid = 1 X IF counter >= 18 THEN X LET db_type = TRUE { OnLine } X LET db_logs = TRUE { Assumed to be logged! } X LET db_mode = FALSE { Assumed to be non-ANSI mode } X ELSE X LET db_type = FALSE { Standard Engine } X SELECT COUNT(*) INTO counter X FROM Informix.Systables WHERE Tabtype = 'L' X IF counter = 1 THEN X LET db_logs = TRUE { It has a transaction log } X SELECT COUNT(*) INTO counter X FROM Informix.Systables WHERE Tabname = "ANSI" X LET db_mode = (counter = 1) X END IF X END IF X END IF X ELSE X { Must be a version 4.00 database with all information at hand } X LET db_vers = TRUE X LET db_logs = (SQLCA.SQLAWARN[2] = "W") X LET db_mode = (SQLCA.SQLAWARN[3] = "W") X LET db_type = (SQLCA.SQLAWARN[4] = "W") X END IF X LET db_init = TRUE X XEND FUNCTION {set_databasetype} X XFUNCTION get_databasetype() X X IF db_init = FALSE THEN X LET SQLCA.SQLAWARN[1] = ' ' X CALL set_databasetype() X END IF X X RETURN db_type X XEND FUNCTION {get_databasetype} X XFUNCTION get_databaselogs() X X IF db_init = FALSE THEN X LET SQLCA.SQLAWARN[1] = ' ' X CALL set_databasetype() X END IF X X RETURN db_logs X XEND FUNCTION {get_databaselogs} X XFUNCTION get_databasevers() X X IF db_init = FALSE THEN X LET SQLCA.SQLAWARN[1] = ' ' X CALL set_databasetype() X END IF X X RETURN db_vers X XEND FUNCTION {get_databasevers} X XFUNCTION get_databasemode() X X IF db_init = FALSE THEN X LET SQLCA.SQLAWARN[1] = ' ' X CALL set_databasetype() X END IF X X RETURN db_mode X XEND FUNCTION {get_databasemode} SHAR_EOF chmod 0444 dbtype.4gl || echo "$0: failed to restore dbtype.4gl" fi if test -f dlist.c; then echo "File dlist.c exists"; else echo "x - dlist.c" sed 's/^X//' << 'SHAR_EOF' > dlist.c &