SMGR/PMGR FAQ


Questions in no apparent order...

  1. Could you clarify how the trigger .i files are supposed to work? I want to be able to automatically 'fetch' a source file after it has been checked in.

  2. I cannot figure out how to create multiple source code branches in SMGR or SCCS that adhere to some simple naming conventions. Can you please shed some light on this subject, I am not opposed to creating Unix shell scripts to help accomplish this. Here is what I would like to do:

  3. We installed SMGR, loaded all our resources, and now find we wishwe had organized things differently. Is there a menu option which removes all the sources?

  4. Can we expand the search string x(12) to x(30) or more?

  5. When submitting "fixes" can we mass select programs to send or do they have to be sent one at a time?

  6. How can we control rev #'s for programs? When submitting fixes what happens if you enter an invalid revision #'s?

  7. What about training? Your place or mine? Included? Charge?

  8. Browse Issues assigned to me include all issues. Is it broke?

  9. When checking in, source is removed. How do we automatically do a fetch to the commom source directory when a file is checked in?

  10. I checked a file out and then back in for an issue,but it didn't show up under the fixed by browse for that issue. Why?

  11. Could we modify the code, or would you be willing to change and add to the SMGR code? Does the full version ship encrypted as well?

  12. What about submitting lots of files to a Project? Do these have a mass tag? With some of our tasks, this list could be very long, like hundreds of programs.

  13. I recieved your email containing suball.p. It does compile, but can you explain how to use it? I could not find any information in your SMGR refrence manual.

  14. When run from the Progress editor I get a message that says: "/smgr/src/suball.p Shared variable scat has not yet been created.(392). Does this program get invoked by some SMGR or PMGR function?

  15. Also, the 'FORM"%Z% %M% %I% cat %D% %Q% " with frame sccsid.' statement is causing problems when I try to compile source code that includes .i files in some instances.

  16. When submitting "fixes" can we mass select programs to send or do they have to be sent out one at a time?

  17. How can we control rev #'s for programs? When submitting fixes, what happens if you enter an invalid revision #?

  18. Well, mode specifically, when submitting a program to a project, the dialog box allows us to enter any version #, then we get a progress error about no file available.

  19. I checked a file out and then back in for an issue, but it didn't show up under the fixed by browse for that issue. Why?

  20. If I don't tag one, it doesn't show up at all??

  21. If I submit a whole bunch of sources and includes to PMGR, what is the sequence of events? Do the includes get processed before the sources?

  22. How does PMGR know what to compile and what is include file?

  23. I tried to check something in, and got the "Not Successful" Message. What should I do?


