Online or batch processing can fail with this error in the IDEAL ERROR LOG:
IDADERRP23E - INTERR: Internal LIB error
Below that it shows
SRVC=VLS FUNC=SCAN RC=008 PGM=SCPSMAIN
This error means that your ADROUT spool directory is full, meaning that the maximum number of outputs has been reached. The maximum number allowed is a customized value and can be seen by running the CICS transaction: IPCV SET OUT SITE OPTIONS.
Program compile outputs, reports, diagnostic LIST statements and several other types of outputs could fill the ADROUT file, and the quickest solution to this immediate problem is to review and delete any unneeded outputs.
Component: Ideal
The best way to get a quick picture of the ADROUT contents is to issue the Ideal commands DISPLAY LIBRARY STATUS (abbreviated as D LIB STA) and DISPLAY OUT ALL STATUS (abbreviated as D OUT ALL STA). These commands can be issued both in the online system and in batch, and will provide a good overview of your system files. The D OUT ALL STA command will show all of the Ideal-created output members, and deleting the unwanted members is as easy as using the āZā line command online, or by running the DELETE OUTPUT ### command in batch. Please see the examples below.
In addition to these Ideal commands, there are 2 batch utilities that will allow you to work with VLS files: SCPSUTIL and VLSUTIL. Because VLS files have a proprietary format, you must use one of these utilities with specific commands, and the member name to be processed may be a combination of character and hex bytes. Please see these examples below.
Example 1: Ideal DISPLAY LIBRARY STATUS command
Input using the Ideal Batch proc:
//SYSIN DD *
SIGNON PERSON uuuuuuuu PASSWORD pppppppp
D LIB STA
/*
Output:
=> D LIB STA ..
=>
-------------------------------------------------------------------------------
LIBD : LIBRARY STATUS SYS: $ID DISPLAY
Library Blocks Blocks Blocks Per cent
Name Allocated In Use Available Full
System source library ID$IDSRC 6286 2636 3650 41
System object library ID$IDOBJ 3196 1647 1549 51
System panel library ID$IDPNL 292 50 242 17
Dataview library IDDVW 892 179 713 20
Member library IDDAT 532 425 107 79
IDEAL panel library ADRPNL 1948 1844 104 94
IDEAL message library ADRLIB 748 631 117 84
IDEAL output library ADROUT 1012 172 840 16
Here, the ADROUT library has used 172 of the 1012 blocks available and is 16% full.
Example 2: Ideal DISPLAY OUT ALL STATUS command
Input using the Ideal Batch proc:
//SYSIN DD *
SIGNON PERSON uuuuuuuu PASSWORD pppppppp
D OUT ALL STA
/*
Output from PRTSTATS DD statement:
+------+---+--------+--+---+--------+-----+--------+----+--+------+----------------------+
|OUTPUT|UID|OUTPUT |CP|DES|DEST |DISP |DATE |TIME|RT|NREC |DESCRIPTION |
|NUMBER| |NAME |YS|TYP|NAME | |REQUEST |REQT| | | |
+------+---+--------+--+---+--------+-----+--------+----+--+------+----------------------+
310 MED OUTTRACE 01 LIB ........ READY 09/01/17 0935 02 102 IDEAL TRACE OUTPUT
311 IDL COMPLIST 01 LIB ........ READY 09/07/17 0833 02 1646 $ID.WHO21 (002 )ES...
312 IDL COMPLIST 01 LIB ........ READY 09/07/17 0834 02 1646 $ID.WHO21 (002 )ES...
313 IDL COMPLIST 01 LIB ........ READY 09/07/17 0835 02 1646 $ID.WHO21 (002 )ES...
314 IDL PRSCREEN 01 LIB ........ READY 09/07/17 0910 02 44 DISPLAY INDEX
315 IDL PRSCREEN 01 LIB ........ READY 09/07/17 0910 02 44 DISPLAY INDEX
316 IDL PRSCREEN 01 LIB ........ READY 09/07/17 0910 02 44 DISPLAY INDEX
317 IDL COMPLIST 01 LIB ........ READY 09/07/17 0910 02 1405 $ID.WHO (003 )EST...
Here are three outputs of the Display Index command from a PRSCREEN, which is likely due to a user pressing PF3 accidentally. Let's delete output number 315 next.
Example 3: Ideal DELETE OUTPUT 315 command (with a followup D OUT ALL STA)
Input using the Ideal Batch proc:
//SYSIN DD *
SIGNON PERSON uuuuuuuu PASSWORD pppppppp
DEL OUT 315
D OUT ALL STA
/*
Output from PRTSTATS DD statement (there is no output from the DELETE command):
+------+---+--------+--+---+--------+-----+--------+----+--+------+----------------------+
|OUTPUT|UID|OUTPUT |CP|DES|DEST |DISP |DATE |TIME|RT|NREC |DESCRIPTION |
|NUMBER| |NAME |YS|TYP|NAME | |REQUEST |REQT| | | |
+------+---+--------+--+---+--------+-----+--------+----+--+------+----------------------+
310 MED OUTTRACE 01 LIB ........ READY 09/01/17 0935 02 102 IDEAL TRACE OUTPUT
311 IDL COMPLIST 01 LIB ........ READY 09/07/17 0833 02 1646 $ID.WHO21 (002 )ES...
312 IDL COMPLIST 01 LIB ........ READY 09/07/17 0834 02 1646 $ID.WHO21 (002 )ES...
313 IDL COMPLIST 01 LIB ........ READY 09/07/17 0835 02 1646 $ID.WHO21 (002 )ES...
314 IDL PRSCREEN 01 LIB ........ READY 09/07/17 0910 02 44 DISPLAY INDEX
316 IDL PRSCREEN 01 LIB ........ READY 09/07/17 0910 02 44 DISPLAY INDEX
317 IDL COMPLIST 01 LIB ........ READY 09/07/17 0910 02 1405 $ID.WHO (003 )ES...
Output 315 is no longer shown here.
Example 4: SCPSUTIL LIBRARY command. Note that you must specify the ADROUT and ADRPNL files as shown in the Input here:
Input:
//ADROUT DD DISP=SHR,DSN=your.dsn.ADROUT
//ADRPNL DD DISP=SHR,DSN=your.dsn.ADRPNL
//SYSIN DD *
LIBRARY
/*
Output from the AUXPRINT DD statement (with some spaces compressed out):
P.S.S. - BATCH UTILITY STATUS OF THE LIBRARY
MEMBER NAME MEMBER DESCRIPTION NREC NBLK ADDED UPDATED RLEN
----------------------------------------------------------------------------------------
BBB$PSSDIR$ *** PSS SPOOL DIRECTORY ***..... 0510 0026 083016 090717 0179
BBBBBB#0310 IDEAL TRACE OUTPUT 0102 0004 090117 090117 0133
BBBBBB#0311 $ID.WHO21 (002 )EST$IDPRIV.... 1646 0022 090717 090717 0133
BBBBBB#0312 $ID.WHO21 (002 )EST$IDPRIV.... 1646 0022 090717 090717 0133
BBBBBB#0313 $ID.WHO21 (002 )EST$IDPRIV.... 1646 0022 090717 090717 0133
BBBBBB#0314 DISPLAY INDEX 0044 0004 090717 090717 0133
BBBBBB#0316 DISPLAY INDEX 0044 0004 090717 090717 0133
BBBBBB#0317 $ID.WHO (003 )EST$IDPRIV.... 1405 0018 090717 090717 0133
The Library output will show all members that are in use in this library file.
Example 5: SCPSUTIL INDEX command. Note that you must specify the ADROUT and ADRPNL files as shown in the Input here:
Input:
//ADROUT DD DISP=SHR,DSN=your.dsn.ADROUT
//ADRPNL DD DISP=SHR,DSN=your.dsn.ADRPNL
//SYSIN DD *
INDEX
/*
Output from the AUXPRINT DD statement (with some spaces compressed out):
P.S.S. - BATCH UTILITY SUMMARY OF SPOOL QUEUES
UID PI- PRT-NAME CPY TYP DST STATUS DATE TIME RET DESCRIPTION RECORDS
-----------------------------------------------------------------------------------------
PSS 308 ........ 01 OLL ... DELETE 08/31/17 1407 02 DELETED BY SCPSINIT 0
PSS 309 ........ 01 OLL ... DELETE 08/31/17 1407 02 DELETED BY SCPSINIT 0
MED 310 OUTTRACE 01 OLL ... READY 09/01/17 0935 02 IDEAL TRACE OUTPUT 102
IDL 311 COMPLIST 01 OLL ... READY 09/07/17 0833 02 $ID.WHO21 (002 )EST$IDPRI 1646
IDL 312 COMPLIST 01 OLL ... READY 09/07/17 0834 02 $ID.WHO21 (002 )EST$IDPRI 1646
IDL 313 COMPLIST 01 OLL ... READY 09/07/17 0835 02 $ID.WHO21 (002 )EST$IDPRI 1646
IDL 314 PRSCREEN 01 OLL ... READY 09/07/17 0910 02 DISPLAY INDEX 44
D0J 315 PRSCREEN 01 OLL ... DELETE 09/07/17 1038 02 DELETED BY "DEL OUTPUT" COM 0
IDL 316 PRSCREEN 01 OLL ... READY 09/07/17 0910 02 DISPLAY INDEX 44
IDL 317 COMPLIST 01 OLL ... READY 09/07/17 0910 02 $ID.WHO (003 )EST$IDPRI 1405
PSS 318 ........ 00 ... ... DELETE ../../.. .... 00 *** PSS SPOOL DIRECTORY *** 0
PSS 319 ........ 00 ... ... DELETE ../../.. .... 00 *** PSS SPOOL DIRECTORY *** 0
PSS 320 ........ 00 ... ... DELETE ../../.. .... 00 *** PSS SPOOL DIRECTORY *** 0
Now you can see the full list of members, active and inactive. Member 315 shows deleted as a result of the Ideal DELETE OUTPUT 315 command earlier.
Example 6: VLSUTIL LIBRARY command. Note that the desired VLS file must be allocated to the VLSFILE DD statement (possibly as shown below):
Input:
//VLSFILE DD DISP=SHR,DSN=your.dsn.ADROUT
//SYSIN DD *
LIBRARY
/*
Output from the AUXPRINT DD statement (with some spaces compressed out):
SOME.DSN.ADROUT LIBRARY LISTING 09/07/17 1157 PAGE 0001
NAME DESCRIPTION ADDED UPDATED RCDS BLKS
BBB$PSSDIR$ *** PSS SPOOL DIRECTORY ***..... 08/30/16 09/07/17 510 26
BBBBBB#.... IDEAL TRACE OUTPUT 09/01/17 09/01/17 102 4
BBBBBB#.... $ID.WHO21 (002 )EST$IDPRIV.... 09/07/17 09/07/17 1,646 22
BBBBBB#.... $ID.WHO21 (002 )EST$IDPRIV.... 09/07/17 09/07/17 1,646 22
BBBBBB#.... $ID.WHO21 (002 )EST$IDPRIV.... 09/07/17 09/07/17 1,646 22
BBBBBB#.... DISPLAY INDEX 09/07/17 09/07/17 44 4
BBBBBB#.... DISPLAY INDEX 09/07/17 09/07/17 44 4
BBBBBB#.... $ID.WHO (003 )EST$IDPRIV.... 09/07/17 09/07/17 1,405 18
GRAND TOTALS: 8 MEMBERS, 7,043 RECORDS
TOTAL BLOCKS ON FILE: 1,020 UNUSED BLOCKS: 890
LIBRARY BLOCK SIZE: 4,000
LIBRARY NAME LENGTH: 11
LIBRARY FORMAT: 2-BYTE BLOCK NUMBERS
In the NAME value above, the end of the name following the # is a binary representation of the member number. For example, output 314 (from the Display Index) is shown here with the name "BBBBBB#...." and the last four characters are x'0000013A'. Decimal 314 is stored as x'13A' here. This is important to know if using VLSUTIL to delete this member.
There is also a VLS command to show just the space information that you see above. The command is SPACE, and returns a simple report:
SOME.DSN.ADROUT SUMMARY OF UTILITY OPERATIONS 09/07/17 1157 PAGE 0001
VERSION DATE: 08/04/15
SPACE
TOTAL BLOCKS ON FILE: 1,020 UNUSED BLOCKS: 890
In summary, there are several ways to deal with this IDADERRP23 situation, and this is a quick way to use batch processing to see and remove unwanted members from the ADROUT library.
For more information on the Ideal commands shown above, please refer to the following documentation for Datacom version 15.1 Tools.
Ideal for Datacom Reference > Ideal Commands
For more information about the SPCSUTIL and VLSUTIL programs, please refer to the following version 15.1 IPC Documentation.
Administrating IPC > Maintaining the IPC System:
As always, please contact Broadcom support for Datacom if you have further questions.