After the migration to Netmaster 12.2, an old and very simple NCL that is used very often, is running very slowly: in the previous version (12.1) it lasted 3 o 4 seconds, now it takes more than 40 seconds to complete, so is almost unusable.
NLC just lists some library members looking for a specific string ( the members are quite large : 34000 lines) :
&CONTROL NOTRACE NODUPCHK NOENDMSG NOINTLOG CMD LOOPCHK
&write &ZGTIME11
&IF &PARMCNT NE 1 &THEN &DO
&WRITE COLOR=WHITE No parameter has been entered. Clist ends.
&END
&DOEND
&DSN1 = USRUTERM --->>>>> 34000 lines
&DSN2 = USRVTERM --->>>>> 2400 lines
&DSN3 = USRULCST --->>>>> 1000 lines
&DSN4 = USRURTRM --->>>>> 32000 lines
&A = 1
&DOWHILE &A LE 4
&FILEF = &DSN&A
&GOSUB .CERCA
&A = &A + 1
&DOEND
&WRITE
&WRITE ** Clist ends **
&write &ZGTIME11
&END
-* it runs a string search in each table.
-*
.CERCA
&WRITE
&WRITE Search in table : &filef
&risp = 0
&INTCMD -LI &FILEF ID=SICUR
&DOWHILE &risp EQ 0
&INTREAD STRING=(RIGA)
&risp = &FNDSTR N03906 &RIGA
&chek = &FNDSTR &1 &RIGA
&IF &chek NE 0 &THEN &DO
&WRITE COLOUR=YELLOW &RIGA
&DOEND
&DOEND
&RETSUB
Release : 12.2
Component : CA NetMaster Network Management for TCP/IP
The I/O loader has changed in R12.2 which seems to have negatively impacted the LIST command especially when the member is large.
The NCL code can be modified to use $DSCALL, similar to below. Basically the LIST can be replaced with CALLS to $DSCALL.
Moreover, the DSCALL requires the DSN name to be specified, but going forward this is the preferred method.
.CERCA
&WRITE
&WRITE RICERCA NELLA TABELLA : &FILEF
&WRITE PROCESSING MEMBER: &FILEF
-* &INTCMD -LI &FILEF ID=SICUR
-* &INTCMD -LI &FILEF
&CONTROL SHRVARS=($DS)
-EXEC $DSCALL OPT=FOPEN DSN=hlq.TESTEXEC STAT=SHR +
MEMBER=&FILEF
&DD = &$DSDDNAME -* SAVE DDNAME
-EXEC $DSCALL OPT=READ DATA=* DD=&DD LIMIT=32000 TRUNCATE=71
&WRITE COLOR=YELLOW DATA=&SYSMSG
&WRITE COLOUR=YELLOW HIGHLIGHT=BLINK DATA=RECORD COUNT IS &$DSDATA#
&LINECT = 1
&DOWHILE &LINECT LE &$DSDATA#
&CHEK = &FNDSTR &COMPARE &$DSDATA&LINECT
&IF &CHEK NE 0 &THEN &DO
&WRITE COLOUR=YELLOW FOUND MY RECORD &$DSDATA&LINECT
&WRITE COLOUR=YELLOW RECORD IS AT LINE &LINECT
&DOEND
&LINECT = &LINECT + 1
&LOOPCTL 9999
&DOEND
-* -EXEC $DSCALL OPT=INFO DD=&DD -* CLOSE PDS
-* &WRITE COLOR=RED DATA=LRECL=&$DSRECL BLKSIZE=&$DSBLKS
-EXEC $DSCALL OPT=FCLOSE DD=&DD -* CLOSE PDS
&WRITE COLOR=YELLOW DATA=CLOSING FILE &SYSMSG
&RETSUB