Re: [U2] Left Outer Join Question
I wrote a paragraph called ML to use MERGE.LIST on saved lists - much easier than assembling the lists manually. PA * ML type list1 list2 list3 * I2,TYPE IF TYPE = U THEN GO THERE IF TYPE = D THEN GO THERE IF TYPE = I THEN GO THERE DISPLAY DISPLAY Command Format is DISPLAY ML type list1 list2 list3 DISPLAY DISPLAY Where type is 'U'nion or 'D'ifference or 'I'ntersection DISPLAY DISPLAY and where list1 and list2 exist on SAVEDLISTS. DISPLAY The result will be stored as list3. DISPLAY GO FINISH * THERE: IF I3,LIST1 = '' THEN GO FINISH IF I4,LIST2 = '' THEN GO FINISH IF I5,LIST3 = '' THEN GO FINISH GET.LIST LIST1 TO 1 GET.LIST LIST2 TO 2 * IF TYPE = U THEN GO UNION IF TYPE = D THEN GO DIFFERENCE IF TYPE = I THEN GO INTERSECTION * UNION: MERGE.LIST 1 UNION 2 TO 3 SAVE.LIST LIST3 FROM 3 DISPLAY UNION GO FINISH * DIFFERENCE: MERGE.LIST 1 DIFFERENCE 2 TO 3 SAVE.LIST LIST3 FROM 3 DISPLAY DIFFERENCE GO FINISH * INTERSECTION: MERGE.LIST 1 INTERSECTION 2 TO 3 SAVE.LIST LIST3 FROM 3 DISPLAY INTERSECTION GO FINISH * FINISH: CLEARPROMPTS ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] [UV] Programmatic Verification of Globally Cataloged Subroutine
Hi, LeRoy Dreyfuss said that you would have to change 52 to 12 for EXIST to work. The globally cataloged programs have an extra 40 characters put on the front, so that would cause a problem. @RECORD[1,4] is a count of the number of times the program has been used. @RECORD[5,8] is who cataloged it @RECORD[13,4] are the date and time (I think) Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] What is true
Hi Wil, That indeed was my code - ten years old now! I think I read the same article as Kevin. I don't use it in my day to day programming (which is in Universe and QM, thus using @TRUE and @FALSE) but I think I still would use it for Pickwiki. Just a style thing - de gustibus non disputandum est, after all. Hi Tony, 'Twas a teensy bug under an unusual circumstance... Hey, wait a minute, you're the one who complained that no-one updated other people's code! You wouldn't be trying to yank Will's chain, would you? Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] 'DBTA 100: The Companies That Matter Most in Data'
DBTA has always been sympathetic to the MV market. I note not only Rocket but also Entrinsik, Kore, Mpower1, Pickcloud, Revelation in the list Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Dumping data to file from TCL
Hi Phil, If it's just a matter of turning a two-step process into one step, would a Paragraph be reasonable? Just thinking of something along the lines of... PA IF I2,File = '' THEN GO ENDIT IF I3,IType = '' THEN GO ENDIT IF I4,ExportDirectory = '' THEN GO ENDIT IF I5,Datadump.dat = '' THEN GO ENDIT SELECT I2,File SAVING I3,IType LIST I2,File TO I4,ExportDirectory I5,Datadump.dat REQUIRE.SELECT ENDIT: Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] CSV to Array
No-one seems to have done it, but here's my version of the code. It's strange, I don't have a problem with CONTINUE and I don't even mind IF SOMETHING ELSE THIS = THAT which a lot of people really hate, but I just HAD to reverse the IF/CASE statement order. SUBROUTINE REXY(RECORD,TEXT) * HERE = 0 QUOTED = @FALSE RECORD = '' LOOP HERE += 1 C = TEXT[HERE,1] UNTIL C EQ '' BEGIN CASE CASE QUOTED AND TEXT[HERE,2] EQ '' HERE += 1 CASE C EQ '' QUOTED = NOT(QUOTED) C = '' CASE C EQ ',' AND NOT QUOTED C = @FM END CASE RECORD := C REPEAT RETURN END Regards, Keith PS: Remember Messrs Stout and Chapman - Simplicate and add more lightness ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] trimming a list (a test of your ability)
Universe gives a slight lead to -1 too. Also, it compiles Y = Y:CHAR(254):I and Y := CHAR(254):I to exactly the same thing. I checked with VLIST and even edited the compiled code to be sure. ALSO (and this surprised me) it doesn't support ROUNDS *= 2 The documenation (Universe BASIC 2-25) only shows plus-equal minus-equal and concatenate-equal so I suppose that must be correct. I'm still a little shell-shocked, though. Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Is there any way to tell if I am in an EXECUTE level and CAPTURING is turned on?
I just noticed this in the help for QM's SYSTEM() 1000 Returns 1 if EXECUTE CAPTURING is in effect, 0 otherwise Checked if this was an undocumented feature that Martin had reproduced; but no, it doesn't work in Universe. Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
[U2] Exiting UniData
Hi John, I'm on an SB+ site on Universe which is completely unrelated to Epicor. Our QUIT is an exact copy of SH.OFF, which is a local catalogue pointer to the program code. I believe SH.OFF tidies up various SB+ stuff and then chains to OFF, and that this is the standard behaviour of SB+ Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] RESIZE - dynamic files
Doug may have had a key bounce in his input Let's do the math: 258687736 (Record Size) 192283300 (Key Size) The key size is actually 19283300 in Chris' figures Regarding 68,063 being less than the current modulus of 82,850. I think the answer may lie in the splitting process. As I understand it, the first time a split occurs group 1 is split and its contents are split between new group 1 and new group 2. All the other groups effectively get 1 added to their number. The next split is group 3 (which was 2) into 3 and 4 and so forth. A pointer is kept to say where the next split will take place and also to help sort out how to adjust the algorithm to identify which group matches a given key. Based on this, if you started with 1000 groups, by the time you have split the 500th time you will have 1500 groups. The first 1000 will be relatively empty, the last 500 will probably be overflowed, but not terribly badly. By the time you get to the 1000th split, you will have 2000 groups and they will, one hopes, be quite reasonably spread with very little overflow. So I expect the average access times would drift up and down in a cycle. The cycle time would get longer as the file gets bigger but the worst time would be roughly the the same each cycle. Given the power of two introduced into the algorithm by the before/after the split thing, I wonder if there is such a need to start off with a prime? Regards, Keith PS I'm getting a bit Tony^H^H^H^Hverbose nowadays. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Is there any way to tell if I am in an EXECUTE level and CAPTURING is turned on?
Hi Doug, Another way to skin the cat- Check the @LEVEL in the error display program and if it's not 1 use a timed input. Unidata has INPUT WAITING, while for Universe, there is a program do do the same at http://www.pickwiki.com/cgi-bin/wiki.pl?InputWait Perhaps do the timed input anyway with different times depending on the level? Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Proc question
Hi Kebbon, I don't like Procs, but * Set the primary input buffer as active SP * Activate the primary output buffer STOFF * Alternatively, clear both output buffers and make the primary the active one RO * Set the input buffer pointer to the first (or whatever) parameter S1 * Move a substring in the that parameter from the active input buffer to the end of the active output buffer with no surround character A\(4,5) Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] READU vs READ
If the multivalues have many many values, and you are adding to the end, then a speed up may be possible. MATREAD in the data, RAISE those array elements you are changing. Before the MATWRITE, LOWER all array elements you raised. As I understand it, Universe keeps internal track on attributes, so processing these in ascending order is a LOT faster than it used to be. However this is not done for multivalues (space considerations?). Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] The CONTINUE statement
Just to be annoyingly pedantic - the second code snippet is missing an END FOR I = 1 TO X do something IF some condition THEN CONTINUE do something else NEXT I Versus FOR I = 1 TO X do something IF NOT(some condition) THEN do something else NEXT I ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] The RETURN TO statement was the CONTINUE statement
Hi Wil, They can't do that because then their line editor would break - It has 58 occurances of RETURN TO Message: 27 Date: Fri, 27 Apr 2012 08:38:05 -0400 (EDT) From: Wjhonson wjhon...@aol.com To: u2-users@listserver.u2ug.org Subject: Re: [U2] The RETURN TO statement was the CONTINUE statement Message-ID: 8cef289ba33f8cc-bd4-7...@webmail-m082.sysops.aol.com Content-Type: text/plain; charset=us-ascii Perhaps we could start a petition to get Rocket to state in their documentation The RETURN TO statement is deprecated and will be forbidden in release 12 ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] RETURN TO (again)
I never used it in anger, but I was rather drawn to the Presley-friendly form SENDER: RETURN TO SENDER I actually used the following progam a long time ago, but only to test that EQU...LIT... workedhow I thought it did. Try it - Press T a few times then X and watch it unwind the call stack. 001: EQU ABANDON LIT 'RETURN TO SENDER' 002: CRT 'START OF PROGRAM' 003: GOSUB TEST 004: CRT 'RETURN FROM TEST' 005: STOP 006: SENDER: 007: CRT 'NOW AT SENDER' 008: ABANDON 009: CRT 'END OF SENDER' 010: STOP 011: TEST: 012: LOOP 013: CRT 'AT TEST ': 014: INPUT BACK,1 015: BACK = UPCASE(BACK) 016: IF BACK EQ 'T' THEN GOSUB TEST 017: IF BACK EQ 'X' THEN ABANDON 018: WHILE BACK DO 019: CRT 'STILL IN TEST' 020: REPEAT 021: CRT 'END OF TEST' 022: RETURN ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Case Statement with only two cases... or for that matter... one case
Hi Will, As I said, I don't use it myself, but a reason one might use it is that one can easily cut and paste (or include) logic. For example: --- LOCKED put some generic logic here END --- regards, Keith WJohnson wrote: Why the extra lines? Why not just IF A = TEST THEN gosub do.something END ELSE gosub do.something.else END ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] EXIT ; EXIT inside a loop
I think the UNTIL should be in behind NEXT A2, rather than on the FOR line. Hoping to lighten the day... BAIL = 0 FOR A1 = 1 TO XYZZY FOR A2 = 1 TO Y little twisted logic IF G # H THEN BAIL = 51 ;* error code UNTIL BAIL DO twisted little logic NEXT A2 UNTIL BAIL DO twisting little logic NEXT A1 IF BAIL THEN DISPLAY 'Housten, we have a problem in Area ':BAIL Or use a GOSUB - RETURN does a fair job of being readable. Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Case Statement with only two cases... or for that matter... one case
I prefer the layout of IF A = TEST THEN GOSUB DO.SOMETHING ;* Say why ELSE GOSUB DO.SOMETHING.ELSE ;* The reason However, here is a form that's rarely used, but does work. IF A = TEST THEN ;* say why in a long-winded manner GOSUB DO.SOMETHING END ELSE ;* the reasoning behind the reason GOSUB DO.SOMETHING.ELSE END I don't use it myself, but it's very amenable to cut and paste programming. Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Detecting idle time in INPUT statement.
If anyone DOES want the equivalent of Unidata's INPUT... WAITING for Universe... http://www.pickwiki.com/cgi-bin/wiki.pl?InputWait Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Code style ? or code silliness ?
The examples as given were not equivalent. THE.READ = STR('0',DIALS-LEN(THE.READ)):THE.READ versus THE.JUST = R#:LEN(THE.READ); THE.READ = THE.READ THE.JUST Apart from the % to # change, the second example ignores DIALS and justifies within the length of THE.READ I assume the second one ought to have been THE.JUST = R%:DIALS; THE.READ = THE.READ THE.JUST As the R%n form doesn't always work in Unidata $DEFINE UNIDATA | . | * Special subtlety for Unidata not supporting 'R%3' form $IFDEF UNIDATA PFX = ''; SFX = '\0R' $ELSE PFX = 'R%'; SFX = '' $ENDIF | . | THE.READ = FMT(THE.READ,PFX:DIALS:SFX) ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Building an Excel File
I'm curious; was the university in Florida Barry University? Someone I worked with years ago went there as a Pick programmer. The following code might be helpful subroutine ucsv(result,source,status,is.oconv) * * Public Domain program for OpenQM by Keith Johnson 2012 * * OCONV Converts from attribute and value marks to .CSV format *Attribute marks are converted to CR:LF * ICONV Converts from .CSV to delimited form *If there are no CR:LF sequences, it uses LF *If there are no LF characters, it uses attribute marks * * Usage: To convert ABC to a .CSV format, use code like * *NEWABC = OCONV(ABC,'UUCSV') * * result = '' status = 0 crlf = char(13):char(10) test = index(source,crlf,1) * begin case * * this is OK case source = '' null * * OCONV not OK if there are already CR:LF sequences case is.oconv and test status = 1 * * The normal case when generating .CSV data case is.oconv atts = dcount(source,@am) for attr = 1 to atts line = sourceattr CRT 'line = ':line vals = dcount(line,@vm) part = '' for valu = 1 to vals bite = line1,valu if part ne '' then part := ',' good = @true if index(bite,'',1) then good = @false if index(bite,' ',1) then good = @false if index(bite,',',1) then good = @false if index(bite,char(10),1) then good = @false if index(bite,char(13),1) then good = @false if not(good) then bite = change(bite,'','') bite = '':bite:'' end part := bite next valu CRT 'part = ':part if result eq '' then result = part else result := crlf:part next attr * * Cannot have both of these in ICONV file - the rows will change case index(source,@am,1) and index(source,char(10),1) status = 2 * * converting from standard .CSV file case test flag = @false mine = change(source,crlf,@am) atts = dcount(mine,@am) for attr = 1 to atts line = mineattr span = len(line) part = '' for posn = 1 to span that = line[posn,2] this = that[1,1] begin case case that eq '' and flag part := '' posn += 1 case this eq '' flag = not(flag) case this eq ',' and not(flag) part := @vm case 1 part := this end case next posn result-1 = part next attr * * converting from LF only (or possibly @am) row delimited file case 1 mark = char(10) if not(index(source,mark,1)) then mark = @am if not(index(source,mark,1)) then status = 3 return end end * flag = @false atts = dcount(source,mark) part = '' for attr = 1 to atts line = field(source,mark,attr) span = len(line) for posn = 1 to span that = line[posn,2] this = that[1,1] begin case case that eq '' and flag part := '' posn += 1 case this eq '' and flag flag = @false case this eq ',' and not(flag) part := @vm case 1 part := this end case next posn * * It is possible to have a linefeed within a field if not(flag) then result-1 = part:char(10) part = '' end else * * But not an attribute mark when it is the delimiter * Assume they forgot the last double quote and be nice if mark eq @am then result-1 = part part = '' flag = @false end end next attr end case * return ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] End of Month date routine
Mr Castro's code wins. Pure elegance. Marco Antonio Rojas Castro - initials M.A.R.C. My uncle's name is Roy Owen Young - I tease him it's so he can remember it. Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] End of Month date routine
Dave Laansma took a more generic approach which does not require knowledge of the date format - hence I thought it preferable. My style would move the addition and subtraction around as below I assumed one would want the last day of the month for any called date otherwise uncomment line 2 SUBROUTINE GET.EOM(IDAY) *IDAY = DATE() THIS = OCONV(IDAY,'DM') LOOP IDAY += 1 UNTIL OCONV(IDAY,'DM') NE THIS REPEAT IDAY -= 1 RETURN Code snippets are fun - copyright not so much. Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Changing TCL prompt?
This program works for Universe on a UNIX machine giving three commands PATH FULL would give aprompt like /usr/ibm/uv PATHwould give a prompt like uv PATH CLEAR would give a prompt like PROGRAM PATH *** Sets or clears the account or path in the TCL prompt *** so a TCL user doesn't forget where they are. *** *** MODS: *** = *** Seq DateWho Reference Description *** --- - --- -- --- *** 001 27 Feb 07 KRJ CC440 Written *** SENTENCE = UPCASE(@SENTENCE) THIS = '' ; THAT = 1 BEGIN CASE CASE INDEX(SENTENCE,'CLEAR',1) ; THAT = 0 CASE INDEX(SENTENCE,'FULL',1) ; THIS = @PATH:'' CASE 1 ; THIS = FIELD(@PATH,'/',DCOUNT(@PATH,'/')):'' END CASE IF THIS NE '' THEN THIS2 = THIS1:'' THIS3 = '+' END ASSIGN THIS TO SYSTEM(4002) ASSIGN THAT TO SYSTEM(4001) ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Simple Masking of Password Input (Universe Basic)
It's not all that simple, but try http://www.pickwiki.com/cgi-bin/wiki.pl?FieldInput ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] UniBasic SELECT
The problem may be in the use of program variables in the executed code. Using Universe, if I have code: VERB = 'SELECT VOC LIKE A...' EXECUTE VERB CRT @SELECTED CLEARSELECT I get the result 237 record(s) selected to SELECT list #0. 237 If I change the filename to something that doesn't exit, like VVOC VERB = 'SELECT vVOC LIKE A...' EXECUTE VERB CRT @SELECTED CLEARSELECT I get the result SQL+ Where I have to press Return to get past this and then get UniVerse/SQL: syntax error. Unexpected verb. Token was SELECT. Scanned command was SELECT -1 Is F.ICC the name of the file in VOC or only internal to the program? Regards, Keith. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
[U2] LED editor for Universe
The latest version I use has a copy at https://sites.google.com/site/nzpickie/home/programs It has a BLEACH command to turn colour on and off - named after Brian Leach who let me steal his method! The colour options are based on HostAccess - other terminals have different methods. Modifying this is left as an exercise for the reader -) Keith PS -) is not a smiley, it is a tongue in the cheek. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Is this worth rewriting?
I liked Brian's IF (TEA : EAT : ATE) # '' THEN CUM(M) = TEA + EAT + ATE It looks neater in VLIST - don't know if it's faster. multi_cat might be a beast 2: IF (TEA : EAT : ATE) # '' THEN X = TEA + EAT + ATE 2 00012 : 104 multi_cat TEA EAT ATE = $R0 2 0001E : 106 ne $R0 = $R1 2 00026 : 2DE testfw $R1 00040: 2 00030 : 004 addTEA EAT = $R2 2 00038 : 004 add$R2 ATE = X 3: IF TEA # '' OR EAT # '' OR ATE # '' THEN X = TEA + EAT + ATE 3 00040 : 106 ne TEA = $R1 3 00048 : 106 ne EAT = $R2 3 00050 : 122 or $R1 $R2 = $R3 3 00058 : 106 ne ATE = $R4 3 00060 : 122 or $R3 $R4 = $R5 3 00068 : 2DE testfw $R5 00080: 3 00070 : 004 addTEA EAT = $R6 3 00078 : 004 add$R6 ATE = X Sorry Chris, it's not exactly the same if you do IF TEA+EAT+ATE '' THEN CUM(M) = TEA+EAT+ATE 'cause that's always true. I had to check the original code a few times because I kept thinking What the hey? Surely that's always true? But it weren't. Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Is this worth rewriting?
Lots of things I didn't think of... My last try 001: MONTHLY.USAGE: 002: CM = MONTH + LY.CNT 003: TEA = RAISE(PARMS(12)101) 004: EAT = RAISE(PARMS(12)133) 005: ATE = RAISE(PARMS(12)134) 006: YAM = RAISE(PARMS(7)100) 007: AMY = RAISE(PARMS(7)101) 008: MYA = RAISE(PARMS(7)102) 009: FOR M = 1 TO 12 010: A = TEACM ; B = EATCM ; C = ATECM 011: IF A:B:C NE '' THEN CUM(M) = A+B+C 012: X = YAMCM ; Y = AMYCM ; Z = MYACM 013: IF X:Y:Z NE ''THEN 014: IF X EQ '' THEN CUMO(M) += A ELSE CUMO(M) += X 015: IF Y EQ '' THEN CUMO(M) += B ELSE CUMO(M) += Y 016: IF Z EQ '' THEN CUMO(M) += C ELSE CUMO(M) += Z 017: END 018: CM -= 1 ; IF CM = 0 THEN CM = 24 019: NEXT M 020: RETURN ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Is this worth rewriting?
Agreed that the dimensioned extract wouldn't make much difference, still the attributes numbers are quite high. The code below goes from 15 extracts maximum per for-next loop to 6. I can't help but think this might mean something if it takes 90 minutes to run. 001: MONTHLY.USAGE: 002: CM = MONTH + LY.CNT 003: FOR M = 1 TO 12 004: TEA = PARMS(12)101,CM 005: EAT = PARMS(12)133,CM 006: ATE = PARMS(12)134,CM 007: IF TEA # '' OR EAT # '' OR ATE # '' THEN CUM(M) = TEA + EAT + ATE 008: YAM = PARMS(7)100,CM 009: AMY = PARMS(7)101,CM 010: MYA = PARMS(7)102,CM 011: IF YAM # '' OR AMY # '' OR MYA # '' THEN 012: IF YAM # '' THEN CUMO(M) += YAM ELSE CUMO(M) += TEA 013: IF AMY # '' THEN CUMO(M) += AMY ELSE CUMO(M) += EAT 014: IF MYA # '' THEN CUMO(M) += MYA ELSE CUMO(M) += ATE 015: END 016: CM -= 1 ; IF CM = 0 THEN CM = 24 017: NEXT M 018: RETURN So I'd say AYE - or YEA, if you use meaningful variables Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] [UV] UniVerse Uptime
We stop and start the Universe database and do a UNIX backup, so either ps -e -o etime -o comm | grep uvdlockd Or ps -e -o etime -o comm | grep unirpcd Seem to be reasonable ways of seeing how long it's been up Regards, Keith ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
RE: [U2] UV Timed INPUT
David Norman asked for a timed input for Universe. There is a program to replicate the Unidata timed input at http://www.pickwiki.com/cgi-bin/wiki.pl?InputWait --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
Re: [U2] DO/WHILE vs IF THEN
Mark Johnson suggested the following change Before GOOD.ANS=FALSE LOOP UNTIL GOOD.ANS DO PRINT ENTER 'Y' OR 'N' :;INPUT ANS IF ANS=Y OR ANS=N THEN GOOD.ANS=TRUE REPEAT after LOOP WHILE TRUE DO PRINT ENTER 'Y' OR 'N' :;INPUT ANS IF ANS=Y OR ANS=N THEN EXIT REPEAT These forms all work (Universe 10.2.0) and are progressively shorter than the above LOOP PRINT ENTER 'Y' OR 'N' :;INPUT ANS IF ANS=Y OR ANS=N THEN EXIT REPEAT LOOP PRINT ENTER 'Y' OR 'N' :;INPUT ANS UNTIL ANS=Y OR ANS=N DO REPEAT LOOP PRINT ENTER 'Y' OR 'N' :;INPUT ANS UNTIL ANS=Y OR ANS=N REPEAT LOOP PRINT ENTER 'Y' OR 'N' :;INPUT ANS UNTIL ANS=Y OR ANS=N REPEAT Ray Wurlod was a great proponent of the LOOP WHILE READNEXT ID format. I believe it may not compile on some MV systems. Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] Normal SELECT behavior? [UD]
LIST POH F1 WITH F1 = 000700 will do a numeric comparison if it can. You can force a string comparison by using LIST POH F1 WITH F1 LIKE '000700' That is; double quote, single quote, zero, zero, zero, seven, zero, zero, single quote, double quote. Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] UniData PROC tip: DB command
Baker Hughes wrote The man (person) who writes a PROC interpreter/conversion utility that can take a PROC and turn it into either Basic, or a PAragraph, will have a product to sell... I tried really really really hard to do this a few years ago. The code got more and more complicated until I threw in the towel. Then I realised that it was easier to write a PROC interpreter in BASIC, and that I could re-use the code I had, but that it would be much, much simpler and clearer. Although I never finished it, Martin Phillips took it on from there and did the hard work so that QM had a PROC interpreter. We all know what grinding out that last 20% is like! I was as pleased as punch that I could contribute something to QM because it's such a good product, and the support has always been exceptional. The code (at the stage I got it to) is the programs RUNPROC and CALLPROC in http://www.geocities.com/pickfalla/programs.html. If you have an _extremely_ wet week end (our last few have been atrocious) it might be something to look at. Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] CAPTURING TOXML
Following on from Mike Henderson's post... Maybe the best idea is to use GETXMLSUB itself as your subroutine call. It handles the case where the XMLExecute function returns a fail status, but a subsequent XMLGetError function doesn't have an error code by assigning a new error code of 80120 and an errmsg of query/sql syntax error. It has 6 arguments documented in the code as follows - 006: * argument count 6 007: * 008: * input 1 CMD the LIST/SELECT command used to generate xml doc 009: * input 2 options: any dynamic array like string to store options for the TOXML 010: * command 011: * output 3 XMLSTR, result xml document 012: * output 4 XSDSTR, result xsd schema 013: * output 5 RTNCODE. 014: * output errmsg if RTNCODE 0 Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] unsubscribe u2-users
--- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
Re: [U2] execute code/proc question HELP!!!!!!!!
Assume one has PROGRAM in USUAL.BP. Write NEW.PROGRAM in DOUGS.BP with this at the beginning. 001 SUBROUTINE PROGRAM(V1,V2,V3...) 002 * 003 IF @LOGNAME NE DOUG THEN 004CALL ORIG.PROGRAM(V1,V2,V3...) 005RETURN 006 END 007 * continue with the new program At TCL do these commands CATALOG USUAL.BP ORIG.PROGRAM PROGRAM CATALOG DOUGS.BP PROGRAM NEW.PROGRAM The calling program(s) need no changes and when testing is finished, copy the new version of PROGRAM to USUAL.BP, delete lines 3-6 above, then compile and catalog it. Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] Universe XML is not to standard
Michael Rajkowski wrote First, capturing the XML to a hold file is not the way to get an XML file. Someone really ought to put this into the documentation! Retrieve manual page 6-17 specifically states Note: UniVerse does not store the XML document unless you execute the COMO ON statement prior to executing the RetrieVe statement. If you execute COMO ON, the XML document is stored in the COMO file. You can also direct the output to the HOLD file using SETPTR, or the printer using LPTR. XMLEXECUTE does what I want, true; but why doesn't the recommended, documented, simple-to-implement method work properly too? Then there's the UTF-8 vs iso8859-1 issue that Stuart Boydell identified - another *gotcha* waiting for us. Just tidy things up... there's no benefit to IBM in acting like stRaining Data. Regards, Keith (I really should turn the grumpy_old_%^$_mode off) Johnson --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
Re: [U2] [UV] Scared to recompile
Using VLIST to compare old and new programs is a good idea. You're probably OK on 10.1, but if you want to do this in future, be aware that VLIST may crash on UV 10.2 when used on older programs. If this happens, change the 8th character from 000 to 016. VLIST may then work, although the code and object probably will get out of synch. Another option is to strip off the header on both strings - I think 80 characters may be enough. Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] Universe XML is not to standard
The software I am supporting has a user screen which builds and saves enquiry statements (English/Access/Recall). I recently created another screen to allow users to use the defined statement/report to output XML to the HOLD file and to transfer the results to their PC. All well and good, but then I found that Excel wouldn't pick up the results properly. The reason for this is that the XML output is not quite to the standard. For example, the command LIST VOC 'VOC' F1 F2 TOXML gives the result -- ?xml version=1.0 encoding=UTF-8? ROOT VOC _ID = VOC F1 = F F2 = VOC/ /ROOT -- While the command LIST VOC 'VOC' F1 F2 TOXML HEADING WAHOO 'D' gives the result -- WAHOO 08 May 2008 ?xml version=1.0 encoding=UTF-8? ROOT VOC _ID = VOC F1 = F F2 = VOC/ /ROOT -- It's not absolutely clear from the W3C standard itself, but it is very clear from the examples given with it; that the output must start with the string ?xml . That is to say, although line feeds and spaces are effectively ignored within XML, they are not catered for before the ?xml string. And while the traditional Pick 'thing' is to make-it-work-if-possible, Excel follows the (arguably more standard) convention of holy-heck-that's-not-right-do-nothing What I had to put in place was an extra bit of code to read in the output, delete any lines before the ?xml string, and re-write the output (which, by the way, I'm unsure will work for very, very, very large reports). That's not at all satisfactory in my opinion. I think that the header lines should have been dropped completely, or put in after the ?xml string as a comment something like this: -- ?xml version=1.0 encoding=UTF-8? -- report heading follows WAHOO 08 May 2008 -- ROOT VOC _ID = VOC F1 = F F2 = VOC/ /ROOT -- Does anyone else agree with me? Ought IBM change this? What do you think? Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] blank lines in code / mixed case
On Mon, 10 Mar 2008, Jerry Banker wrote... If you ever want a scare then go through the programs in the Universe BP file. Some are upper case program lines with mixed case comments and prompts, the way I prefer it, some are all lower case, some are mixed case, and some are a mixture of all types. In the latter it appears that whomever was programming at the time picked their preferred case. So it appears not only we mere mortals have a problem deciding what standard to use. If you REALLY want a scare go and look in Universe BP at RETURN TO usage. In PHELP it even mixes case use! (return to end.program and return to RETRY.SORT.BOX) Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE:[U2] Change Prompt
In Universe, the following program (called PATH) will do this. To use it, just put PATH in the LOGIN command. PATH CLEAR puts things back to how they were. PATH FULL gives the full path name at the input prompt. == PATH program v SENTENCE = UPCASE(@SENTENCE) THIS = '' ; THAT = 1 BEGIN CASE CASE INDEX(SENTENCE,'CLEAR',1) ; THAT = 0 CASE INDEX(SENTENCE,'FULL',1) ; THIS = @PATH:'' CASE 1 ; THIS = FIELD(@PATH,'/',DCOUNT(@PATH,'/')):'' END CASE IF THIS NE '' THEN THIS2 = THIS1:'' THIS3 = '+' END ASSIGN THIS TO SYSTEM(4002) ASSIGN THAT TO SYSTEM(4001) == PATH program ^ This version is for a UNIX system, you may have to change the '/' to '\' on Windows SYSTEM(91) = 0 on UNIX SYSTEM(91) = 1 on Windows Regards, Keith P.S. A great benefit of this is that you can then edit the command stack using the arrow keys. You have to use backspace to delete, though. --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] CSV output
These might be useful. To save typing, I decided to use Q for QUOTE, C for COMMA and T for TAB. And since I thought it likely that I would use QUOTE COMMA QUOTE (or Q C Q) a lot, I also set up D (for DELIMITER) as below. Also q and d which use double quotes. Top of D in VOC, 20 lines, 108 characters. 001: I 002: ',' 003: 004: ',' 005: 3L 006: S I should point out that it's been my practice to remove the Q and P commands because otherwise I stumble over them. Usually just after a big session in the editor, when my mind is in that problem-focused state where it takes a while to realise just what the heck happened. Maybe it's something in our setup, but I have ITEM.ID in DICT.DICT and get an 'ITEM.ID not found' error if I try and use it in a query. There is the same error if I try and use D/CODE (which is in DICT.PICK) in a query. Quite apart from that, on our system these files are read-only; so what I do is put the items in DICT VOC, compile them by using them in a query, and then copy them to VOC so they are available for every file. It's not really worth anything - speed of machines these days, etc. etc. - but using CHAR(9) results in slightly longer compiled code. I really do need to get a life, don't I? Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] Deep and long indentations vs multiple exit points
Dave Barret gave this code as an example: GOSUB OPERATION.1 IF (NOT(ERROR)) THEN GOSUB OPERATION.2 IF (NOT(ERROR)) THEN GOSUB OPERATION.3 IF (NOT(ERROR)) THEN GOSUB OPEARTION.4 END END END What about this version? GOSUB OPERATION.1 IF ERROR ELSE GOSUB OPERATION.2 IF ERROR ELSE GOSUB OPERATION.4 IF ERROR ELSE GOSUB OPERATION.5 or, more acceptably: GOSUB OPERATION.1 IF GOOD THEN GOSUB OPERATION.2 IF GOOD THEN GOSUB OPERATION.4 IF GOOD THEN GOSUB OPERATION.5 Which I personally find far more readable than the indented code. Regards, Keith De gustibus non est disputandum Johnson --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
Re: [U2] [UV] Can I get some advice on triggers?
A big Thank You to everyone for the information. In the end it was straightforward, but I stumbled on a couple of the steps. Maybe this will help others Firstly, I wanted the code to be locally, not globally, cataloged. Our CATALOG verb has PICK.FORMAT rather than INFORMATION.FORMAT on line 6, so it took me a little while to realise I needed a new CATALOGI verb. Secondly (and this is the bit where _knowing_ the system manual is wrong helped) the actual command line I wanted was CREATE TRIGGER ADDRESS.TRIGGER BEFORE INSERT OR UPDATE ON PERSON FOR EACH ROW CALLING ADDRTRIGGER; I eventually put in two VOC items, CTRIG for the above, and DTRIG which is DROP TRIGGER PERSON ADDRESS.TRIGGER; The code is simplicity itself 008: * See if the address and post code are the same 009: SAME = @TRUE 010: IF NEWREC5 NE OLDREC5 THEN SAME = @FALSE 011: IF NEWREC8 NE OLDREC8 THEN SAME = @FALSE 012: IF SAME THEN RETURN 013: 014: * Update the date on the file 015: NEWREC34 = DATE() 016: 017: RETURN The idea is to pass only changed addresses out to a third party at intervals to get checked. Thanks again for the help, Regards, Keith. PS. I thought the FROM in COPY FROM file ... was a pain, but the requirement to put FOR EACH ROW CALLING? Even if they plan to extend the command usage in the future, couldn't they make the wild assumption that, if we don't say *anything* restricting the rows, we actually mean FOR EACH ROW? From the people who gave us OVERWRITING, I guess. --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] Good Practice?
Thanks for putting up the right link, Thomas. (dammit, I must measure BEFORE cutting... measure BEFORE cutting... hit self) To answer Ed's questions, 1. nap 5 sleeps for 5 milliseconds. It may not be necessary, so you could comment it out and see how that goes. If you do get comm. delay that causes a problem and don't have nap, try a time-wasting loop - not a sleep command. I tried sleep years ago and it is frustrating. A nap of up to 100 milliseconds is almost unnoticeable in practice. 2. KEYIN() on Universe seems to be exactly the same as IN() on UniData. Regards, Keith PS Here's a silly program showing NAP 001: Crt Bang!: 002: For I = 10 To @CrtWide-20 003: Crt '.': 004: Nap 10 005: Next 006: Crt Ouch! --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] Good Practice?
Hi Mark, Just a couple of points. First, the value of F200.SCHEME.CODE of CK *cannot* trigger a false positive. TEST = '\AF1\CK1\CK2\H\LHC\MP\NU1\NU2\TK1\TK2\' IF INDEX(TEST,'\':F200.SCHEME.CODE:'\',1) THEN THAT = @FALSE is fairly bulletproof because of the backslashes around both the string and the substring. Second, I wasn't concerned about LOCATE adding a cycle or two. It's just that one has to provide the SETTING variable which is then ignored. INDEX involves a string, a substring, and a start count - there's virtually nothing redundant. Using LOCATE involves a string, a substring, the position found as well as (possibly) a start position and a search sequence; so it can be regarded as a more complex function. Also, one can choose from three forms of LOCATE - Pick, Ideal/Reality, or Information. Then, to avoid the long setup string, one has to use CONVERT (or SWAP or CHANGE). Regards, Keith PS Good surname - mine's Norwegian in origin... great grandad jumped ship in Auckland. --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] Good Practice?
Craig Bennett pointerd out that TEST = '\AF1\CK1\CK2\H\LHC\MP\NU1\NU2\TK1\TK2\' IF INDEX(TEST,'\':F200.SCHEME.CODE:'\',1) THEN THAT = @FALSE *can* generate a false positive if F200.SCHEME.CODE contains an embedded slash. In this case it can't, because the F200.SCHEME.CODE is validated on entry against a list of codes (whew!) The super long string I started with is from a program to decide whether or not to show something on a printout. I suppose I could quibble and say it is actually a true positive... but no, Craig got me proper. My bad. However, this brings up a good practice thing to note. The seperator must not be 'enterable'. So that makes INPUT a bad idea. If you want to try out an alternative, I just put http://www.pickwiki.com/cgi-bin/wiki.pl?action=editid=GetKey up on the wiki. My problem was that the Asus eeePC does not seem to be a proper xterm, so I reproduced most of the functionality of QM's keycode() input. === Looking back, I feel I may have defended the INDEX function more than I wanted. My own code generally looks like this ENDWORDS = 'IF\OPEN\OPENSEQ\READNEXT\READ\READU\READV\READVU\' ENDWORDS = ENDWORDS:'MATREAD\MATREADU\LOCATE' CONVERT '\' TO AM IN ENDWORDS and I use the classic form LOCATE(WORD,ENDWORDS;POSN) THEN Regards, Keith PS: The extra line is solely to prevent wrapping on an eighty-column terminal. I value my concept of readability above efficiency. --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] [UV] Can I get some advice on triggers?
Hi, I'm hoping someone can give me some help on triggers. I want to put a trigger on a file to datestamp address changes. The system manual (25119270.pdf) says that triggers aer set up by the command CREATE TRIGGER trigger.name [BEFORE|AFTER|UPDATE] But when I try that I get an SQL prompt. We don't use SQL at all - is there some way of setting up triggers without it? Is there another manual I should look at? Thanks, Keith. --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] Good Practice?
Here's an example of how I rewrote some code. Old version 284: * IF F200.SCHEME.CODE = CK1 OR F200.SCHEME.CODE = CK2 OR F200.SCHEME.CODE = NU1 OR F200.SCHEME.CODE = NU2 OR F200.SCHEME.CODE = TK1 OR F200.SCHEME.CODE = TK2 OR F200.SCHEME.CODE = GS1 OR F200.SCHEME.CODE = JM OR F200.SCHEME.CODE = MP3 OR F200.SCHEME.CODE = LHC OR F200.CALC.CODE = H OR F500.S91.ANNUITY.SEQ + 0 = 2 OR F500.S48.ANNUITY.SEQ + 0 = 2 OR F200.SCHEME.CODE = AF1 OR F200.SCHEME.CODE = MP THEN; *002 285: IF F200.SCHEME.CODE = CK1 OR F200.SCHEME.CODE = CK2 OR F200.SCHEME.CODE = NU1 OR F200.SCHEME.CODE = NU2 OR F200.SCHEME.CODE = TK1 OR F200.SCHEME.CODE = TK2 OR F200.SCHEME.CODE = LHC OR F200.CALC.CODE = H OR F500.S91.ANNUITY.SEQ + 0 = 2 OR F500.S48.ANNUITY.SEQ + 0 = 2 OR F200.SCHEME.CODE = MP OR F200.SCHEME.CODE = AF1 THEN ; *002*003 New version 261: THAT = @TRUE 262: *TEST = '\AF1\CK1\CK2\GS1\H\JM\LHC\MP\MP3\NU1\NU2\TK1\TK2\' 263: TEST = '\AF1\CK1\CK2\H\LHC\MP\NU1\NU2\TK1\TK2\' 264: IF INDEX(TEST,'\':F200.SCHEME.CODE:'\',1) THEN THAT = @FALSE 265: 266: IF F500.S91.ANNUITY.SEQ + 0 GE 2 THEN THAT = @FALSE 267: IF F500.S48.ANNUITY.SEQ + 0 GE 2 THEN THAT = @FALSE I think the new version is easier to maintain (well I would say that), but the code itself is more complex; which is rather interesting. Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] RE: (U2) Dictionary Help
Al DeWitt had a need for a utility to search the dictionaries. I had to write one a little while ago - to look for SB+ stuff, as it happens. PROGRAM FIND.DICT * This program searches the data dictionary section * of every file in the VOC for a string CRT 'INPUT STRING ': INPUT THAT IF THAT = '' THEN STOP OPEN 'VOC' TO VOC ELSE STOP 201,'VOC' EXECUTE 'SSELECT VOC WITH TYPE EQ F' IDLIST = '' LOOP WHILE READNEXT ID DO IDLIST-1 = ID REPEAT XXNO = DCOUNT(IDLIST,@AM) FOR XX = 1 TO XXNO ID = IDLISTXX OPEN 'DICT',ID TO TEST ELSE CONTINUE SELECT TEST LOOP WHILE READNEXT DID DO READ REC FROM TEST,DID ELSE CONTINUE IF INDEX(REC,THAT,1) THEN CRT ID,DID REPEAT NEXT XX Might be useful, but I know if you could say it was efficient... Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] Good Practice?
Neil suggested using LOCATE rather than INDEX in my example. I'm not sure I agree that would be any less complex as far as the code is concerned. INDEX and LOCATE are both 'complex' compared with the IF statement, and since LOCATE needs its SETTING variable, it's arguably the more complex statement. There are three different forms of LOCATE, so that can cause problems. Lastly, the variable TEST has to be set up with attribute marks either by multiple lines or by the very long line below; which, I have to say, I don't find very readable at all. TEST = 'AF1':@AM:'CK1':@AM:'CK2':@AM:'GS1':@AM:'H':@AM:'JM':@AM:'LHC':@AM:'MP': @AM:'MP3':@AM:'NU1':@AM:'NU2':@AM:'TK1':@AM:'TK2' There may be a slight speed benefit in restricting the scan by using 'AL'; but this is not material (or possibly even detectable?) in strings of this length. There is also an ongoing maintenance risk because the next programmer might not notice the codes were sorted, and may just add a new one to the end of the string. Regards, Keith. --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE:[U2] UD - SYSTEM(14)
Hi Bill, There is a vague memory at the back of my mind that SYSTEM(14) could be problematical. Would it work in your circumstance to change the last line to use the INPUT ..., -1 mechanism? EG * UNTIL NOT(SYSTEM(14)) DO REPEAT ; ** UD version INPUT ANYTHING.THERE,-1 WHILE ANYTHING.THERE DO REPEAT Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
Re: [U2] [UV] Conversion code for week number
Wol wrote INT (DAY / 365.25) will always give the correct number of years since day 0. The following shows that is not strictly true because of the centennial non-leap year. Test Program 001: ZZ = 0 002: FOR XX = 1 TO 5 003: Y1 = 1968 + INT((XX-1)/365.25) 004: Y2 = OCONV(XX,'DY') 005: IF Y1 NE Y2 THEN 006:ZZ += 1 007:CRT ZZ,XX,OCONV(XX,'D') 008: END 009: NEXT XX Results 1 48579 01 JAN 2101 2 48944 01 JAN 2102 3 49309 01 JAN 2103 4 49674 01 JAN 2104 I vaguely remember a comment a long time ago (maybe in c.d.p?) that the date was chosen _because_ it was a leap year that started on a Sunday and that this helped in converting dates from other IBM formats for the GIRLS/GIM project. Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] Copying from AIX box to Linux box
If push comes to shove network them directly and forget the security... :) (I am assuming they are both in the same room) Otherwise I would say an NFS mount and rsync is your best bet. PS I have had issue in the past with an old AIX system that kept dropping its NIC to half duplex. This made data transfers a bear. Have you looked for things like this? -Keith Johnson LCSC -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Adrian Merrall Sent: Thursday, July 12, 2007 5:28 PM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Copying from AIX box to Linux box On 7/13/07, Jon Wells [EMAIL PROTECTED] wrote: Hi all, We are trying to copy Unidata accounts from our AIX box to our Linux box. We do not have a common tape drive we can use which would seem the ideal way to copy large amounts of stuff. We decided to try using scp (SSH version of cp) and managed to get some small accounts copied over and working. It is a very slow process :-( While trying to use scp on an account with larger files (not huge mind you), the process will stall and then it is disconnected. Does anyone know what would cause scp to stall like that? It does not seem to use up a lot of resources on either box. Any suggestions on what else would work in both a secure and, preferably, a faster manor? John, Apart from NFS mounts, rsync is your new best friend here (assuming you have it on the aix box - a quick google shows it is available.) I would do something like rsync -vaze ssh localdir remotehost:/remotedir Where v = verbose, a=archive mode (preserve directory structure, dates, times, perms etc.), z= compress/decompress on the fly and e ssh is the transport mechanism. Test it on a small directory first as trailing slashes on the local directory has an effect on what you copy. Rsync will only copy differences so if you get 1/2 way through a directory and kill it, it will restart where it left off, or pick up any changes to files already copied in the meantine. If you kill it 1/2 way through an individual file it will restart that whole file though. When moving files around multiple machines it is one of those can't live without tools. If you need to share the machine or network, you can also use the --bwlimit flag to reduce the net copy speed so you don't impede on other users. Not sure if this will help your stall problem though - if that is an ssh problem you will see the same issue. Possibly using -v on scp to see the debug messages? HTH Adrian --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] [BB] U2 Enhancement Request - WRITE
It's always annoyed me that WRITE permissions were not handled better. Even under R83, one could set up a file with a user able to read, but not write to it (file definition attributes 5 and 6, I think?). If a WRITE was encountered and the permission was not correct, the program would just crash horribly. As an application programmer who tried to put out solid, error-free code, this really ticked me off. Any program I wrote that updated a file could be made to crash by a change to an external definition. GAAHHH!!! This is probably the reason why Pick's read/write security mechanism never seemed to be used, even though it was very flexible. From my point of view, I want one of the following (although I wouldn't turn my nose up at both) - 1. The write fails nicely and I can catch it in code. 2. I have a REALLY easy way of finding out if the write will fail before I even try the write. Fiddling about with the STATUS and then trying to figure out if this user is owner, or in the group, or whatever is VERY trying. Especially since a user can be in more than one group (On this UNIX box, anyway). It seems to me this should have been addressed years ago - wasn't the Spectrum Manfacturers' thing a waste of space? IBM, holding 2 big cards at the multivalue game, ought to be taking a lead on this, but they'll probably leave it to Martin Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] [UV] VLIST failure - some detail of another program
I don't know if there's any interest in this, but I have found a very short program where the old compiled version causes a problem with VLIST. Here are the details The old compiler version was 9.3.1.2, the new one 10.2.0.0 001: $OPTIONS -F L ;*WR631 002: * 003: *** TITLE: Time conversion routine. 004: * 005: * Written by Wilfred D'Mello, 02-August-1993 006: * 007: PRINT 008: PRINT Time conversion routine. Press RETURN to return to TCL 009: PRINT You may enter time in 24 hour format eg: 18:30:26 010: PRINT OR 011: PRINT In 12 hour format with AM/PM appended eg: 6:30:26PM 012: PRINT 013: LOOP 014: PRINT Enter Time to convert : 015: INPUT ITIME 016: UNTIL ITIME = '' DO 017: ITIME = OCONV(ITIME,MTS) 018: ITIME = ICONV(ITIME,MTS) 019: PRINT @(40):ICONV()=:ITIME: 020: PRINT @(60):OCONV()=:OCONV(ITIME,MTS) 021: PRINT 022: REPEAT 023:END When I used VLIST, the line numbering gets out of kilter at the LOOP - all the source prints, then the if fell over like this 00023:END 00258 0001C : 12E print Enter Time to convert 00259 00022 : 0B9 input 0 16 = ITIME 00260 0002A : 10C nop 00260 0002C : 06E eq ITIME = $R0 00260 00034 : 2E0 testtw $R0 00084: 00261 0003C : 112 oconv ITIME MTS = ITIME 00262 00044 : 0AC iconv ITIME MTS = ITIME 00263 0004C : 04A cursor 40 -1 = $R0 00263 00054 : 12E print $R0 ICONV()= ITIME 00264 0005E : 04A cursor 60 -1 = $R0 00264 00066 : 112 oconv ITIME MTS = $R1 00264 0006E : 130 printcrlf $R0 OCONV()= $R1 00265 00078 : 126 pcrlf 00266 0007A : 10C nop 00266 0007C : 0C2 jump 0: 00267 00084 : 01C calculate Abnormal termination of UniVerse. Fault type is 11. Layer type is Unknown. Program /usr/ibm/uv/bin/vlist core dumped. [SIGSEGV] segmentation violation Interestingly, I don't get the core dump if the source is missing - but the last two lines don't make any sense to me. 00266 0007C : 0C2 jump 0: 00267 00084 : 01C calculate [365] = [49] The VLIST output from a newly compiled program ends like this 00022: REPEAT 00022 0007A : 10C nop 00022 0007C : 0C2 jump 0001C: 00023:END 00023 00084 : 190 stop So it looks like there's some problem with the way it works out the jump address. I compared the object code and the only changes are in the header and a couple of extra char(0)s at the end of the program. If the logic is unchanged, why does the addressing go wrong? OLD NEW 3 147 162 --- EG old version has char(147) as third character, new is char(162) 4 18 0 Aha! DTX 147 = 93 18 = 12 - 9.3.1.2 DTX 162 = A2 0 = 0 - 10.2.0.0 8 0 16 29 0 255 30 0 9 31 0 8 32 0 216 51 0 42 52 0 72 73 0 70 74 0 85 75 0 18 76 0 15 657 255 0 --- New one is two characters longer 658 255 0 I'm off until Monday morning, so I won't be able to give any further details before then. It's definitely a puzzle, and possibly a bug. Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] RE: (UV) - Is VLIST in version 10.2 fragile?
Hi Leroy, Thanks for your comments. I figured it might be a problem with opcode changes. My problem is that I'm not certain that the source code we have is correct. To recapitulate - * We have old object in production. * We have no source code in production * We have source code in development. * The development object is different because it was compiled more recently (and from a different directory) * Any given development source program is very unlikely to be the same as production *sigh*. This is the situation where one most wants VLIST to work! I would have preferred to just scan the VLIST output but I guess I'll just have to work it out by code analysis. Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[no subject]
Leroy wrote Are you able to copy the object from your live system to your dev system to see if VLIST aborts there? Because of the big upgrade in SB+ and the fact we were also upgrading Universe, we upgraded the test system first to see what problems it would bring. Actually we built a temporary system on a loan machine first, upgraded THAT, then upgraded the development/test machine, then upgraded the production machine. Thanks for the thought, though. Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] (UV) - Is VLIST in version 10.2 fragile?
Hi there, We have just upgraded both Universe and System Builder, going from UV 10.1.8 to 10.2.0 and from SB+ 3.4 to 5.4. Because the SB+ common block changed slightly, I had to recompile all programs that referenced it. However, I have discovered that not all the source code was on the production system. I wanted to verify that the development code was valid, but VLIST did not work properly. When I try VLIST, it seems to get the testfw jump wrong on line 22 (or 24 in the development version). From then on it gets stranger and stranger until it falls over. It looks like it gets out of step somehow. I realise it's not something anyone on the list can help with, but has anyone else noticed VLIST is more fragile in UV version 10.2? The development version of the source code and the VLIST from production are below. Don't bother criticising it - you can't be more scathing than me because I've had more practise. Regards (and thanks), Keith 001: $OPTIONS -F ;*WR631 002: SUBROUTINE LWPINP.INTERVAL.SEQ 003: ** 004: * Description of subroutine 005: * Used for documentation purposes (including auto documentation) 006: ** 007: * 008: $INCLUDE DMSKELCODE COMMON 009: EQU AM TO CHAR(254), VM TO CHAR(253) 010: * 011: *PARAM(3) = 0 012: ORIG.REC = 0 013: INTERVAL.SEQ = WORK3 014: LWOP.INTERVAL = 0 015: LWOP.INTERVAL.FILE = '' 016: OPEN.OK = @FALSE 017: CALL PAN.FILE.HANDLE ('LWOP.INTERVAL', LWOP.INTERVAL, LWOP.INTERVAL.FILE, OPEN.OK) 018: IF NOT(OPEN.OK) THEN 019: CALL SB.DISP (3, 'Can not open the file LWOP.INTERVAL') 020: RTN.FLAG = 1 021: END 022: FOUND = @TRUE 023: BEGIN CASE 024: CASE INTERVAL.SEQ = '' 025: KEY = WORK1: '|': WORK2: '|' 026: SEQ = 1 027: LOOP 028:READV DUMMY FROM LWOP.INTERVAL.FILE, KEY: SEQ, 1 ELSE FOUND = @FALSE 029: WHILE FOUND DO 030:SEQ += 1 031: REPEAT 032: KEY = KEY: SEQ 033: WORK3 = SEQ 034: * PARAM(3) = 1 035: ORIG.REC = 1 036: CASE INTERVAL.SEQ = 'L' 037: KEY = WORK1: '|': WORK2: '|' 038: SEQ = 1 039: LOOP 040:READV DUMMY FROM LWOP.INTERVAL.FILE, KEY: SEQ, 1 ELSE FOUND= @FALSE 041: WHILE FOUND DO 042:SEQ += 1 043: REPEAT 044: KEY = KEY: SEQ - 1 045: WORK3 = SEQ - 1 046: CASE 1 047: KEY = WORK1: '|': WORK2: '|': WORK3 048: READV DUMMY FROM LWOP.INTERVAL.FILE, KEY, 1 ELSE FOUND = @FALSE 049: IF NOT(FOUND) THEN 050:CALL SB.DISP (3, KEY: ' not on the LWOP INTERVAL file') 051:RTN.FLAG = 1 052: END 053: END CASE 054: 055: RETURN VLIST SFPROGS LWPINP.INTERVAL.SEQ Subroutine SFPROGS.O/LWPINP.INTERVA/L.SEQ Compiler Version: 8.3.3.1 Object Level: 5 Machine Type: 10 Local Variables : 12 Subroutine args : 0 Unnamed Common : 0 Named Common Seg: 1 Object Size : 540 Source lines: 52 Object Date Time: 00011 0 : 060 dyn_extractWORK 3 0 0 = INTERVAL.SEQ 00012 C : 0F8 move 0 = LWOP.INTERVAL 00013 00012 : 0F8 move = LWOP.INTERVAL.FILE 00014 00018 : 0F8 move 0 = OPEN.OK 00015 0001E : 0F8 move LWOP.INTERVAL = _T 00015 00024 : 01E call PAN.FILE.HANDLE _T LWOP.INTERVAL LWOP.INTERVAL.FILE OPEN.OK 00020 0005C : 0F8 move 1 = FOUND 00022 00062 : 06E eq INTERVAL.SEQ = $R0 00022 0006A : 2DE testfw $R0 0: 00023 00074 : 0F4 mmatstore [97] = WORK 00023 0007A : 018 braces 0 0 = $R0 00023 00082 : 060 dyn_extractWORK 2 0 0 = $R1 00023 0008E : 104 multi_cat $R0 | $R1 | = KEY 00024 0009C : 0F8 move 1 = SEQ 00026 000A2 : 03A concat KEY SEQ = $R0 00026 000AA : 272 reapv LWOP.INTERVAL.FILE $R0 1 = DUMMY 00026 000B4 : 0C8 jumpt 000BE: 00026 000BC : 0F8 move 0 = FOUND 00027 000C2 : 2DE testfw FOUND 0: 00028 000CC : 0D8 lockelse OPEN.OK 00028 000D0 : 009 and1 SEQ = [195] 00029 000D8 : 000 abort 00029 000DA : 000 abort 00029 000DC : 0A0 ge [59] KEY = SEQ 00030 000E4 : 00D atan[101] = WORK 00030 000EA : 010 bitand 0 0 = SEQ 00031 000F2 : 00E atinput
RE: [U2] 2 questions, one on STATUS and the other on STEAL-FILE
Jeff Fitzgerald wrote Could you give us an example of that -- I don't seem to be able to get it to work: I remember in the past being able to use the form SET.INDEX FAST.STATS TO ./I_FAST.STATS. However, now one has to use the key word RELATIVE.PATH like this SET.INDEX FAST.STATS TO RELATIVE.PATH The key word is within the program only - it is not in the VOC, and this usage is undocumented. (!) The program will prompt you to show what it would use (./I_FAST.STATS) and ask if this is OK. I really like the idea of using relative addressing for indexes, but I do wish this was documented properly. Using the word RELATIVE.PATH to implement the capability is noted in the program header (line 17) as being GTAR E7818 dated 05/08/05, but it appears the actual capability was provided by E1752 of 07/12/03 (line 19). As I say, I remember using a relative path reference some time ago... possibly before 2001. Regards, Keith P.S. Can someone come up with a humorous acronym for the archetypal nit-picking documentation-nagging grumpy old bug^H^H^Hprogrammer? Just wondering. --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] A couple of questions about the PE version
As I recall, neither U2 console understands screen addressing - which means you can't run most of the applications I've written from the console. To my mind this means that someone can't just run U2 'out of the box' and get a thing that works. They will have to connect to a terminal emulator or set up some interface. Whatever that is, it may have the potential to fail or to confuse. I know it _is_ possible to have a console that allows screen addressing, because the QM one does. Does anyone know why the U2 console(s) cannot do simple green screen applications? What is the easiest, simplest way to set up a terminal session with the Personal Edition on a standalone PC? I'd like to do it on my home one. Regards, Keith P.S. Decrepitude means I can only follow simple instructions that assume neither knowledge nor sense. --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] 2 questions, one on STATUS and the other on STEAL-FILE
Brian Leach wrote snip 1. Before you take a copy of the file in Explorer, check whether it has any indexes. If a file has secondary indexing, UniVerse holds the absolute path to the index in the file header. You must use SET.INDEX to either change or remove that path on the history file, otherwise your history file will update your live index .. not a smart move. You can use the SET.INDEX command to make the path a relative one like this SET.INDEX FILENAME TO RELATIVE.PATH Which is something I have only just discovered by inspecting the source code for SET.INDEX - it's not in the user reference manual at all! Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] 2 questions, one on STATUS and the other on STEAL-FILE
Hi there, There is a utility program at http://www.pickwiki.com/cgi-bin/wiki.pl?FileStatus to show the file STATUS stuff in a usable manner. You may also be interested in FILEINFO stuff which is at http://www.pickwiki.com/cgi-bin/wiki.pl?FileInfo Regards, Keith --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] Cron job creates many PH entries
Turnoff not off hand How about a simple remove find /path/ -name DUPCHECK_*_* -mtime +1 | xargs -I {} ls -l {} find /path/ -name DUPCHECK_*_* -mtime +1 | xargs -I {} ls -l {} log... find /path/ -name DUPCHECK_*_* -mtime +1 | xargs -I {} rm {} drop it in your cron or in a script and have a crontab call it once a day/ hour etc. Keith Johnson IT Lewis-Clark State College (LCSC) 208 792 2510 -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Scott Ballinger Sent: Thursday, October 05, 2006 9:38 AM To: u2-users@listserver.u2ug.org Subject: [U2] Cron job creates many PH entries Universe 10.1.4, pick flavor, Red Hat I have a UV phantom cron job that runs every minute. It checks a directory for any inbound files, processes them, then writes them to an outbound directory. My problem is that the PH directory is filling up with DUPCHECK_time_date files (1440 per day). Anyone know how to turn off this feature? Here is the cron job: #!/bin/sh TERM=ansi ; export TERM cd /usr/yyy/XXX /usr/ibm/uv/bin/uv PHANTOM DUPCHECK DUPCHECK is a cataloged basic program in the XXX account. Thanks, /Scott Ballinger Pareto Corporation Edmonds WA USA 206 713 6006 --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] Unidata and multi-core chips.
Andy, I am not entirely sure on your first part of your question. But I would say no to the second. UNIDATA is per seat use not per CPU. At least in the UNIX side of things. -Keith Keith Johnson IT Lewis-Clark State College (LCSC) 208 792 2510 -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Andy Squires Sent: Thursday, October 06, 2005 8:59 AM To: [EMAIL PROTECTED]; u2-users@listserver.u2ug.org Subject: [U2] Unidata and multi-core chips. We're about to move to Unidata 6.1. Does anyone know if it can take advantage of multi-core chips, and, if so, will the licensing be different? | Andy Squires -- Systems Analyst | | Office of Information Technology -- American University | | (202) 885-2785 | --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] Unidata and multi-core chips.
Funny it just showed up to my box,,, I swear I did not see the date sorry for the late post -KJ Keith Johnson IT Lewis-Clark State College (LCSC) 208 792 2510 -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Roger Glenfield Sent: Monday, June 19, 2006 1:22 PM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Unidata and multi-core chips. Did Keith just reply to an email from last October? Or is the u2 list/server having problems? Rog Keith Johnson wrote: Andy, I am not entirely sure on your first part of your question. But I would say no to the second. UNIDATA is per seat use not per CPU. At least in the UNIX side of things. -Keith Keith Johnson IT Lewis-Clark State College (LCSC) 208 792 2510 -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Andy Squires Sent: Thursday, October 06, 2005 8:59 AM To: [EMAIL PROTECTED]; u2-users@listserver.u2ug.org Subject: [U2] Unidata and multi-core chips. We're about to move to Unidata 6.1. Does anyone know if it can take advantage of multi-core chips, and, if so, will the licensing be different? | Andy Squires -- Systems Analyst | | Office of Information Technology -- American University | | (202) 885-2785 | --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] making a .csv file into an .xls file?
Cedarville university has a program called DOWNLOAD that can do both file types and others that works perfectly with UNIDATA... (It has never error-ed on me in 5 yrs.) It is free for higher ED institutions. I am not sure about the rest of the world... I bet it would work well for you. It can make DB2 and all kinds of file types... -Keith -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of George Gallen Sent: Friday, January 13, 2006 11:46 AM To: u2-users@listserver.u2ug.org Subject: [U2] making a .csv file into an .xls file? Our UV system creates an ASCII .csv file for another system to import on a daily basis. The 3rd party software after a recent upgrade now only imports .xls files. Is there an easy way to automate Excel to load the .csv, then save as .xls? Or how much more difficult is it to create the .xls instead of a .csv? I thought about getting one of those programs that records mouse clicks, and create a macro of the conversion (since the filename is the same each day), but wonder if there was something we could do in a batch file and run every day under the Windows scheduler. George George Gallen Senior Programmer/Analyst Accounting/Data Division [EMAIL PROTECTED] ph:856.848.1000 Ext 220 SLACK Incorporated - Delivering the best in health care information and education worldwide. http://www.slackinc.com --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] AIX UPGRADE
I do not think so; we were on that for a short time. I usually load only once a year for OS and UNIDATA. We went from 5.2 to 5.3 for two weeks then when to UNIDATA 6.14 or something like that. Now 7.+ is available for UNIDATA -Keith Johnson Lewis-Clark State College Lewiston, ID 208 792 2510 -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Davis, Dawn Sent: Thursday, November 10, 2005 7:58 AM To: u2-users@listserver.u2ug.org Subject: [U2] AIX UPGRADE Does AIX 5.3 require an upgrade to Unidata 6.1? - We are currently at 6.0+ TIA Dawn Janel Davis DBA II [EMAIL PROTECTED] 410-386-8058 Carroll Community College 1601 Washington Road Westminster, MD 21157 --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] [UD] how to find records with a in the data
Please post; I would like this information too. -Keith Johnson LCSC. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kathy Tymoczko Sent: Wednesday, October 26, 2005 2:09 PM To: u2-users@listserver.u2ug.org Subject: [U2] [UD] how to find records with a in the data We have a number of records with double-quote () characters in one of the data fields. We'd like to be able to select those records so we can fix up the data. Is there any way to find these records with a SELECT statement? I've tried: SELECT filename WITH fieldname LIKE '..' which gives a missing quote error and SELECT filename WITH fieldname LIKE .. which returns all the records in the file ESEARCH does work, but we thought we should be able to do this somehow with SELECT. Kathy Tymoczko Information Technology Services Wabash College, Crawfordsville, Indiana 47933 [EMAIL PROTECTED] 765-361-6440 --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] Unidata and multi-core chips.
Hi all, We are about to go to RFP for a new box. How does this change the dynamics if you use/or are looking at IBM's LPARS or virtual server technology? -Keith Johnson Lewis-Clark State College 500 8th Ave. Lewiston, ID. 83501 208 792 2510 -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of David Wolverton Sent: Thursday, October 06, 2005 9:59 AM To: u2-users@listserver.u2ug.org; [EMAIL PROTECTED] Subject: RE: [U2] Unidata and multi-core chips. Go ahead and move to UniData 7.1 -- if you have not already installed 6.1, just skip it entirely - I can't think of a downside... To my knowledge, UniData is unaware of multi-anything... When you start up, in the case of a dual/quad-processor, my understanding is that process is 'bound' to whatever CPU the OS kicked it off on... So, in theory, you do get some advantage of multiple processors, but the load is not dynamically balanced based on usage. Therefore, if all your heavy users happen to get assigned to CPU1, then CPU2 will be vastly underutilized. But if they sign off and back on, and the load has not changed, it's likely their new session would be bound to CPU2, but that is the OS handling the event, not UniData. I don't think Multi-Core will be any different - it's a way to put more than one CPU on a single die... But the brains on here from IBM will hopefully be able to correct me... David -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Andy Squires Sent: Thursday, October 06, 2005 10:59 AM To: [EMAIL PROTECTED]; u2-users@listserver.u2ug.org Subject: [U2] Unidata and multi-core chips. We're about to move to Unidata 6.1. Does anyone know if it can take advantage of multi-core chips, and, if so, will the licensing be different? --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ --- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/
[U2] Screen addressing in UVPE console
I'm re-developing my field entry program and would like to test it in UVPE on Windows NT. However the console does not have screen addressing or clear screen, etc. Has anyone got a way of getting around this? Regards, Keith Johnson now ex-Owner/Host www.emeraldglenlodge.co.nz 04 299 3066 --- u2-users mailing list [EMAIL PROTECTED] To unsubscribe please visit http://listserver.u2ug.org/
Re: [U2] [UV] WHILE READNEXT id DO
I like the syntax a lot, and even put the LOOP on the same line as the UNTIL. So Ray Wurlod's example I would have written as LOOP WHILE READSEQ line FROM f GOSUB processline REPEAT I was surprised to see an assertion that this didn't work in Pick, as I remember Henry Eggers was a particularly keen exponent of the usage - which implies that Reality should support it. Regards, Keith Johnson Owner/Host www.emeraldglenlodge.co.nz 04 299 3066 --- u2-users mailing list [EMAIL PROTECTED] To unsubscribe please visit http://listserver.u2ug.org/
RE: [U2] MV Fad
Hey can we stop this (flaming) BS; this is a waist of time to read; sorry to add to the thread in such a nonproductive way. PS there is always two sides to every story. Yours, mine and the truth; quote the lyric... Keith Johnson Systems AdministratorProgrammer / Analyst Lewis-Clark State College (LCSC) 208.792.2510 500 8th Ave. Lewiston, ID 83501 -Original Message- From: Jeff Schasny [mailto:[EMAIL PROTECTED] Sent: Wednesday, May 05, 2004 12:34 PM To: [EMAIL PROTECTED] Subject: RE: [U2] MV Fad -Original Message- From: Jeremy Adell [mailto:[EMAIL PROTECTED] [snip] To last at anything, you have to be realistic about your threats and weaknesses. Look at a legacy Oracle system with required database standards built in and compare it to a PICK db with no standards and 20 years of maintenance. --- u2-users mailing list [EMAIL PROTECTED] http://www.u2ug.org/listinfo/u2-users
RE: [U2] PHANTOM forever
Title: RE: [U2] PHANTOM forever Dana, How about trying a cron job or looking in to your inittab man pages? I personally have never wanted to make an infinite loop, however I have made my share on accident. I am sure this type of logic will do the trick but it might just run away and spawn so many jobs that you have no resources or UNIDATA Lic for your users. LOOP PHANTOM {WORK HERE program or PA etc} REPEAT # No conditional # I personally would be very careful with this. One miss step here and you might just regret this later. A better way would likely be researching making the process a daemon... (from my AIX Man pages) Files Reference --- inittab File Purpose Controls the initialization process. Description The /etc/inittab file supplies the script to the init command's role as a general process dispatcher. The process that constitutes the majority of the init command's process dispatching activities is the /etc/getty line process, which initiates individual terminal lines. Other processes typically dispatched by the init command are daemons and the shell. Keith Johnson Systems AdministratorProgrammer / Analyst Lewis-Clark State College (LCSC) 208.792.2510 500 8th Ave. Lewiston, ID 83501 -Original Message- From: Dana Baron [mailto:[EMAIL PROTECTED]] Sent: Monday, May 03, 2004 9:35 AM To: U2-Users Subject: [U2] PHANTOM forever Greetings, Looking for some advice with Phantoms (seems to be a theme lately). I have a udt program that I want to have always running (infinite loop). I want to start this as a background process using PHANTOM. Pretty straight forward so far. How can I do this so the process keeps running even after I log out the process that started it? Unidata 5.2; Tru64 Unix 5.1A Thanks for any help Dana Baron System Manager Smugglers' Notch Resort --- u2-users mailing list [EMAIL PROTECTED] http://www.u2ug.org/listinfo/u2-users