0001       *
0002       * Writen Dec 2011 by Will Johnson
0003       * Input tab delimited file, output universe file
0004       * BATCH mode does not ask for input at error messages, so it's
0005       *    appropriate for PHantoms or any other COMO generating job
0006       * TEST mode does not WRITE, useful for debugging logic
0007       *
0008       EQUATE FALSE TO 0, TRUE TO 1
0009       EQUATE TAB.KEY TO CHAR(9)
0010       ERROR = ''
0011       GOSUB GET.PARAMETERS
0012       GOSUB OPEN.FILES
0013       IF ERROR = '' THEN
0014          GOSUB READ.AND.PROCESS
0015       END ELSE
0016          CRT ERROR:
0017          IF MODE = "BATCH" THEN CRT ELSE
0018             CRT " Hit enter ": ; INPUT CONT,1_
0019          END
0020       END
0021       STOP
0022       *
0023 GET.PARAMETERS:
0024       CRT "THIS PROGRAM WILL PROMPT FOR A TAB-DELIMITED FILE AS INPUT"
0025       CRT "AND A UNIVERSE FILE TO POPULATE WITH THE DATA"
0026       CRT
0027       CRT "WARNING: THIS PROGRAM ASSUMES THE PRIMARY KEY":
0028       CRT " IS IN COLUMN ONE!"
0029       CRT
0030       CRT "IS THIS WHAT YOU WANT TO DO (Y/N) ": ; INPUT CONT,1_
0031       IF CONT # "Y" THEN CRT "USER ABORT" ; STOP
0032       *
0033       CRT "MODE (BATCH/TEST/LIVE) ": ; INPUT MODE
0034       CRT "MODE IS '":MODE:"'"
0035       CRT "PATH OF TAB-DELIMITED FILE ": ; INPUT TAB.PATH
0036       CRT "TAB.PATH IS '":TAB.PATH:"'"
0037       CRT "UNIVERSE FILE NAME ": ; INPUT N.FILE
0038       CRT "UNIVERSE FILE NAME IS '":N.FILE:"'"
0039       CRT "DATE-STAMP KEYS (Y/N) ": ; INPUT DATE.STAMP
0040       CRT "TIMEDATE-STAMP KEYS IS '":DATE.STAMP:"'"
0041       IF DATE.STAMP = 'Y' THEN STAMP = DATE():'*':TIME()
0042       RETURN
0043       *
0044 OPEN.FILES:
0045       OPENSEQ TAB.PATH TO SOURCE.FILE THEN
0045A        IF DATE.STAMP = 'Y' THEN
0045B           OPEN 'DICT',N.FILE TO DF.FILE THEN
0045C               WRITE STAMP ON DF.FILE,'LAST.RUN'
0045D           END ELSE ERROR = 'Cannot open file "DICT ':N.FILE:'"'
0045E        END
0046          OPEN N.FILE TO F.FILE ELSE
0047             ERROR = 'Cannot open file "':N.FILE:'"'
0048          END
0049       END ELSE ERROR = 'Cannot open file "':TAB.PATH:'"'
0050       RETURN
0051       *
0052 READ.AND.PROCESS:
0053       DONE = FALSE ; CNT = 0
0054       LOOP
0055          READSEQ T.ROW FROM SOURCE.FILE ELSE DONE = TRUE
0056       UNTIL DONE DO
0057          CNT += 1 ; R.FILE = '' ; S.ROW = DCOUNT(T.ROW,TAB.KEY)
0058          FOR I.ROW = 1 TO S.ROW
0059             R.FILE<I.ROW> = FIELD(T.ROW,TAB.KEY,I.ROW)
0060          NEXT I.ROW
0061          *ASSUME PRIMARY KEY IN FIELD ONE
0062          K.FILE = R.FILE<1>
0063          IF DATE.STAMP = 'Y' THEN K.FILE := "*":STAMP
0064          IF MODE # "TEST" THEN WRITE R.FILE ON F.FILE,K.FILE
0065       REPEAT
0066       RETURN
0067       *
0068    END 





-----Original Message-----
From: Wjhonson <[email protected]>
To: WJhonson <[email protected]>
Sent: Mon, Dec 12, 2011 1:59 pm
Subject: TAB.TO.UNIVERSE


