kerry@kcbbs.gen.nz DATABASE [insert-your-database-here] DEFINE m_temp_exists SMALLINT main define x char(80) if open_flat("cat flat.4gl") then let x = read_flat() while x != "!EOF!" display x clipped let x = read_flat() end while end if end main FUNCTION open_flat(l_unix_cmd) DEFINE l_unix_cmd CHAR(200) DEFINE l_text CHAR(300), l_tempfile CHAR(30), l_delimiters CHAR(6), l_delim CHAR(1), i SMALLINT WHENEVER ANY ERROR CONTINUE IF NOT m_temp_exists THEN CREATE TEMP TABLE picklist (ptext char(300), pline serial) WITH NO LOG LET m_temp_exists = TRUE ELSE DELETE FROM picklist END IF LET l_tempfile = "/tmp/",get_program(), TIME,".tmp" LET l_delimiters = ASCII(94),ASCII(92),ASCII(96),ASCII(124),ASCII(126), ASCII(95) FOR i = 1 TO 6 LET l_delim = l_delimiters[i] LET l_text = l_unix_cmd CLIPPED, " | sed -e 's/$/",l_delim,"0",l_delim,"/' > ", l_tempfile RUN l_text LOAD FROM l_tempfile DELIMITER l_delim INSERT INTO picklist IF status =0 THEN LET i = 999 EXIT FOR END IF END FOR IF i != 999 THEN LET l_unix_cmd = "ERROR: open_flat() is unable to process an ASCII file ", "which contains all of the following characters: ", l_delimiters CLIPPED,". Please advise your support ", "company of this error and suggest they look in the ", "file ",l_tempfile CLIPPED,"." # CALL message_prompt(l_unix_cmd, "") RETURN FALSE END IF DECLARE flat_curs CURSOR FOR SELECT ptext, pline FROM picklist ORDER BY pline OPEN flat_curs IF status !=0 THEN RETURN FALSE END IF LET l_text = "rm -f ", l_tempfile RUN l_text WITHOUT WAITING RETURN TRUE END FUNCTION FUNCTION read_flat() DEFINE l_text CHAR(300) FETCH flat_curs INTO l_text IF status !=0 THEN LET l_text = "!EOF!" END IF IF l_text IS NULL THEN LET l_text = " " END IF RETURN l_text END FUNCTION