Re: [U2] TAB.TO.UNIVERSE

2011-12-13 Thread Kevin King
+1 for what David said.
___
U2-Users mailing list
U2-Users@listserver.u2ug.org
http://listserver.u2ug.org/mailman/listinfo/u2-users


Re: [U2] TAB.TO.UNIVERSE

2011-12-13 Thread David A. Green
We should come up with some standards and collaboration guidelines.  But
until then here is a suggestion.

Make it a subroutine and separate the logic from the interface.

This way it can be used by everyone, the Desktop world, TCL world, or
whatever interface.  Here is a good generic method that works for most subs:

SUBROUTINE NAME.SUB(OUTPUTS, INPUTS, FLAG)

Where OUTPUTS can be single or multivalued, Having it first on the arguments
list allows you to use this subroutine for I-Descriptors.

INPUTS can be single or multivalued and if they are multivalued should have
an external EQUATE that defines each value.  This method also saves you
time/money/headache later when you need to add another value.

FLAG is your communications flag, I use 0 for successful and an error
message if unsuccessful, this too can be enhance to a multivalued level for
multiple errors or an error code/message format.  Back in the day this was
necessary for UniObjects to work and so I have just always had it as the
last parameter.

David A. Green
(480) 813-1725
DAG Consulting

-Original Message-
From: u2-users-boun...@listserver.u2ug.org
[mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson
Sent: Monday, December 12, 2011 10:36 PM
To: u2-users@listserver.u2ug.org
Subject: [U2] TAB.TO.UNIVERSE

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

___
U2-Users mailing list
U2-Users@listserver.u2ug.org
http://listserver.u2ug.org/mailman/listinfo/u2-users


Re: [U2] TAB.TO.UNIVERSE

2011-12-13 Thread Wols Lists

On 13/12/11 06:23, Ross Ferris wrote:

You are going to end up with key in field 1 with your code

Your assumptions in PRINT statements had also better let people know that 
column # corresponds to field number (with caveat from above)

Would also suggest that

CONVERT TAB.KEY to @FM IN T.ROW,

Followed by a REMOVE for the key may be more efficient


Can't remember exactly what they do, but there's also a bunch of 
programs on Pickwiki to do this sort of thing ... that handles MV too.


Might be worth taking a look at them and rewriting them as required.

Cheers,
Wol
___
U2-Users mailing list
U2-Users@listserver.u2ug.org
http://listserver.u2ug.org/mailman/listinfo/u2-users


Re: [U2] TAB.TO.UNIVERSE

2011-12-12 Thread Ross Ferris
You are going to end up with key in field 1 with your code 

Your assumptions in PRINT statements had also better let people know that 
column # corresponds to field number (with caveat from above)

Would also suggest that

CONVERT TAB.KEY to @FM IN T.ROW,

Followed by a REMOVE for the key may be more efficient

Ross Ferris
Stamina Software
Visage > Better by Design!


-Original Message-
From: u2-users-boun...@listserver.u2ug.org 
[mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson
Sent: Tuesday, 13 December 2011 4:36 PM
To: u2-users@listserver.u2ug.org
Subject: [U2] TAB.TO.UNIVERSE



 






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
0045AIF 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:'"'
0045EEND
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 = 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   *
0068END 





-Original Message-
From: Wjhonson 
To: WJhonson 
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.FI