SirLib change control: Difference between revisions
m (add graphic) |
m (more conversion cleanup) |
||
Line 229: | Line 229: | ||
<p class="figure">[[File:SlibAdministration.png|450px]]</p> | <p class="figure">[[File:SlibAdministration.png|450px]]</p> | ||
The <var class="product">SirLib</var> Administration Option allows users to define a custom <var class="product">SirLib</var> | The <var class="product">SirLib</var> Administration Option allows users to define a custom <var class="product">SirLib</var> profile for each file. | ||
profile for each file. | If you select the <b>Administration</b> option with no target file specified on the main menu, then the System Profile is being defined or changed. | ||
If the Administration option | If a <b>Target file</b> value <i>is</i> specified on the main menu, then a file-specific profile is being defined or changed. | ||
main menu, then the System Profile is being defined or changed. | |||
If a <b> | |||
profile is being defined or changed. | |||
Only users defined to the <var>ADMIN SCLASS</var> in the <var class="product">SirLib</var> subsystem definition | Only users defined to the <var>ADMIN SCLASS</var> in the <var class="product">SirLib</var> subsystem definition | ||
are allowed access to the Administration option without specifying a file. | are allowed access to the <b>Administration</b> option without specifying a file. | ||
Only users defined as Administrators in the System profile are | Only users defined as Administrators in the System profile are | ||
allowed access to File profiles. | allowed access to File profiles. | ||
The settings on the <b> | The settings on the <b>SIRLIB Administration</b> screen are described below. If any of these settings is left blank on a File profile, <var class="product">SirLib</var> | ||
If any of these settings is left blank on a | takes its behavior from the System profile setting. | ||
takes its behavior from the | If the option is left blank on the System profile, default action varies, but is noted in the descriptions below. | ||
If the option is left blank on the System profile, default action varies, but | |||
is noted in the descriptions below. | |||
<table class="thJustBold"> | <table class="thJustBold"> | ||
<tr><th>File</th> | <tr><th>File</th> | ||
<td>A file name is displayed only if one was specified on the main menu. The file name cannot be modified on the <b>Administration</b> screen. | |||
If no file was specified on the main menu, then this field will read <b>Defaults</b>.</td></tr> | |||
<tr><th>Fix File</th> | |||
<td>A FixFile is a <var class="product">Model 204</var> procedure file that contains update procedures and a <var>CONTROL.<i>filename</i></var> procedure for a file or set of files. Any number of files may share the same FixFile. | |||
<tr><th> | |||
<td>A | |||
<p> | <p> | ||
The default FixFile for all of <var class="product">SirLib</var> is <b>SIRLIBP</b>, a <var class="product">Model 204</var> procedure file that was created as part of the <var class="product">SirLib</var> installation process. If a different FixFile is specified as the default for a managed file, <var class="product">SirLib</var> options 1, 2, 5, and all <var class="product">SirLib</var> reports | The default FixFile for all of <var class="product">SirLib</var> is <b>SIRLIBP</b>, a <var class="product">Model 204</var> procedure file that was created as part of the <var class="product">SirLib</var> installation process. If a different FixFile is specified as the default for a managed file, <var class="product">SirLib</var> options 1, 2, 5, and all <var class="product">SirLib</var> reports look in the new FixFile for update procedures and the control procedure.</p></td></tr> | ||
<tr><th>Single Checkout</th> | <tr><th>Single Checkout</th> | ||
Line 266: | Line 260: | ||
The checkout occurs automatically when a <var>Q</var> command is executed. The checkin is optional on the <var>X</var> screen, when the final update procedure is being generated. | The checkout occurs automatically when a <var>Q</var> command is executed. The checkin is optional on the <var>X</var> screen, when the final update procedure is being generated. | ||
The programmer simply checks <var>Y</var> at the bottom of the Xcompare screen to unlock the procedure. | The programmer simply checks <var>Y</var> at the bottom of the Xcompare screen to unlock the procedure. | ||
Users in the <var class="product">SirLib</var> ADMIN | Users in the <var class="product">SirLib</var> <var>ADMIN</var> subsystem user class (<var>SCLASS</var>) can view and remove procedure locks by Option 7 from the <var class="product">SirLib</var> main menu.</p> | ||
<p> | <p> | ||
Regardless of the setting of this switch, <var class="product">SirLib</var> stores a < | Regardless of the setting of this switch, <var class="product">SirLib</var> stores a <b>lock</b> record for each procedure that is the subject of a <var>Q</var> (Sequence) command. | ||
This allows managers to view a list of procedures being updated even when the procedure is not actually locked.</p></td></tr> | This allows managers to view a list of procedures being updated even when the procedure is not actually locked.</p></td></tr> | ||
Line 274: | Line 268: | ||
<td>This switch affects the behavior of the <var class="product">SirPro</var> <var>X</var> prefix command. | <td>This switch affects the behavior of the <var class="product">SirPro</var> <var>X</var> prefix command. | ||
By default <var class="product">SirPro</var> allows users to overwrite each others' update procedures, provided a switch is checked on the Xcompare panel when generating the second update procedure. | By default <var class="product">SirPro</var> allows users to overwrite each others' update procedures, provided a switch is checked on the Xcompare panel when generating the second update procedure. | ||
The Overwrite switch on the Administration screen never stops programmers from overwriting their own changes. | <p> | ||
However if Overwrite is set to <code>N</code> on this | The <b>Overwrite</b> switch on the <b>Administration</b> screen never stops programmers from overwriting their own changes. | ||
However if <b>Overwrite</b> is set to <code>N</code> on this screen, <var class="product">SirLib</var> does not allow a programmer to replace an update procedure generated by another user.</p></td></tr> | |||
<tr><th nowrap>Require | <tr><th nowrap>Require Change Identifiers</th> | ||
<td>The system default is to allow programmers to generate update procedures for any project, whether or not the project name is listed in the <code>CONTROL.<i>filename</i></code> procedure for the file. | <td>The system default is to allow programmers to generate update procedures for any project, whether or not the project name is listed in the <code>CONTROL.<i>filename</i></code> procedure for the file. | ||
If this toggle is set to <code>Y</code>, programmers may only name their update procedures using project names that exist in the control procedure. Note | If this toggle is set to <code>Y</code>, programmers may only name their update procedures using project names that exist in the control procedure. | ||
<p class="syntax"><span class="term">filename</span>.<span class="term">project</span>.<span class="term"> | <blockquote class="note"><p><b>Note:</b> The format of update procedure names is: </p> | ||
< | <p class="syntax"><span class="term">filename</span>.<span class="term">project</span>.<span class="term">procname</span> </p> | ||
The <var class="term">project</var> qualifier in the above naming convention is the value that is checked when this option is set to <code>Y</code>. | <p> | ||
The <var class="term">project</var> qualifier in the above naming convention is the value that is checked when this option is set to <code>Y</code>. </p> | |||
</blockquote> | |||
<p> | <p> | ||
Requiring project names to exist before updates are linked to them allows the manager to specify destinations for update procedures, | Requiring project names to exist before updates are linked to them allows the manager to specify destinations for update procedures, | ||
and may prevent changes from being left out of a release by inadvertent misspellings of project names by programmers. </p> | and it may prevent changes from being left out of a release by inadvertent misspellings of project names by programmers. </p> | ||
<p> | <p> | ||
The advantage of <i>not</i> requiring a project name to exist before changes are linked to it is that it provides a "control point" to switch on an entire project. | The advantage of <i>not</i> requiring a project name to exist before changes are linked to it is that it provides a "control point" to switch on an entire project. | ||
Line 291: | Line 288: | ||
<tr><th>Keep History</th> | <tr><th>Keep History</th> | ||
<td>Setting this switch to <code>N</code> reduces the amount of historical information kept by <var class="product">SirLib</var>. Certain history records are maintained regardless of this setting, such as | <td>Setting this switch to <code>N</code> reduces the amount of historical information kept by <var class="product">SirLib</var>. Certain history records are maintained regardless of this setting, such as Reconfigurations and Cutovers.</td></tr> | ||
<tr><th>Secure</th> | <tr><th>Secure</th> | ||
Line 302: | Line 299: | ||
<p> | <p> | ||
If on the default System profile, <b>Secure</b> is <code>N</code>, specific files that require security can override this setting by specifying <code>Y</code> for <b>Secure</b> on their administration screen. | If on the default System profile, <b>Secure</b> is <code>N</code>, specific files that require security can override this setting by specifying <code>Y</code> for <b>Secure</b> on their administration screen. | ||
The reverse can also be done, with the system set to use security by default, and files that need no such detailed coverage set with security off. | The reverse can also be done, with the system set to use security by default, and files that need no such detailed coverage set with security off. </p> | ||
<p> | |||
A blank setting for <b>Secure</b> on a file record tells <var class="product">SirLib</var> to use the System Defaults for that file. | A blank setting for <b>Secure</b> on a file record tells <var class="product">SirLib</var> to use the System Defaults for that file. | ||
If <b>Secure</b> is left blank in the system profile, <var | If <b>Secure</b> is left blank in the system profile, <var | ||
class="product">SirLib</var> assumes it should be <code>N</code>.</p></td></tr> | class="product">SirLib</var> assumes it should be <code>N</code>.</p></td></tr> | ||
<tr><th>Procedure Stamping</th> | <tr><th>Procedure Stamping</th> | ||
<td>This switch indicates whether or not a comment is inserted in a changed procedure. The comment indicates the name, date, time, and source file of the change. | <td>This switch indicates whether or not a comment is inserted in a changed procedure. The comment indicates the name, date, time, and source file of the change. | ||
Procedure | Procedure stamping may be set on or off globally (<code>Y</code> to turn stamping on, <code>N</code> to turn it off) on the Administrator setup screen. | ||
<p> | <p> | ||
Internal procedure stamps can be deleted by <var class="product">SirLib</var> when the file is "Cutover" (refer to [[#cutover|Release cutover]]). | Internal procedure stamps can be deleted by <var class="product">SirLib</var> when the file is "Cutover" (refer to [[#cutover|Release cutover]]). | ||
Line 329: | Line 320: | ||
</blockquote></td></tr> | </blockquote></td></tr> | ||
<tr><th> | <tr><th>Administrators</th> | ||
<td> | <td>Administrator IDs defined for the System profile (that is, when no file is specified on entering the <b>Administration</b> option) are given access to Administration functions for all files. | ||
These System Administrators may then access Administration options to set File profiles. Users defined as Administrators for a File have access to <b>Security</b> (Option 4) for the files they administer. | |||
For SirLib version S7.5 and higher, an unlimited number of Administrators may be specified for the system and for each file. For earlier SirLib versions, the limit of IDs is 12. | |||
<p> | |||
If a site wants to use <var class="product">SirLib</var> and <var class="product">SirPro</var> on an honor system basis, one of the simplest ways to do it | |||
is to define all users to the ADMIN SCLASS of <var class="product">SirLib</var>, and either turn security off, or let each user build whatever permissions they require for themselves or their development group.</p></td></tr> | |||
<tr><th nowrap id="procexempt">Procs exempt from stamping</th> | |||
<td>If procedure stamping is "on," you might want to prevent <var class="product">SirLib</var> comments from entering procedures that contain application help text, message text, or other literal information used by the application. You can do so by specifying a list of procedure prefixes for procedures in the system or for a file for which comments will <b>not</b> inserted. | |||
<p> | |||
The prefixes you specify for exempt procedures may be as many as 32 characters long. Wildcard characters such as <code>*</code> or <code>?</code> are taken as literal values in these prefixes. For SirLib version S7.5 and higher, an unlimited number of prefixes may be specified for any file or the system as a whole. For earlier versions, the limit is four. </p></td></tr> | |||
</table> | </table> | ||
Managed files are added to the <var class="product">SirLib</var> system using the <b>Administration</b> screen. To remove a file from the <var class="product">SirLib</var> system, press PF10, and <var class="product">SirLib</var> removes all security, history, procedure locks, administration, and user privileges for the file. If the file has already been added to the <var class="product">SIRLIB</var> subsystem, use SUBSYSMGMT to remove it. | |||
To remove a file from the <var class="product">SirLib</var> system, press PF10, | |||
and <var class="product">SirLib</var> | |||
administration, and user privileges for the file. | |||
If the file has already | |||
been added to the <var class="product"> | |||
<div id="cutover"></div> | <div id="cutover"></div> | ||
Line 361: | Line 350: | ||
Performing a cutover causes the following <var class="product">SirLib</var> processing: | Performing a cutover causes the following <var class="product">SirLib</var> processing: | ||
<ul> | <ul> | ||
<li> | <li>Reconfiguration | ||
<p>Cutover invokes a full file | <p>Cutover invokes a full file Reconfiguration to ensure that all | ||
updates are applied. | updates are applied. | ||
This step can be bypassed with a switch on the Cutover screen.</p></li> | This step can be bypassed with a switch on the Cutover screen.</p></li> | ||
<li>Delete | <li>Delete update procedures | ||
<p>All update procedures in the FixFile that have the cutover file as a | <p>All update procedures in the FixFile that have the cutover file as a | ||
first qualifier are deleted whether or not they are linked to an active project.</p></li> | first qualifier are deleted, whether or not they are linked to an active project.</p></li> | ||
<li>Delete | <li>Delete project identifiers | ||
<p>All lines in the control procedure for the file | <p>All lines in the control procedure for the file | ||
(CONTROL.<i><cutover-file></i>) are deleted.</p></li> | (<var>CONTROL.<i><cutover-file></i></var>) are deleted.</p></li> | ||
<li>Delete Base | <li>Delete Base procedures | ||
<p>All procedures beginning with <code>BASE.</code> are deleted from the target cutover file.</p></li> | <p>All procedures beginning with <code>BASE.</code> are deleted from the target cutover file.</p></li> | ||
<li>Delete | <li>Delete comments | ||
<p> | <p>As changes are applied, <var class="product">SirLib</var> inserts a comment like the following at the beginning of each changed procedure: </p> | ||
like the following at the beginning of each changed procedure: </p> | |||
<p class="code"><nowiki>*** F2BALES Applied by ... *** | <p class="code"><nowiki>*** F2BALES Applied by ... *** | ||
</nowiki></p> | </nowiki></p> | ||
<p> | <p> | ||
These comments are deleted at cutover, and a single new comment reading as follows | These comments are deleted at cutover, and a single new comment reading as follows is inserted (procedures [[#procexempt|exempted]] from inserted commenting are not stamped): </p> | ||
is inserted (procedures | |||
<p class="code"><nowiki>*** Cutover on DD/MM/YY | <p class="code"><nowiki>*** Cutover on DD/MM/YY | ||
</nowiki></p> | </nowiki></p> | ||
Line 396: | Line 382: | ||
The file to be cutover is specified on the main menu along with the | The file to be cutover is specified on the main menu along with the | ||
FixFile from which the changes are to be applied and deleted. | FixFile from which the changes are to be applied and deleted. | ||
If the <b>FixFile</b> field is left blank, the default FixFile from the File | If the <b>FixFile</b> field is left blank, the default FixFile from the File record is used. | ||
record is used. | |||
< | <p class="caption" style="width:450px">SIRLIB File Cutover</p> | ||
<p class="figure">[[File:.png|450px]]</p> | |||
A scrollable panel at the bottom of the Cutover screen lets you | A scrollable panel at the bottom of the Cutover screen lets you | ||
Line 414: | Line 400: | ||
All of this information is refreshed after a successful cutover. | All of this information is refreshed after a successful cutover. | ||
From the Cutover | From the Cutover screen, PF12 initiates the cutover. | ||
If the cutover fails during any step a failure message appears when the | If the cutover fails during any step, a failure message appears when the | ||
screen is refreshed, and | screen is refreshed, and you can check the date and time stamps | ||
for each activity to see which step failed. | for each activity to see which step failed. | ||
Refer to [[SirLib problem resolution]] for advice on error recovery. | Refer to [[SirLib problem resolution]] for advice on error recovery. | ||
Because the results of a cutover are irreversible it is recommended | Because the results of a cutover are irreversible, it is recommended | ||
that cutovers always be | that cutovers always be preceded by a backup of the managed file and | ||
its associated FixFile. | its associated FixFile. | ||
It is also recommended that the Reconfiguration step not be bypassed unless | It is also recommended that the Reconfiguration step not be bypassed unless | ||
you know for certain that a reconfiguration has just been run. | |||
Care should be taken to verify that changes are not incorrectly | Care should be taken to verify that changes are not incorrectly | ||
"commented out" in the Control procedure. | "commented out" in the Control procedure. | ||
<p> | |||
If any step fails to execute properly, processing stops at that step and | If any step fails to execute properly, processing stops at that step and | ||
control is returned to the Cutover | control is returned to the Cutover screen, where an error message is | ||
displayed. | displayed. </p> | ||
After cutover | <p> | ||
updated on the Cutover | After cutover completes, the date stamps for each activity are updated on the Cutover screen. Verify these dates and times before exiting. </p> | ||
==View/Clear procedure locks== | ==View/Clear procedure locks== | ||
Procedures have a record posted whenever a programmer takes a | Procedures have a record posted whenever a programmer takes a | ||
managed update copy of the procedure using the <var>Q</var> command. | managed update copy of the procedure using the <var>Q</var> command. | ||
This record becomes a lock when the manager has set <b>Single | This record becomes a lock when the manager has set <b>Single Checkout</b> to <code>Y</code> in the <b>Administration</b> screen. | ||
Programmers unlock procedures by executing an <var>X</var> (Xcompare) against | Programmers unlock procedures by executing an <var>X</var> (Xcompare) against the locked procedure, specifying <code>Y</code> in the field on the Xcompare screen that asks whether the procedure should be unlocked. | ||
the locked procedure, specifying <code>Y</code> in the field on the Xcompare screen that asks whether the procedure should be unlocked. | |||
<p> | |||
The <b>View/Clear Procedure Locks</b> option in <var class="product">SirLib</var> is a way for managers to track and | The <b>View/Clear Procedure Locks</b> option in <var class="product">SirLib</var> is a way for managers to track and | ||
modify procedure locking. | modify procedure locking. | ||
Line 451: | Line 438: | ||
The list may be scrolled and sorted with the displayed PF keys. | The list may be scrolled and sorted with the displayed PF keys. | ||
In the View/Clear | In the <b>View/Clear Procedure Locks</b> screen, the procedure name is displayed to a maximum length of 33 characters. | ||
Following that, the | Following that, the screen shows the programmer owning the procedure, | ||
the source file for the checkout, the work file, and the date and time the checkout occurred. | the source file for the checkout, the work file, and the date and time the checkout occurred. | ||
PF12 allows the view to be toggled into a fullname mode, in | PF12 allows the view to be toggled into a fullname mode, in |
Revision as of 23:45, 20 October 2015
SirLib functions are accessed through a main menu in the SirLib subsystem
(Selection 2 from the UL/SPF screen).
The main menu also allows specification of a Target file and Fixes File.
The Target file field specifies the procedure file targeted for the requested activity.
The Fixes File field specifies the Model 204 procedure file that contains the
CONTROL.filename
procedure and all update procedures for the selected File.
Options 1, 2 and 5 require a File to be input.
If Fixes File is not specified for Option 1, 2, or 5, the default
Fix File value defined in the Administration option will be used.
If Fixes File is specified for these options, the specified Fixes File value overrides the default.
This allows, for instance, files to be reconfigured from different sets of update procedures in different FixFiles.
SirLib's default FixFile is always SIRLIBP
.
Change Management functions are:
1. Project Definition List | Add, delete, or change the Project identifiers in the FixFile assigned to a managed file. |
---|---|
2. Apply changes (Reconfigure a file) | Apply and backout changes to files (that is; change the configuration of the file). |
3. Administration | Administration functions define system defaults and file-specific overrides for those defaults, for security, procedure stamping, Administration ID assignment, and other "profile" options. This function is also used to remove files from the SirLib system. |
4. Security | Defines access to SirLib main menu options and to the Resequence command (Z) in SirPro.
Security settings only apply if Secure is set to Y in the SIRLIB Administration screen for the file (or for the system, if the file is not specifically set). |
5. Cutover | Does a large-scale clean-up of Base procedures, update procedures, project identifiers, and internal procedure stamps. This option is used infrequently; perhaps between major releases of an application. |
6. Reports | Access to SirLib reports. |
7. View/Clear Procedure Locks | Access to a display screen of all procedures (optionally restricted by file) that are currently checked out. The "checked out" procedures are displayed even if the administration option for multiple updates is turned on, and therefore no procedures are really locked. |
Project definition
SirLib is a file-based system. It is not specifically aware of the subsystem structure of a site's applications. This allows SirLib to manage applications that have a single procfile-to-subsystem relationship for all their subsystems, as well as those that run many subsystems from a single file or have multiple procedure files per subsystem.
SirLib uses two pieces of information to track updates and configuration status for a file.
One way is via a single FILE
record, kept in SIRLIBD
, which holds security and administrative information for the file.
The other is the file's Control procedure which is stored with the file's
update procedures in a FixFile.
Control procedures are named CONTROL.filename>, where filename is the name of the managed file. Control procedures contain a single line for each Project name. A Project is a logical change. Update procedures are linked to projects by naming convention. Update procedures are named:
filename.project.procname
The first qualifier tells SirLib what file the update applies to. The second qualifier indicates the project to which the update is linked. The third qualifier is the procedure to be changed.
The project name qualifier provides a mechanism for grouping changes, and controlling and linking their application and backout. When a project is added to a Control procedure, the whole set of changes linked to that project becomes included in any reconfiguration of that file. If the project is commented out or deleted, all update procedures whose names contain that project name are "backed out;" that is, not applied to the Base procedure(s) during the next reconfiguration.
Control procedures may be edited directly in the Model 204 editor by users who have been given access to the FixFile (FixFiles should be private files). However, the format of the lines of the procedure must be carefully maintained. Each line of the CONTROL procedure must have a Project identifier in column 1-8 (left-justified and blanks to the right if shorter than eight characters). Column 9 must be blank, and columns 10 through 72 may contain a comment. The Project Identifier must be in uppercase. The optional comment may be in mixed case. If a Project name begins with an asterisk (*), SirLib considers the entire line a comment. Updates are backed out by commenting-out project names in this way, and reconfiguring a file. SirLib skips the commented line, applying all previous and subsequent updates.
The proper way to maintain Projects is via Option 1 in the SirLib main menu. The resulting screen allows users to add, change, and delete Project identifiers. It verifies the format of the Project identifier, automatically converting it to uppercase. To access this screen, a file must be specified on the main menu: Project identifiers are always file-specific, as are the Control procedures in which they are contained. If a project spans more than one file, an identifying line for that project must be placed in the control procedure for each file to which the project applies.
While adding, deleting, changing, and commenting out project identifiers are all simple tasks, the user should keep in mind that these identifiers are control nodes for applying and backing out whole sets of updates. Simple actions taken on these nodes can have major consequences. Of particular importance are the following issues:
- Order
Updates are applied in the order shown in the Control procedure. A project, being the name of a logical change, may point to many update procedures (physical changes).
If the order of project names is altered in the control procedure, and update procedures across projects affect the same section of the same procedure, the sequence numbers in later updates may not match those in the existing procedure, and the attempt to reconfigure the file will fail. In this case the Apply changes (ReConfigure) option in SirLib will tell the user the update procedure that failed to apply and the sequence number where the error occurred.
- Logical dependency
There is no way SirLib or any other change management system can know about logical dependencies between source code changes in different update procedures. A %variable declared in one update may be used by code built by another update procedure. Backing out the first change may allow the second to apply correctly (that is, all the lines of code physically verify before they are applied). But the resulting program may not function correctly because the declaration of the %variable is missing from the resulting procedure.
It is important that physical changes that are logically dependent upon on another be applied and backed out together, and this is done by linking them to the same project.
From the Project Definition screen, PF2 gives access to an edit session
in which the user may add as much documentation as required to the project.
The user edits into a procedure in mixed-case mode, and when the edit session is exited, the lines of the procedure are converted to TEXT fields in SIRLIBD
, and linked to the appropriate Project Identifier.
Configuring files (applying updates)
Applying updates is always done one file at a time. The process is called ReConfiguring a file. The file and FixFile are selected on the SirLib main menu at the time Option 2 is selected. The SirLib File Reconfiguration screen is then displayed:
SCREEN ID=LIBR07.Applying Fixes/Changes
The above screen shows how the programmer applies changes to a file.
Pressing Enter while on this screen applies all active updates in the
FixFile to the Base version of target procedures in the target file.
This option may be protected by the System Administrator, so that only
approved users may reconfigure a file.
If a procedure is locked when SirLib attempts to apply changes to it, the ReConfiguration fails and a message is displayed identifying the procedure that could not be updated by SirLib. This could happen if a user is editing the procedure, or if the procedure is locked by an active application subsystem. The ReConfiguration should be done over again. ReConfiguration may be run as many times as needed, until all changes are properly applied. When a ReConfiguration fails in this manner, the file may be left in a state where some procedures are deleted. The faulty update should be fixed or commented out, and reconfiguration should be run again.
Backing out changes
Reconfiguration ignores all projects that are prefixed by an asterisk (*). The manager who wishes to backout all updates linked to a project can do so by commenting out the project name in the Project screen, then reconfiguring the file using option 2. This takes only a few minutes of work, and it is independent of DUMP/RESTORE or other external backups of the file. To backout only one or some of several updates associated with a project, the manager may delete the update procedure or change its name so it is no longer found when SirLib checks for updates linked to projects. Deleting update procedures is a severe remedy in any case, and it should be avoided, as the source working procedure from which the update was generated may no longer exist.
Each active Project in the Control procedure must be linked to at least one update, or the Reconfiguration will fail. If updates are deleted or renamed such that none link to a particular project, the project name should also be commented out or deleted.
Applying updates in batch mode
Updates can also be applied in batch mode. The command for applying fixes in batch mode is:
SIRLIB BATCH target-filename fixfile-name [source-filename]
Where:
- target-filename is the file to be reconfigured, that is, needs updating.
- fixfile-name is the file that contains the update procedures.
- source-filename is optional and allows fixes originally written
against one procedure file to be applied to a different file.
This is useful if the source procedure file in the development environment has a different name than the procedure file in production. In the standard case, where the target and source procedure files are the same or have the same name, this parameter can either be left blank or can be the same as the target file.
The following command:
SIRLIB BATCH SIRMON SIRFIXES SIRMON
results in the same changes being applied to subsystem SIRMON as:
SIRLIB BATCH SIRMON SIRFIXES
The following example shows changes, originally written against DEVPPROC
being applied to PRODPROC
(with the change decks coming from SIRLIBD
):
SIRLIB BATCH PRODPROC SIRLIBD DEVPROC
This command does not have to be placed in a batch job: it can be typed directly in at Model 204 command level, or it can be inserted in the User 0 stream, or invoked in an IODEV3 thread.
One use of the batch SirLib command is to place the command for each managed file in the User 0 stream of the production Online. This allows application updates to be "staged" to production by copying them to the production FixFile, with the application update occuring automatically each time the online comes up.
To aid in batch debugging and job control, SIRLIB also sets a global SIRLIBFAILURE to 0 if the configuration command worked correctly, and to 1 if the command failed. This global can be used to set JOBCODEs or to initiate recovery steps in the event the batch configuration fails. A message detailing the reason for the configuration failure is printed to CCAPRINT.
Administering system and file profiles
The SirLib Administration Option allows users to define a custom SirLib profile for each file. If you select the Administration option with no target file specified on the main menu, then the System Profile is being defined or changed. If a Target file value is specified on the main menu, then a file-specific profile is being defined or changed.
Only users defined to the ADMIN SCLASS in the SirLib subsystem definition are allowed access to the Administration option without specifying a file. Only users defined as Administrators in the System profile are allowed access to File profiles.
The settings on the SIRLIB Administration screen are described below. If any of these settings is left blank on a File profile, SirLib takes its behavior from the System profile setting. If the option is left blank on the System profile, default action varies, but is noted in the descriptions below.
File | A file name is displayed only if one was specified on the main menu. The file name cannot be modified on the Administration screen. If no file was specified on the main menu, then this field will read Defaults. |
---|---|
Fix File | A FixFile is a Model 204 procedure file that contains update procedures and a CONTROL.filename procedure for a file or set of files. Any number of files may share the same FixFile.
The default FixFile for all of SirLib is SIRLIBP, a Model 204 procedure file that was created as part of the SirLib installation process. If a different FixFile is specified as the default for a managed file, SirLib options 1, 2, 5, and all SirLib reports look in the new FixFile for update procedures and the control procedure. |
Single Checkout | This switch affects the behavior of the Q command in SirPro.
The default, Once a procedure is checked out by a programmer, it may not be checked out by another via a managed update command until the previous programmer signals that it is available by checking it back in. The checkout occurs automatically when a Q command is executed. The checkin is optional on the X screen, when the final update procedure is being generated. The programmer simply checks Y at the bottom of the Xcompare screen to unlock the procedure. Users in the SirLib ADMIN subsystem user class (SCLASS) can view and remove procedure locks by Option 7 from the SirLib main menu. Regardless of the setting of this switch, SirLib stores a lock record for each procedure that is the subject of a Q (Sequence) command. This allows managers to view a list of procedures being updated even when the procedure is not actually locked. |
Overwrite protection | This switch affects the behavior of the SirPro X prefix command.
By default SirPro allows users to overwrite each others' update procedures, provided a switch is checked on the Xcompare panel when generating the second update procedure.
The Overwrite switch on the Administration screen never stops programmers from overwriting their own changes.
However if Overwrite is set to |
Require Change Identifiers | The system default is to allow programmers to generate update procedures for any project, whether or not the project name is listed in the CONTROL.filename procedure for the file.
If this toggle is set to
Requiring project names to exist before updates are linked to them allows the manager to specify destinations for update procedures, and it may prevent changes from being left out of a release by inadvertent misspellings of project names by programmers. The advantage of not requiring a project name to exist before changes are linked to it is that it provides a "control point" to switch on an entire project. That is, update procedures may be generated to FixFiles over a period of time, but they don't get included in file reconfigurations until a project name is entered, and at that point they are all made active simultaneously. |
Keep History | Setting this switch to N reduces the amount of historical information kept by SirLib. Certain history records are maintained regardless of this setting, such as Reconfigurations and Cutovers. |
Secure | This option globally turns on and off SirLib internal security, for the system as a whole or for a particular file.
If this switch is set to
If on the default System profile, Secure is
A blank setting for Secure on a file record tells SirLib to use the System Defaults for that file.
If Secure is left blank in the system profile, SirLib assumes it should be |
Procedure Stamping | This switch indicates whether or not a comment is inserted in a changed procedure. The comment indicates the name, date, time, and source file of the change.
Procedure stamping may be set on or off globally ( Internal procedure stamps can be deleted by SirLib when the file is "Cutover" (refer to Release cutover). The deleted stamps may be replaced with comment stamps indicating the cutover date, time, and administrator ID. Default SirLib behavior is to stamp procedures.
|
Administrators | Administrator IDs defined for the System profile (that is, when no file is specified on entering the Administration option) are given access to Administration functions for all files.
These System Administrators may then access Administration options to set File profiles. Users defined as Administrators for a File have access to Security (Option 4) for the files they administer. For SirLib version S7.5 and higher, an unlimited number of Administrators may be specified for the system and for each file. For earlier SirLib versions, the limit of IDs is 12. If a site wants to use SirLib and SirPro on an honor system basis, one of the simplest ways to do it is to define all users to the ADMIN SCLASS of SirLib, and either turn security off, or let each user build whatever permissions they require for themselves or their development group. |
Procs exempt from stamping | If procedure stamping is "on," you might want to prevent SirLib comments from entering procedures that contain application help text, message text, or other literal information used by the application. You can do so by specifying a list of procedure prefixes for procedures in the system or for a file for which comments will not inserted.
The prefixes you specify for exempt procedures may be as many as 32 characters long. Wildcard characters such as |
Managed files are added to the SirLib system using the Administration screen. To remove a file from the SirLib system, press PF10, and SirLib removes all security, history, procedure locks, administration, and user privileges for the file. If the file has already been added to the SIRLIB subsystem, use SUBSYSMGMT to remove it.
Release cutover
One way to use SirLib is to keep update procedures forever, allowing unlimited flexibility to reconfigure a system to a previous state. However, as systems age it may be inconvenient to keep applying a large number of projects and even larger number of update procedures. The "cutover" option essentially returns a managed file to a pre-managed state, but with all existing updates applied.
Cutovers always occur on a file-by-file basis. Performing a cutover causes the following SirLib processing:
- Reconfiguration
Cutover invokes a full file Reconfiguration to ensure that all updates are applied. This step can be bypassed with a switch on the Cutover screen.
- Delete update procedures
All update procedures in the FixFile that have the cutover file as a first qualifier are deleted, whether or not they are linked to an active project.
- Delete project identifiers
All lines in the control procedure for the file (CONTROL.<cutover-file>) are deleted.
- Delete Base procedures
All procedures beginning with
BASE.
are deleted from the target cutover file. - Delete comments
As changes are applied, SirLib inserts a comment like the following at the beginning of each changed procedure:
*** F2BALES Applied by ... ***
These comments are deleted at cutover, and a single new comment reading as follows is inserted (procedures exempted from inserted commenting are not stamped):
*** Cutover on DD/MM/YY
The re-stamping of procedures with a Cutover stamp can be suppressed by a switch on the Cutover screen.
Cutover is initiated from the SirLib main menu using option 5. The file to be cutover is specified on the main menu along with the FixFile from which the changes are to be applied and deleted. If the FixFile field is left blank, the default FixFile from the File record is used.
A scrollable panel at the bottom of the Cutover screen lets you view the changes that are to be applied. If the projects shown are not the ones you want applied and deleted, the process should not be continued until the appropriate FixFile is located.
The remaining fields on the Cutover screen display information to help the file manager determine the state of the file and changes associated with the file. Existing projects are displayed in a block at the bottom of the screen. Dates and times are displayed for the first SirLib transaction for this file, the first and last reconfiguration, and the most recent cutover. All of this information is refreshed after a successful cutover.
From the Cutover screen, PF12 initiates the cutover. If the cutover fails during any step, a failure message appears when the screen is refreshed, and you can check the date and time stamps for each activity to see which step failed. Refer to SirLib problem resolution for advice on error recovery.
Because the results of a cutover are irreversible, it is recommended that cutovers always be preceded by a backup of the managed file and its associated FixFile. It is also recommended that the Reconfiguration step not be bypassed unless you know for certain that a reconfiguration has just been run. Care should be taken to verify that changes are not incorrectly "commented out" in the Control procedure.
If any step fails to execute properly, processing stops at that step and control is returned to the Cutover screen, where an error message is displayed.
After cutover completes, the date stamps for each activity are updated on the Cutover screen. Verify these dates and times before exiting.
View/Clear procedure locks
Procedures have a record posted whenever a programmer takes a
managed update copy of the procedure using the Q command.
This record becomes a lock when the manager has set Single Checkout to Y
in the Administration screen.
Programmers unlock procedures by executing an X (Xcompare) against the locked procedure, specifying Y
in the field on the Xcompare screen that asks whether the procedure should be unlocked.
The View/Clear Procedure Locks option in SirLib is a way for managers to track and modify procedure locking.
Access to this option is determined by ADMIN SCLASS membership.
To clear a lock, place an S
to the left of the procedure name. Locks are cleared when the Enter key is pressed. If you specified a file name on the SirLib main menu when invoking the View/Clear Procedure Locks function, only those procedures locked from the specified file are displayed.
The list may be scrolled and sorted with the displayed PF keys.
In the View/Clear Procedure Locks screen, the procedure name is displayed to a maximum length of 33 characters. Following that, the screen shows the programmer owning the procedure, the source file for the checkout, the work file, and the date and time the checkout occurred. PF12 allows the view to be toggled into a fullname mode, in which long procedure names overlay the user and file information on the right side of the screen.