Last compile date on D3 v9.2

195 views
Skip to first unread message

Rick Weiser

unread,
Feb 6, 2015, 12:15:23 PM2/6/15
to mvd...@googlegroups.com
Hi all,

Is there a way to determine when the last compile date and time was for a program?

Thanks,

Rick

Martin Phillips

unread,
Feb 6, 2015, 12:20:45 PM2/6/15
to mvd...@googlegroups.com

Hi Rick,

 

The FIND.PROGRAM command will report this for a catalogued program. There is an equivalent !FINDPROG() subroutine if you need to do this programmatically.

 

There is currently no tool to do it for a program that has not been catalogued though this would not be hard to add.

 

 

Martin

--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+un...@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms

Dan Ell

unread,
Feb 6, 2015, 12:30:38 PM2/6/15
to mvd...@googlegroups.com

I am not positive it is the same on v9.2, but on v9.0 you can simply  LIST DICT BP *A4 and it will give you the last compile date in internal format.  You can add a MD

 

LASTCOMPILE

001 A

002 04

003 Last Compiled

004

005

006

007 D2/

008

009 R

010 10

 

SORT DICT BP LASTCOMPILE will list the programs and last compile date

 

Dan Ell
Technical Support Engineer
jBASE
9245 Research Drive, Irvine, CA 92618
949-383-2429
da...@jbase.com

www.jbase.com

Rick Weiser

unread,
Feb 6, 2015, 12:34:43 PM2/6/15
to mvd...@googlegroups.com
Hi All,

Thanks for your comments.  Dan, this is basically what I ended up doing.  I listed each attr of the dict until I found data that looked like a date.  Attr 4 was the one.

Thanks again,

Rick

Tony Gravagno

unread,
Feb 6, 2015, 12:38:24 PM2/6/15
to mvd...@googlegroups.com
SORT DICT BP BY-DSND C/DATE BY C/TIME C/DATE C/TIME

The dict items are already in the MD.

Best,
T

geneb

unread,
Feb 6, 2015, 12:42:24 PM2/6/15
to mvd...@googlegroups.com
On Fri, 6 Feb 2015, Rick Weiser wrote:

> Hi all,
>
> Is there a way to determine when the last compile date and time was for a
> program?
>
c/date and c/time if memory serves.

list dict bp c/date c/time

g.

--
Proud owner of F-15C 80-0007
http://www.f15sim.com - The only one of its kind.
http://www.diy-cockpits.org/coll - Go Collimated or Go Home.
Some people collect things for a hobby. Geeks collect hobbies.

ScarletDME - The red hot Data Management Environment
A Multi-Value database for the masses, not the classes.
http://scarlet.deltasoft.com - Get it _today_!

CDMI - Steve T

unread,
Feb 6, 2015, 1:07:01 PM2/6/15
to mvd...@googlegroups.com
Rick:
do you have 'LIST-OBJ filename' on your system?
results:

Page   1  *** DICT smith-bp *** Object Code DT stamps

DICT smith-bp...................... date...... time..... frames port user...... account.............

ACCESS                                11/20/14 10:12:48      6    85 J.HENDRICK SMITH
                                                                     S
ACCESS.INVENT.PGM                     06/17/08 06:21:07      3    10 denis      DENIS
ACCT.DIST.SUB                         06/17/08 06:21:06      2    10 denis      DENIS
ACCUTERM.MSGBOX.SUB                   09/18/14 13:31:53      1    75 S.TRIMBLE  SMITH
ACCUTERM.RUNNING.SUB                  03/28/13 07:56:41      1    48 S.TRIMBLE  SMITH
ACCUTERM.TEXTINPUT.SUB                09/02/14 09:07:18      4   182 T.RAINES   smith
ACH20.PGM                             04/02/12 17:52:32      4   183 T.RAINES   smith
ACH30.PGM                             04/04/11 16:28:41      2   109 dm         smith
ADHOC1A.PGM                           06/17/08 06:21:18      2    10 denis      DENIS
ADJIV_CMPDATE                         12/12/12 15:35:34      2*   68 S.TRIMBLE  SMITH
ADJUST.TSA.INVENTORY                  04/30/09 13:47:04      1   190 R.PHILLIPS SMITH
ADMIN.ORDERFORMS                      07/29/14 15:50:55      3    81 J.HENDRICK SMITH
                                                                     S
notice the 2* item. the '*' indicates compiled in FlashBasic
 
Steve Trimble (501) 615-8674
Computerized Data Mgmt Inc (CDMI)

"Happy February!"


From: Rick Weiser <ri...@designbais.com>
To: mvd...@googlegroups.com
Sent: Friday, February 6, 2015 11:34 AM
Subject: [mvdbms] Re: Last compile date on D3 v9.2

--

fwinans