0001       *
0002       * Writen Dec 2011 by Will Johnson
0003       *
0004       * BATCH mode does not ask for input at error messages, so it's
0005       *    appropriate for PHantoms or any other COMO generating job
0006       * TEST mode does not WRITE
0007       *
0008       EQUATE FALSE TO 0, TRUE TO 1
0009       EQUATE TAB.KEY TO CHAR(9)
0010       ERROR = ''
0011       GOSUB GET.PARAMETERS
0012       GOSUB OPEN.FILES
0013       IF ERROR = '' THEN
0014          GOSUB READ.AND.PROCESS
0015       END ELSE
0016          CRT ERROR:
0017          IF MODE = "BATCH" THEN CRT ELSE
0018             CRT " Hit enter ": ; INPUT CONT,1_
0019          END
0020       END
0021       STOP
0022       *
0023 GET.PARAMETERS:
0024       CRT "THIS PROGRAM WILL PROMPT FOR A TAB-DELIMITED FILE AS INPUT"
0025       CRT "AND A UNIVERSE FILE TO POPULATE WITH THE DATA"
0026       CRT
0027       CRT "WARNING: THIS PROGRAM ASSUMES THE PRIMARY KEY":
0028       CRT " IS IN COLUMN ONE!"
0029       CRT
0030       CRT "IS THIS WHAT YOU WANT TO DO (Y/N) ": ; INPUT CONT,1_
0031       IF CONT # "Y" THEN CRT "USER ABORT" ; STOP
0032       *
0033       CRT "MODE (BATCH/TEST/LIVE) ": ; INPUT MODE
0034       CRT "MODE IS '":MODE:"'"
0035       CRT "PATH OF TAB-DELIMITED FILE ": ; INPUT TAB.PATH
0036       CRT "TAB.PATH IS '":TAB.PATH:"'"
0037       CRT "UNIVERSE FILE NAME ": ; INPUT N.FILE
0038       CRT "UNIVERSE FILE NAME IS '":N.FILE:"'"
0039       CRT "DATE-STAMP KEYS (Y/N) ": ; INPUT DATE.STAMP
0040       CRT "TIMEDATE-STAMP KEYS IS '":DATE.STAMP:"'"
0041       IF DATE.STAMP = 'Y' THEN STAMP = DATE():'*':TIME()
0042       RETURN
0043       *
0044 OPEN.FILES:
0045       OPENSEQ TAB.PATH TO SOURCE.FILE THEN
0045A        IF DATE.STAMP = 'Y' THEN
0045B           OPEN 'DICT',N.FILE TO DF.FILE THEN
0045C               WRITE STAMP ON DF.FILE,'LAST.RUN'
0045D           END ELSE ERROR = 'Cannot open file "DICT ':N.FILE:'"'
0045E        END
0046          OPEN N.FILE TO F.FILE ELSE
0047             ERROR = 'Cannot open file "':N.FILE:'"'
0048          END
0049       END ELSE ERROR = 'Cannot open file "':TAB.PATH:'"'
0050       RETURN
0051       *
0052 READ.AND.PROCESS:
0053       DONE = FALSE ; CNT = 0
0054       LOOP
0055          READSEQ T.ROW FROM SOURCE.FILE ELSE DONE = TRUE
0056       UNTIL DONE DO
0057          CNT += 1 ; R.FILE = '' ; S.ROW = DCOUNT(T.ROW,TAB.KEY)
0058          FOR I.ROW = 1 TO S.ROW
0059             R.FILE<I.ROW> = FIELD(T.ROW,TAB.KEY,I.ROW)
0060          NEXT I.ROW
0061          *ASSUME PRIMARY KEY IN FIELD ONE
0062          K.FILE = R.FILE<1>
0063          IF DATE.STAMP = 'Y' THEN K.FILE := STAMP
0064          WRITE R.FILE ON F.FILE,K.FILE
0065       REPEAT
0066       RETURN
0067       *
0068    END 

 
_______________________________________________
U2-Users mailing list
[email protected]
http://listserver.u2ug.org/mailman/listinfo/u2-users

Reply via email to