Questions with something resembling answers

  1. Could you clarify how the trigger .i files are supposed to work? I'm in the process of implementing SMGR and I want to be able to automatically 'fetch' a source file after it has been checked in. The check out process does not fill in the % ? % strings in the header like fetch does, and I want to make sure the most current version gets put into our 'beta' directories. We currently develop in a set of directories in each developers $HOME directory which is then separate from all other developers (and our users). I should not have a problem updating most of the available '.i' trigger files that exist in $SMGRHOME/xsrc/inc, but trafchki.i, trb4chko.i, and trnotify.i are encrypted, sooo if I try to do anything there, I'll wipe out what you already have in place. The manual I have indicates that I should be able to modify these.

    Yes. There should be a clear text copy in ./src/inc. So, you should:


  2. I cannot figure out how to create multiple source code branches in SMGR or SCCS that adhere to some simple naming conventions. Can you please shed some light on this subject, I am not opposed to creating Unix shell scripts to help accomplish this. Here is what I would like to do:
    SCCS Ver
    aa.bb.cc.dd
    |  |  |  |-> Sequence, maintained by SCCS
    |  |  |----> Branch, code as  1 = std. code, 2 = custom, 3-8 = site[1-5]
    |  |-------> Level, maintained by SCCS
    |----------> Release, incremented as necessary
    

    Am I asking too much? This doesn't seem too outrageous! I have been looking though the printed SMGR materials and the SCO Manuals trying to come up with a solution. I can force new branches, but I am having no luck specifying the branch number. I also believe that if I do this in a script I will have to create stsrev.d records that I will have to import into the database to keep it current. Is this a reasonable thing to do. Some of us would prefer to work in vi and use Unix scripts than to work inside the 'robust' Progress editor.

    Regarding SCCS branch revision numbering, I don't expect you to have much luck. If you checkout 1.3, and it is the end of the chain, you will end up with 1.4. If it is not, you will end up with 1.3.1.1. If you then check that out, you will end up with 1.3.1.2. Seems logical to me.

    Now looking at what you are trying to do with the branch code, I should mention that the stsrev record contains the "revision status" field, which is totally user definable and modifiable within the user interface. Our intent is to allow you to mark certain revisions as "experimental", "tested" etc. You could later use it for FOR EACH selections and/or reporting. I think it would serve your purposes.

    Regarding making changes to SCCS master files outside of SMGR, there is a program called "resetrev.p" which is not on the menu. It reloads SMGR data for a single program and is intended for a catastrophy where in the two are out of sync.

    Regarding working in VI, yup, we do that too. We just keep another window running for SMGR.

    Regarding custom code versions, SMGR has bunches of code in the appcomp.p compiler which understand that a single file name can existing in a base category AND one or more CUSTOM categories. It also knows how to recompile multiple incantations of .p files if they use include files which have custom versions using multiple PROPATHS and storing results in multiple .r code directories. We take the strategy that once you split off custom changes it will continue to diverge and you might as well handle it as a different file.


  3. We installed SMGR, loaded all our sources, and now find we wish we had organized things differently. Is there a menu option which removes all the sources?

    No, we really hadn't had much call for an "rm -r *" for SMGR.

    However, you could do something like this:

    for each stsadm:
            for each stsrev of stsadm:
                    delete stsrev.
                    end.
            unix silent value("rm $SMGRHOME/data/" + stsadm.cat + "/s." + stsadm.file).
            delete stsadm.
    	end.
    

  4. Can we expand the search string x(12) to x(30) or more?

    Well, I suppose. You realize that it searches anywhere in the name, description or category?


  5. When submitting "fixes" can we mass select programs to send or do they have to be sent one at a time?

    I am unclear on what you mean. The inuse display lets you tag checked out sources and issues and do a mass checkin. You can change the trigger procedure on the checkin to automatically submit changes to the Production manager.


  6. How can we control rev #s for programs? When submitting fixes, what happens if you enter an invalid revision #?

    Uhhhh, we don't. Just let Sccs/SMGR do it. If you checkout 1.9, the new source is 1.10. Checkout an old rev like 1.7, you will create 1.7.1.1.

    Now, you can check out the end revision and FORCE (or bump) the revision up to the next whole number, eg 2.01.


  7. What about Training? Your place or mine? Included? Charge?

    Our experience has been that using SMGR comes pretty easy. Thus far no installation has needed training.

    Setting up the Production Manager, if you choose to do that, does involve making some policy decisions, and usually requires some discussions which we are happy to help with.


  8. Browse Issues assigned to me include all issues. Is it broke?

    Uhhh, works ok on our demo system, so I must assume it is a fluke, uhh, sunspots, and will have to think about why that might be happen.


  9. When checking in, source is removed. How do we automatically do a fetch to the common source directory when a file is checked in?

    There is a chunk of code in the trigger procedure trafchki.i which you can uncomment to do this exact thing.


  10. I checked a file out and then back in for an issue, but it didn't show up under the fixed by browse for that issue. Why?

    Perhaps there is some confusion there. If you are saying you checked a file out and listed an issue number on the checkout dialog, be aware that that issue field is a non-required info only field, which serves only to alert someone as to WHY you checked something out. The only way Fixed By records are created are:


  11. Could we modify the code, or would you be willing to change and add to the SMGR code? Does the full version ship encrypted as well?

    The full system has source code for all the reports. Most of the things people want to modify are in the trigger procedures. Obviously, we vastly prefer to either:

    I suppose that it might be possible to bludgeon us into providing source if the above options don't meet your needs.


  12. What about submitting lots of files to a Project? Do these have a mass tag? With some of our tasks, this list could be very long, like hundreds of programs.

    Ah, you mean like "let's submit all the files which address this issue, which is hundreds of programs".

    Here is a sample program which submits all files in SMGR:

    /* Suball.p - submits all SMGR files to project */
    {smgrglob.i}  {strevvar.i}
    def var shell-cmd as char format "x(50)".
    def var sub-reply as char init "y" no-undo.
    for each stsproj no-lock: display stsproj with 6 down. end.
    update sdestination.    hide all.
    pause 0 before-hide.
    for each stscat no-lock with 10 down frame boink:
            for each stsadm of stscat no-lock with frame boink:
                    scat = stsadm.cat.
                    sfile = stsadm.file.
                    find last stsrev where stsrev.cat = stsadm.cat
                    and stsrev.file = sfile no-lock.
                    srev = stsrev.rev.
                    if type <> "INCLUDE" then next.
                    display scat sfile srev.
                            {stsubex.i}
                    down.
                    end.
            end.
    

    You could readily adapt that scheme to submit all programs, or all include files, or all programs which have a fixed-by record for issue XXX, or whatever you might like. This example is going to dig up the last revision for each. There is also a version status field, which is totally user modifiable. You could use that to pick a version to submit.


  13. I received your email containing suball.p. It does compile, but can you explain how to use it? I could not find any information about in your SMGR reference manual.

    There is no function in SMGR to submit all files to a category. What I supplied you was some sample code which invokes SMGR modules to accomplish that.


  14. When run from the Progress editor I get a message that says: "/smgr/src/suball.p Shared variable scat has not yet been created. (392)". Does this program get invoked by some SMGR or PMGR function?

    It probably means that until you invoke the SMGR menu program those variables have not yet been created. Once you invoke it during a progress session those variables are GLOBAL SHARED and should stick around for the session.


  15. Also, the 'FORM " %Z% %M% %I% cat %D% %Q% " with frame sccsid.' statement is causing problems when I try to compile source code that includes .i files in some instances. For example, a program includes a .i file. In that .i file there is "DEFINE SHARED WORKFILE acct-map {dl-acct.i}.". The dl-acct.i also has the FORM statement that SMGR put in it. This is causing a compile syntax error when I attempt to compile from the Progress editor. Can SMGR imbed this FORM statement in a comment or some other construct that does not prevent compiles?

    See my previous email, and fax on this. Yes, the default string is in $SMGRHOME/adm/srchdr. You can change it. Yes bull03 shows how to modify all your sources. NO, we don't think it is a good idea to make the revision string a comment; you lose ability to track revisions in .r code. We have used the form statement in all our Progress include files with no problems.

    However, some software has a few teeny tiny include files which aren't even a complete Progress statement. One client had this as an include file: "XXXXXXXX"

    Needless to say, no revision string which include Progress keywords will work here. Only a comment will suffice.

    I have seen a few include files so small that not even a comment could be added to them. Of course, they aren't worth tracking changes to either. SCCS will not manage a file it can't put a revision string in.

    I suggest that you just deal with the teeny files like dl-acct.i by checking them out, modifying the revision string, and checking them in.


  16. When submitting "fixes" can we mass select programs to send or do they have to be sent one at a time?

    I am unclear on what you mean. The inuse display lets you tag checked out sources and issues and do a mass checkin. You can change the trigger procedure on the checkin to automatically submit changes to the Production manager.


  17. How can we control rev #s for programs? When submitting fixes, what happens if you enter an invalid revision #?

    Uhhhh, we don't. Just let Sccs/SMGR do it. If you checkout 1.9, the new source is 1.10. Checkout an old rev like 1.7, you will create 1.7.1.1.

    Now, you can check out the end revision and FORCE (or bump) the revision up to the next whole number, eg 2.01.


  18. Well, mode specifically, when submiting a program to a project, the dialog box allows us to enter any version #, then we get a progess error about no file available.

    Do you mean as in the case of browsing issue 102, which (sadly, to my great regret) has bogus demo information regarding files, which do not, in fact exist on the demo database? Try looking at Issue 2001 instead.

    The only other place I remember where you can submit is from the Versions window, which only shows existing versions.


  19. I checked a file out and then back in for an issue, but it didn't show up under the fixed by browse for that issue. Why?

    Perhaps there is some confusion there. If you are saying you checked a file out and listed an issue number on the checkout dialog, be aware that that issue field is a non-required info only field, which serves only to alert someone as to WHY you checked something out. The only way Fixed By records are created are:


  20. If I don't tag one, it doesn't show up at all??

    If you don't tag an issue, it doesn't get modified. If you don't tag a checked out source, it doesn't get checked in.


  21. If I submit a hole bunch of sources and includes to PMGR, what is the sequence of events? Do the includes get processed before the sources?

    The sequence of events is:


  22. How does PMGR know what to compile and what is include file?

    All SMGR files have a file type:

    
    	Type		Actions
    	------		-------
    	SOURCE:	 	Compile it.
    	INCLUDE:	Look at the Xref to see where used, and compile them.
    	SCRIPT:		Do a chmod to Make it executable.
    	TEXT:		Just put the dang file where it belongs.
    	SCHEMA:		Similar to text; during checkin, it will dump for you.
    	DB CONTENTS:	Similar to text; during checkin, it will dump for you.
    
  23. I tried to check something in, and got the "Not Successful" Message. What should I do?

    This indicates that the checkin code did not see the result it was expecting from either SCCS or RCS. Possible causes:

    1. The SCCS "delta" command is not installed or locatable in $PATH. Test this by doing this from within the progress session:
      	type delta
      
      It should come back with something like:
      	delta is /usr/bin/delta
      

    2. The Progress "quoter" command is not installed or locatable in $PATH. Check this the same as you checked the delta command above.

    3. The file isn't really checked out as far as SCCS is concerned. (Implying that SMGR and SCCS are out of sync.) See if there is in fact an SCCS lock file. If the source file is foo.p in category fum, there should be a file
      	$SMGRHOME/data/fum/p.foo.p
      

      If not, then the file really isn't checked out. Run resetrevs.p on that file to clear this condition and get make SMGR reload version data from the SCCS file.

    4. The changed source file isn't found. At least not where you said it was.

    5. Directory Permissions on the category directory prevent adding/removing files.

    6. Your SCCS files came from another machine and are incompatible. There are some minute differences in SCCS files as practiced bye AIX, HPux, and SCO. Moving an SCCS file built on one system to the other can cause the delta command to issue some gripes, in particular regarding the date/time stamp. This can cause the checkin to not see the response it is expecting. You can sometimes clear this condition by doing an SCCS "admin -z" on the SCCS master file.

      In order to investigate this, you can try this procedure:

      • go into your SMSTAFF record and change the "Show Native Command" and "Show Command Output" flags to yes;
      • leave SMGR/Progress and restart to pick up these settings;
      • run your checkout again.

      This should show the exact SCCS command being issued, and its output. In the case of any doubt, you can cut this command out and paste/retype it on the command line yourself, to see what SCCS is returning.

      If all this fails to shed any light, then we will see how to get a look at your installation to troubleshoot farther.