unread,
Feb 6, 2015, 3:53:54 PM2/6/15
to mvd...@googlegroups.com
And reflashing a program without having the source code does update the timestamp;
as in
    SELECT  DICT  BP  "MYPROG"
    COMPILE   BP   (OW
    LIST   DICT   BP   "MYPROG"  C/DATE    C/TIME

Scott Ballinger

unread,
Feb 7, 2015, 3:45:29 PM2/7/15
to mvd...@googlegroups.com
As Tony mentioned, most of the attributes for your compiled programs are already defined:

:sort dm,, eq c/]

Page   1     DICT dm,,

DICT dm,,...

C/ACCT
C/BYTES
C/CODE
C/DATE
C/FID
C/FLASH
C/OPTIONS
C/PORT
C/RELEASE
C/SIZE
C/TIME
C/TOTAL
C/USER

[405] 13 items listed out of 1849 items.

/Scott Ballinger

JJCSR

unread,
Feb 18, 2015, 10:22:42 AM2/18/15
to mvd...@googlegroups.com
Years ago, when I was converting from D3 to Reality, I created a file called PROGRAM.CATALOGS, as well as a program called "C-C", which is "compile-catalog".   That program is the only command I use to compile and catalog my programs, and it writes various stats (USER id; WHO RAN c_c; DATE, TIME, PORT, or any other information I may want to add, regarding the results of "C-C") to the PROGRAM.CATALOGS file, with item-id of ACCOUNT*FILE"PROGRAMNAME*DATE*TIME.   Since date/time is incorporated in the ID, multiple occurrences are tracked.   This file has proved its usefulness on many occasions, like selecting all programs that were "C-C"'d on a given date; or between dates/times; etc.
 
Jim Cronin
Kittery Trading Post

On Friday, February 6, 2015 at 12:15:23 PM UTC-5, Rick Weiser wrote:

Peter McMurray

unread,
Feb 18, 2015, 4:46:52 PM2/18/15
to mvd...@googlegroups.com


Hi Jim
We did the same so long ago I can't remember when. Extremely useful for change tracking but even more useful for fool tracking. I had to recover a system that an idiot programmer had interfered with. We maintain a production account and a development account and this cretin decided that was a waste of time and transferred stuff he had fooled with direct into a client's system bypassing the checks and balances. 

Charlie Noah

unread,
Feb 18, 2015, 4:59:48 PM2/18/15
to mvd...@googlegroups.com
I think I worked with him once (for a very short time). :-)
Charlie


On 02-18-2015 3:46 PM, Peter McMurray wrote:


Hi Jim
We did the same so long ago I can't remember when. Extremely useful for change tracking but even more useful for fool tracking. I had to recover a system that an idiot programmer had interfered with. We maintain a production account and a development account and this cretin decided that was a waste of time and transferred stuff he had fooled with direct into a client's system bypassing the checks and balances. 

JJCSR

unread,
Feb 18, 2015, 5:11:29 PM2/18/15
to mvd...@googlegroups.com
Hello, Peter:
 
OUCH!!.  That hurts.  We maintain a development system, as well, and it is a difficult thing to get across to some "newbies", before you start any changes to programs on the development system, make certain that you copy the program from "live to dev", first, assuring yourself you have the most current version of that program.   During my conversion from D3 to Reality, I began to see strange occurrences on the Reality system that weren't present on the D3.   Using the PROGRAM.CATALOGS ("PC") file, and selecting just the program name, I found that we had multiple programs with the same name, but stored in different accounts/files.   I was taking one program file at a time and "C-C"ing them.   The most recently cataloged version of the program was the one that was going to be executed when that name was called.   I had to find duplicate program names, then go to the D3 system to find which one was active.
 
In other cases, I have had periods where I will work on a series of programs on the development system for a week or so, then use the "PC" file to determine which ones have been C-C'd since a given date, then copy those program to live.   We live and we learn, sometimes not at the pace we would prescribe for others.
 
Jim

On Wednesday, February 18, 2015 at 4:46:52 PM UTC-5, Peter McMurray wrote:

Tony Gravagno

unread,
Feb 19, 2015, 11:59:26 AM2/19/15
to mvd...@googlegroups.com
Just adding 2 cents here... Rather than creating a new verb and expecting people to use it, you can just replace/overload the existing verbs to do what you want. Concerned about your verbs getting blown away on a system update? Create your own Newac file. So when new "default" verbs get loaded into accounts, your verbs get loaded right along with them. These tools are there for VARs and site managers to easily customize their environments, but hardly anyone ever uses them.

And about people preferring to code directly into a production system and bypassing the development system, yeah, unfortunately that happens at a few of my clients where there are teams of developers on various projects. But the people who do it usually have more authority than the outside folks (like moi) so there's no one to enforce the policies and there are no consequences for violation thereof. When things start to break, you can't say "I told you so". You just take more time to address the resulting problems and hope management doesn't blame the wrong people.

