GAPS in database (AI boards) when translating database after upgrade from MP200 to AC410
We have experienced GAPS in the database for AI instances (LF 6) after translating database in a controller that is upgraded from MP200 to AC410. The database was dumped from the MP200 and translated to the AC410 (DUDBS and TRDBS). There was a requirement to have the sw 1 to 1, thus only required changes to the database where performed.
There are 9 AI boards in the controller.
AI 1 - 5 are DSAI 130
AI 6 is DSAI 145
AI7 is DSAI 155
AI8 - AI9 are DSAI 130.
Instances on AI1 - AI5 starts from LF1 - LF80
Then there is a jump in the database when instances on AI6 starts:
Instances on AI6 starts from LF141 - 171
Then there is a new jump when AI7 start.
Instances on AI7 starts from LF190 - 203Then AI8 and AI9 continues from LF81 - LF112 In the database there are AIC instances from LF126 - LF140 and from LF185 - LF189. Usually the rule is that GAPS in the databse should be avoided, thus we are discussing with the customer if the GAPS should be "filled" with spare AIC´s. In connection to this I have two questions: 1. Are areas in the LF reserved for specific types of boards as the DSAI start from LF141 (AI6) and LF190 (AI7) or is this due to the AIC´s occupying space from LF126 - LF140 and LF185 - LF189? 2. Will the GAPS cause problems to the AC410 and should be "filled" with spare AIC´s? All relevant comments are appreciated. Thanks
If you look in the DB source code from the MP200 you will find that the AI boards are listed by board type, not board number. First you will find the DSAI130s, in you case AI1, AI2, AI3, AI4, AI5, AI8, AI9, then DSAI145, AI6, and last the DSAI155, AI7. The source code is then loaded in this order into the AC410 as far as the AIS records go. To be more precise, the first pass, "POSITION DEPENDEDENT" will load all AICs based on their fixed record numbers, then pass 2 will load the physical AI channels, based on the board type order above. Keep in mind that the AIS records for all channels on a given card have to reside in a contiguous block of records so if a sufficiently large block of records, 16 for DSAI130, 31 for DSAI145 or 14 for DSAI155, is not not available between the last AIS block and for example an AIC, the translate source process will leave a gap, and find the next available contiguous block.
I have always considered it good engineering practice to separate the AIS and AIC records and typically reserve record numbers above 350 or 400 for AICs. This of course means you can not use CRDB to create AICs, but you can always use a small source code template file, or in my case, a command procedure that I wrote 20 years ago, that will insert an AIC at any given record number.
To the question whether the gaps should be filled, really no need to, the system will work just fine. It is more of a housekeeping issue, and dose not affect functionality. A separation between AIS and AIC records will make it easier to use some advanced tools, like logical file dumps and loads for batch changes, but that is a story for another day.
The advise to avoid gaps in DB code can be considered good engineering practice, but is really only stricktly required in a few cases, like Data Sets, MVBs and a few more. Also required is that DAT record DAT1 need to exist if you are using DATs.