T




JJCSR

unread,
Feb 19, 2015, 12:20:53 PM2/19/15
to mvd...@googlegroups.com
Hi, Tony:
 
I understand your thoughts about "replacing existing verbs", but Reality doesn't have a "COMPILE-CATALOG" verb, whereas, I believe we had that verb in D3.   So, for me, the solution was simply to create a program that combined the two verbs ("COMPILE" and "CATALOG"), first examining the "msg" from the compile and verifying the compile was successful.   If successful, the "catalog" command was built to show full-path (account,file,), (Reality needs to see an "overwrite" option to replace existing MD's) then execute that catalog command.   Thus, "C-C ACCOUNTNAME,FILENAME, PROGRAMNAME" will first do a "sentence() to parse the TCL command to extract the elements ACCOUNTNAME, FILENAME, and PROGRAMNAME, then "COMPILE FILENAME PROGRAMNAME".   If a successful compile was had, will "EXECUTE CATALOG ACCOUNTNAME,FILENAME, PROGRAMNAME (O".    If the compile was not successful, I advise the user of same.   
 
Back to the subject of "replacing verbs".   A programmer that worked for me years ago found that he was constantly typing "LSIT"; so he copied the verb "LIST" to "LSIT" to circumvent that problem.   And, incidentally, if memory serves me correctly, I did, in fact, copy the COMPILE-CATALOG verb in D3 to C-C.
 
Thanks for the input.   Good idea for folks who haven't been aware of trying such a "trick".
 
Jim

bcam

unread,
Feb 19, 2015, 3:25:28 PM2/19/15
to mvd...@googlegroups.com
I believe I was that programmer that copied LIST to LSIT.  Still typing LSIT to this day!  :)  Hi Jim!

Another funny story related to this topic. After I left working with JJCSR I did some freelance consulting at a shop with many programmers. There was one in particular that was a real pain in the you know what.  I had finally had enough of him, and it was his last day so I modified the COMPILE verb to "not really" run the actual system compile but run a program of mine instead that I simulated compilation (complete with  displaying **********.. and then called the real compiler to spit out an error message at the end that the compilation failed) and made a backup of the program source code and "flipped" the original source code upside down and in reverse and wrote it back.   (Imagine turning the text from the bottom right hand corner and flipping to the top left.)   He then went into the editor and freaked out blaming me right away! Literally causing a scene.   I calmly looked over at the code and said, "wow that's weird, try compiling it again".  Which he did, and which of course turned everything back to normal and compiled fine.   He left in a huff an hour later.  :)  Had to be done.

Cheers to all.

BC

JJCSR

unread,
Feb 19, 2015, 3:42:38 PM2/19/15
to mvd...@googlegroups.com
Hey, BMC.   Its good to see you (even if only in print).    I have given my official "retirement notice" - year-end 2018.   Just wanted to make sure there was enough time for training.
 
BTW:  I'm knee-deep into XML for the EDI project that goes live in about a month, or less.   I can't believe how easy it has been, building XML files from MV, and just as easy turning XML back into MV data - without any utility. 
 
I'll chat later.
 
Jim

bcam

unread,
Feb 19, 2015, 4:27:03 PM2/19/15
to mvd...@googlegroups.com
Hi back at you.  Yes please to chat later!  Retirement! Wow, time flies.  How much training would I need? :)
Love to chat and see what you are doing with the XML.   Also, check out JSON too!    

Tony Gravagno

unread,
Feb 19, 2015, 5:04:13 PM2/19/15
to mvd...@googlegroups.com

That's funny Jim. I've added LSIT and SROT to a couple systems for those moments when the fingers just don't cooperate ... because we can.

As to your program that checks for success before moving on, I have exactly the same code (thought I published it to FOSS4MV, guess not). I call that verb WED.COMPILE because I use it from AccuTerm WED. Since a good amount of my code is also used for mv.NET, where required it also forces mv.NET to re-read the new object. I've used this with DesignBais for the exact same reasons.

For QM, I have a series of "alias" commands that I execute to make that environment as much like D3 as I need to keep from stumbling. I know people will say we should just use these environments as they were designed, and that holds true for many aspects. But I sometimes jump between 3 or more MV environments in a day and it's extremely frustrating to have to shift gears each time. This is someone everyone who has gone through a migration understands - but if you've only done it once, think about someone like me who needs to do it almost every day. I just try to remove some of the common stumbling blocks so that I can keep rolling at a good pace. My "one of these days I'll get comfortable with this environment" mantra hasn't changed in a decade. So if I can't conform to the platform, I'm going to make the platform conform to me. And coming full circle here- I do it because we can.

Best,
T
Reply all
Reply to author
Forward
0 new messages