Google
 

Trailing-Edge - PDP-10 Archives - BB-L014A-BM - autopatch/apl2s2.d01
There are 3 other files named apl2s2.d01 in the archive. Click here to see a list.
                 EDIT DESCRIPTIONS FOR APLSF-20-V2                              
  
  
                             EDIT 436    FOR APLSF
  
[SYMPTOM]
  
     If a file is open in /DA/SHARE mode and any other  file  is  open
also,  various  errors  can  occur, such as bad data in either or both
files, IO TO UNASSIGNED CHANNEL,  or  inability  to  read  the  direct
access file.
  
  
[DIAGNOSIS]
  
     The routine DFUPDATE in DFILE.BLI which calls UPDDA to  dump  out
the  direct  access  file's  in-core  buffers when the locks on it are
dequeued does not set CHNUM, the channel number of  the  file.   Thus,
UPDDA may write to the wrong file.
  
  
[CURE]
  
     Set CHNUM to be DIMLDN^23, as GDFUPDATE already does.
********************************************************************************
  
  
                             EDIT 437    FOR APLSF
  
[SYMPTOM]
  
     )MODE is not saved with the workspace, although the documentation
says it is.
  
  
[DIAGNOSIS]
  
     It is in GFLAGS rather than in WSFLAGS.
  
  
[CURE]
  
     Move it into WSFLAGS.  This involves changes  to  DNMAC,  SI  and
FNTOA.  EMT and RTN1 must also be recompiled.
********************************************************************************
  
  
                             EDIT 440    FOR APLSF
  
  
[SYMPTOM]
  
     The result of a take or drop operation on a vector cannot  exceed
131071  elements  (377777 octal), regardless of the type.  If it does,
the user gets a WS FULL.
  
  
[DIAGNOSIS]
  
     An unnecessary check is being done in QTAKE.
  
  
[CURE]
  
        Remove the check for the size of the result and let GTCORE  do
it.
********************************************************************************
  
  
                             EDIT 441    FOR APLSF
  
  
[SYMPTOM]
  
     Setting )TABS 10 can cause bells to be output if the terminal  is
a key-pairing terminal.  For example,
  
terminal..key
...
      M_2 7 .RO 1.1
      M
... (no bells)
      )TABS 10
      M
... (bells)
  
  
[DIAGNOSIS]
  
     The code is using a bell character as a fill character after  the
tab,  apparently  because of 2741-type terminals.  Edit 316 fixed this
for teletype terminals.
  
  
[CURE]
  
     Extend edit 316 to include key-pairing terminals.
********************************************************************************
  
  
                             EDIT 442    FOR APLSF
  
  
[SYMPTOM]
  
     If )OUTPUT is used to direct output to another TTY, the input  is
not echoed on the other TTY.
  
  
[DIAGNOSIS]
  
     The wrong bit is being checked.  It checks to see that the device
is a TTY rather than the controlling TTY.
  
  
[CURE]
  
     Check ZCONSOLE (004000,,0) rather than DV.TTY (000010,,0) in  the
DEVCHR  word.   We  could  have checked DV.TTA except that APLSF fools
with the bits and sets an unused bit it calls ZCONSOLE if  the  device
is the controlling terminal.
********************************************************************************
  
  
                             EDIT 443    FOR APLSF
  
  
[SYMPTOM]
  
     The result of an inner or output  product  cannot  exceed  128000
elements (inner) or 126000 elements (outer).
  
  
[DIAGNOSIS]
  
     An unnecessary check is being made in INNPROD and in INOUT.
  
  
[CURE]
  
     Let GTCORE do the checking.
********************************************************************************
  
  
                             EDIT 444    FOR APLSF
  
  
[SYMPTOM]
  
     Inner product with right operator nand or nor and  left  operator
arithmetic gets bad results.
  
  
[DIAGNOSIS]
  
     Inner product computes the right operator one at a time.  If  the
result  could  be  a negated Boolean, and the left operator expects an
integer, the result must be converted to an integer  by  dropping  all
but the low-order bit.
  
  
[CURE]
  
     Add code to do so.
********************************************************************************
  
  
                             EDIT 445    FOR APLSF
  
[SYMPTOM]
  
     No overt symptoms, but LBRLOOP in GLEX  uses  a  variable  LINENO
which does not always get initialized.
  
  
[DIAGNOSIS]
  
     If no line number is read, LINENO is not initialized.
  
  
[CURE]
  
     Set it to zero in this case.
********************************************************************************
  
  
                             EDIT 446    FOR APLSF
  
  
[SYMPTOM]
  
     It is possible to declare the return value of a function to  have
the  same  name  as  one  of the parameters, for example, .DL Z _ A Z.
Then, in the body of the function, only the  returned  value  is  ever
used.
  
  
[DIAGNOSIS]
  
     This should be a definition error.
  
  
[CURE]
  
     Check for this case and return an error.
********************************************************************************
  
  
                             EDIT 447    FOR APLSF
  
  
[SYMPTOM]
  
        If output failed, the copy of the data being output may not ever
be garbage collected.
  
  
[DIAGNOSIS]
  
        The code in FILERR does not check this.
  
  
[CURE]
  
        Have FILERR check OPRND1  and  garbage  it  if  it  is  nonzero.
CKMKGARB  will not garbage it if it is an indirect reference through the
symbol table but only if it is in the XSTACK.
********************************************************************************
  
  
                             EDIT 450    FOR APLSF
  
  
[SYMPTOM]
  
  
        Immediate mode comments are never deleted  from  the  worksapce,
thus filling up available workspace area.
  
  
[DIAGNOSIS]
        The code never checks.
  
  
[CURE]
        Delete the comment in CRL.  Normal immediate-mode statements are
deleted in SEOS.
********************************************************************************
  
  
                             EDIT 451    FOR APLSF
  
  
[SYMPTOM]
  
        )CALL will not return correctly for terminal  type  LA36.   When
control returns to APLSF, the terminal type must be retyped.
  
  
[DIAGNOSIS]
  
        An invalid type is put into  the  TMP  file,  which  causes  the
"terminal.." question to be asked when the user returns to APLSF.
  
  
[CURE]
        Change the TRMTYP PLIT in OFF to add a null element for terminal
type 6, which is not used, so that type 7 is (correctly) LA36.
********************************************************************************
  
  
                             EDIT 452    FOR APLSF
  
  
[SYMPTOM]
  
        Inner product may generate bad code or give a  SYSTEM  ERROR  if
the  right  operand is a scalar, depending on previous operations in the
workspace.
  
  
[DIAGNOSIS]
        RTCSE is never set up.  If the inner  product  code  is  entered
with  it set to zero, bad code is generated to pick up the right operand
as if it were a vector.  This code should only be generated if the  code
generation routine is going to call SCTOVC.
  
  
[CURE]
  
        Set RTCSE to -1 in the beginning of INNPROD.
********************************************************************************
  
  
                             EDIT 453    FOR APLSF
  
  
[SYMPTOM]
  
     A[1;]_0 where A is  undefined  should  give  a  value  error  but
usually gives a length error.
  
  
[DIAGNOSIS]
  
     The code in FJPSUB picked up the address (0) and got  the  length
from there.
  
  
[CURE]
  
     If the left variable being subscripted has no value, LSUB  should
give a value error.
********************************************************************************
  
  
                             EDIT 454    FOR APLSF
  
  
[SYMPTOM]
  
     The pseudo-random number generator in APLSF is very slow.
  
  
[DIAGNOSIS]
  
     The algorithm used generates fixed overflows, which  are  trapped
for.   The trap routine takes no fixup action for these because INTRPT
is off, but the trapping is very slow because DOVTRA  does  an  APRENB
UUO to re-enable interrupts.  This is unnecessary because the original
APRENB UUO was for repetitive enable.
  
  
[CURE]
  
     Remove the extra UUOs.
********************************************************************************
  
  
                             EDIT 455    FOR APLSF
  
  
[SYMPTOM]
  
     If a GCOL occurs during an execute of a system command and causes
the  activation  records  for it to move, INPTR gets clobbered and the
usual result is a SYSTEM ERROR.
  
  
[DIAGNOSIS]
  
     The execute string has no backpointer and  so  is  not  relocated
when the string is moved.
  
  
[CURE]
  
     Relocate INPTR during an execute of a system command.
********************************************************************************
  
  
                             EDIT 456    FOR APLSF
  
  
[SYMPTOM]
  
     Several characters in the atomic vector (.BXAV) no  longer  print
correctly.   Also,  anything printed after an element of .BXASCII will
be printed in the wrong character set.
  
  
[DIAGNOSIS]
  
     Incorrect codes were used in the new  translation  table,  and  a
line was missing from the code which handles .BXASCII.
  
  
[CURE]
  
     Correct the bad table entries, and insert the missing code.
********************************************************************************
  
  
                             EDIT 457    FOR APLSF
  
  
[SYMPTOM]
  
     Opening a  PTY  for  both  input  and  output  fails  (only  with
APLSF-10).
  
  
[DIAGNOSIS]
  
     The DEVCHR UUO does not set the TTY bits for a  PTY,  but  PA1050
does.
  
  
[CURE]
  
     Do a DEVTYP UUO to determine if we are opening a PTY.  If so, set
the ZTTY bit in the DEVCHR word.
********************************************************************************
  
  
                             EDIT 460    FOR APLSF
  
  
[SYMPTOM]
  
        If you do an .IB27 after a WS  full,  you  may  get  a  system
error.
  
  
[DIAGNOSIS]
  
     The code for the i-beam does not check to see if  the  vector  of
line numbers will fit in core and tries to create it anyways.
  
  
[CURE]
  
     Check for enough space first.
********************************************************************************
  
  
                             EDIT 461    FOR APLSF
  
  
[SYMPTOM]
  
     Comma insertion in  $  format  does  not  always  generate  field
overflow when necessary.  For example, 'CI8'$1234567 gives 1234,567.
  
  
[DIAGNOSIS]
  
     If we are doing comma insertion, we may not be able  to  fit  one
more  digit  for  a  positive  number  than for a negative one without
generating a field overflow, because the extra digit position may have
to be occupied by a comma, and so will have to be a leading space.
  
  
[CURE]
  
     If there are three digits to the left of the leftmost comma  when
the  number  is  negative,  we  cannot fit another digit in when it is
positive, and so must deliberately  insert  a  space  (or  other  fill
character).
********************************************************************************
  
  
                             EDIT 462    FOR APLSF
  
  
[SYMPTOM]
  
	Owner's directory should be updated if one re-enters from
different connected directory
  
  
[DIAGNOSIS]
	Get the PPN in Mon.bli where user re-enters.
  
[CURE]
	check PPN at the reentry.
********************************************************************************
  
  
                             EDIT 463    FOR APLSF
  
  
[SYMPTOM]
  
     If you do an .IB27 after a WS FULL, you may get a SYSTEM ERROR.
  
[DIAGNOSIS]
     Check for enough space first.
  
[CURE]
  
	Correct edit 460.    The code for the i-beam does not check to see if
  the  vector  of line numbers will fit in core and tries to create it anyways.
********************************************************************************
  
  
                             EDIT 464    FOR APLSF
  
  
[SYMPTOM]
  
	LA36 OR LA120 DOES NOT SET APL ALTERNATE MODE AUTOMATICALLY.
  
[DIAGNOSIS]
  
	CHECK IF TERMINAL TYPE IS LA36 THEN DO NOT PRODUCE ESC SEQUENCE.
  
[CURE]
	DO NOT PRODUCE THE ESC SEQUENCE
********************************************************************************
  
  
                             EDIT 465    FOR APLSF
  
  
  
  
[SYMPTOM]
  
     When using the ENQ/DEQ facility and locking the  entire
resource, the data file can become corrupted.
  
[DIAGNOSIS]
  
     When the user  executes  the  statement:   .BXDEQ  CHAN
(where  CHAN  is the channel number of the file) the file is
DEQed before the buffers are written to the file.
  
[CURE]
  
     Call the routine DFUPDATE (which updates the buffers by
writing the buffers to the file) before the routine DODEQ is
called (which does the DEQ UUO).
********************************************************************************
  
  
                             EDIT 466    FOR APLSF
  
  
  
  
[SYMPTOM]
  
.BXQLD MAY PRODUCE SYSTEM ERRORS.
  
[DIAGNOSIS]
  
IT IS TRYING TO GO THROUGH THE CODE WHICH CLEANS UP AFTER  A
MONADIC OPERATOR AND SETS UP ITS VALUE.  (MFINUP)
  
[CURE]
  
DO NOT USE MFINUP.  ALWAYS USE MERRET, REGARDLESS OF WHETHER
OR NOT THERE IS A LATENT EXPRESSION.
********************************************************************************
  
  
                             EDIT 467    FOR APLSF
  
  
  
  
[SYMPTOM]
  
     )LIB and )DROP do not look in an SFD if the SFD  is  in
the default path.
  
[DIAGNOSIS]
  
     )DROP specifies the user's PPN when it does the  LOOKUP
on the file.  It should use the default PPN [0,0].
  
     )LIB looks up the user's directory, ppn.UFD,  which  is
in  the  master  file directory [1,1].  If the user is in an
SFD, it should lookup that directory, name.SFD, in the  next
superior SFD (or in the UFD if there is no superior SFD).
  
[CURE]
  
     For the system command )DROP, place  a  zero  into  the
lookup argument block in place of the user's PPN.
  
  
For the system command )LIB:
  
     If the user specified a device  name  or  a  PPN,  then
proceed normally.  If not, do a PATH.  monitor call and find
out if the path includes an SFD.  If so, change the argument
block  for  the  lookup  call so that it looks up the proper
directory.
********************************************************************************
  
  
                             EDIT 470    FOR APLSF
  
  
  
  
[SYMPTOM]
  
     WHILE COPYING SUSPENDED FUNCTION, THE LOCALIZED  SYSTEM
VARIABLE CAUSE SYNTEX ERROR AS A RESULT OF ANY FURTHER USE.
  
[DIAGNOSIS]
  
     WHILE COPYNG SVSYMTAB GOT CLOBBERED.
  
[CURE]
  
     DO  NOT  UPDATE  LOCALIZED  SYSTEM  VARIABLE  IN  PSSTE
ROUTINE IN RELOC.BLI IN CASE OF SUSPENDED FUNCTION.
********************************************************************************
  
  
                             EDIT 471    FOR APLSF
  
  
  
  
[SYMPTOM]
  
        APLSF HANGS WHEN ATTEMPTING 1!M WHERE M  IS  GREATER
THAN 1E6
  
[DIAGNOSIS]
  
        EDIT 303 CHANGED THE METHOD OF CALCULATING  FLOATING
BINOMIAL COEFFICIENTS.  THE NEW METHOD ATTEMPTS TO DECREMENT
THE SECOND ARGUMENT UNTIL IT IS 1.  IF THE NUMBER  IS  LARGE
IT WILL TAKE TOO LONG OR PERHAPS FOREVER.
  
[CURE]
  
        USE THE ORIGINAL  METHOD  IF  THE  EXPONENT  OF  THE
NUMBER IS GREATER THAN OR EQUAL TO 225.
********************************************************************************
  
  
                             EDIT 472    FOR APLSF
  
  
  
  
[SYMPTOM]
  
TAKING THE EXPONENT OF MINUS INFINITY CAUSES APLSF TO HANG.
  
[DIAGNOSIS]
  
THE MOVM INSTRUCTION IN THE EXP ROUTINE CAUSES A  TRAP  WHEN
THE  SOURCE  CONTAINS  400000,,0  (MINUS  INFINITY).  AS APL
ATTEMPTS TO HANDLE THE OVERFLOW, EXP GETS CALLED AGAIN,  AND
IT TRAPS AGAIN...
  
[CURE]
  
FORCE EXP TO RETURN ZERO IF NEGATIVE INFINITY  IS  GIVEN  AS
THE ARGUMENT.
********************************************************************************
  
  
                             EDIT 473    FOR APLSF
  
  
  
  
[SYMPTOM]
  
     USE  EDITED  TMPCORE  FILE  FAILED  AND  APLSF  STARTED
RUNNING INTO LOOP AT PROMPT TERMINAL..
  
[DIAGNOSIS]
  
     WHENEVER TMPCORE UUO FAILED INCHAR CHECKED FOR  TIMEOUT
AND JUMEPED TO PASS LINE-FEED.
  
[CURE]
  
     INITIALIZE TIMEOUT TO 0 IN START.BLI SO WE  DON'T  FEED
ANY LF AND TTCALL IN INCHAR WILL READ BUFFER INSTEAD OF LF.
********************************************************************************
  
  
                             EDIT 474    FOR APLSF
  
  
  
  
[SYMPTOM]
  
DYADIC SHREIK MAY GIVE INCORRECT RESULTS.
  
[DIAGNOSIS]
  
EDIT 471 CLOBBERED REGISTER T2.
  
[CURE]
  
COMMENT OUT EDIT 471 AND REPLACE IT.
********************************************************************************
  
  
                             EDIT 475    FOR APLSF
  
  
  
  
[SYMPTOM]
  
APLSF HANGS WHEN MINUS INFINITY IS THE LEFT  ARGUMENT  OF  A
DYADIC CIRCLE.
  
[DIAGNOSIS]
  
MINUS  INFINITY  IS  1B0,  WHICH  INTERRUPTS   ON   A   MOVM
INSTRUCTION.    APL   DOESN'T  KNOW  WHAT  TO  DO  WITH  THE
INTERRUPT, AND ENDS UP HUNG.
  
[CURE]
  
CHECK FOR MINUS INFINITY AND GIVE A RANGE ERROR.
********************************************************************************
  
  
                             EDIT 476    FOR APLSF
  
  
  
  
[SYMPTOM]
  
IF AN ASCII SEQUENTIAL DATA  FILE  IS  READ  DURING  )INPUT,
APLSF  WILL  TAKE COMMANDS FROM THE DATA FILE INSTEAD OF THE
)INPUT FILE.
  
[DIAGNOSIS]
  
WHEN CLEANING UP IN SYNTAX,  IF  ZIONUM  IN  THE  ACTIVATION
RECORD IS 0, INDEV, THE POINTER TO THE INPUT WAS NOT UPDATED
FULLY.  IT WAS LEFT POINTING TO THE BUFFER  WHERE  THE  DATA
FILE  WAS,  CAUSING  THE  NEXT  COMMAND TO BE TAKEN FROM THE
DATA.
  
[CURE]
  
UPDATE INDEV PROPERLY.
********************************************************************************
  
  
                             EDIT 477    FOR APLSF
  
  
  
  
[SYMPTOM]
  
.IO .NG1+2*35 MAY GIVE A PA1050 ERROR, OR MAY HANG IF DDT IS
LOADED.   OTHER  ERRORS  ARE POSSIBLE DEPENDING ON WORKSPACE
SIZE.
  
[DIAGNOSIS]
  
2*35-1 IS THE LARGEST INTEGER ALLOWED, MIOTA  CALLS  MFREECH
TO MAKE SURE THERE IS ENOUGH CORE TO DO IT.  MFREECH ADDS DX
TO THE REQUESTED AMOUNT OF CORE AND COMPARES  THE  TOTAL  TO
JOBREL.  IF ITS LESS THAN JOBREL, THEN THERE IS ENOUGH CORE.
ADDING DX TO 2*35-1 OVERFLOWS, PRODUCING A  NEGATIVE  RESULT
WHICH  IS  LESS  THAN  JOBREL.  MIOTA THINKS ALL IS WELL AND
STARTS  BUILDING  THE  DATA  ENTRY  AND  FILLING  CORE  WITH
CONSECUTIVE  INTEGERS.   MIOTA USES R (REGISTER 16) TO POINT
TO THE ADDRESS TO  PLACE  THE  NUMBER.   WHEN  R  POINTS  TO
ITSELF, AND DESTOYS ITSELF, ANYTHING CAN HAPPEN.
  
[CURE]
  
PUT A CHECK IN  MIOTA  AND  GIVE  A  DOMAIN  ERROR  FOR  ANY
ARGUMENT GREATER THAN 777777 (OCTAL).
********************************************************************************
  
  
                             EDIT 500    FOR APLSF
  
  
  
  
[SYMPTOM]
  
APLSF GIVES A SYSTEM ERROR WHEN READING A  CORRUPTED  DIRECT
ACCESS FILE.
  
[DIAGNOSIS]
  
ZCOUNT IN THE DATA ENTRY IN THE FILE  HAS  BEEN  CHANGED  TO
SOME LARGE VALUE.  APLSF TRIES TO READ MORE DATA THAN IT HAS
BUFFER SPACE FOR, OR PERHAPS READ PAST THE END OF THE FILE.
  
[CURE]
  
MAKE SURE THAT ZCOUNT IN THE DATA ENTRY TO BE READ  IS  LESS
THAN  THE  WORD  COUNT  IN THE FILE DIRECTORY.  IF ZCOUNT IS
GREATER, GIVE A FILE NOT DIRECT ACCESS FORMAT ERROR.
********************************************************************************
  
  
                             EDIT 501    FOR APLSF
  
  
  
  
[SYMPTOM]
  
SYSTEM ERROR OR PA1050 ERROR ON RECURSIVE .XQ IF )ECHO OFF.
  
EXAMPLE:
  
        )ECHO OFF
        FOO _ '.XQ FOO'
        .XQ FOO
  
[DIAGNOSIS]
  
EDIT 347 IN ERROR IN GLEX HANDLES THE DOUBLE  ERROR  MESSAGE
FOR  .XQ.  WHILE COPYING THE MESSAGE, THE POINTER IS CHECKED
TO SEE IF IT IS DONE AFTER EACH BYTE IS COPIED.  IF NO BYTES
SHOULD BE COPIED, THE POINTER IS NOT CHECKED UNTIL AFTER THE
FIRST BYTE HAS BEEN COPIED AND BY THEN IT IS TOO  LATE,  THE
COPYING DOESN'T STOP.
  
[CURE]
  
CHECK THE BYTE POINTER TO SEE IF THE  COPY  IS  DONE  BEFORE
EACH BYTE IS COPIED, INSTEAD OF AFTER.
********************************************************************************
  
  
                             EDIT 502    FOR APLSF
  
  
  
  
[SYMPTOM]
  
SYSTEM ERROR ON THE -10 DOING DYADIC COMMA  WHEN  CORE  RUNS
OUT.
  
[DIAGNOSIS]
  
AS DCOMMA BUILDS THE NEW DATA ENTRY, IT DOES NOT  INITIALIZE
ZHEAD.   IF  GTCORE  FAILS,  GTCERR (GTCORE'S ERROR ROUTINE)
TRIES TO LOOK AT ZHEAD OF THE DATA ENTRY BEING CREATED.   IF
IT POINTS TO A NONEXISTANT PAGE, YOU GET A SYSTEM ERROR.  ON
THE -20 YOU GET A RANDOM PAGE CREATED.
  
[CURE]
  
MAKE ZHEAD POINT TO ITSELF WHEN BUILDING THE DATA  ENTRY  IN
DCOMMA.
********************************************************************************
  
  
                             EDIT 503    FOR APLSF
  
  
  
  
[SYMPTOM]
  
ASCII SEQUENTIAL FILES HAVE GARBAGE IN  THEM  AFTER  CLOSING
THE FILE AND APPENDING.
  
[DIAGNOSIS]
  
APL DIDN'T CLEAR A BUFFER BEFORE IT FILLED IT WITH THE  LAST
BLOCK  IN  THE  FILE.  APL THEN THOUGHT THAT THE JUNK IN THE
BUFFER WAS GOOD DATA FROM THE FILE.  (-20 ONLY)
  
ALSO THE BYTE COUNT THAT DETERMINED HOW  MUCH  OF  THE  LAST
BLOCK CONTAINED GOOD DATA WAS OFF BY ONE CAUSING A NULL BYTE
AT THE END OF THE BLOCK.  (-10 AND -20)
  
[CURE]
  
(-20 ONLY) ALWAYS COPY  200  WORDS  INTO  THE  BUFFER.   THE
MONITOR  WILL  HAVE CLEARED ANYTHING PAST THE REAL DATA WHEN
THE IN UUO WAS DONE.
  
(-10 AND -20) ADD ONE TO THE BYTE COUNT.
********************************************************************************
  
  
                             EDIT 504    FOR APLSF
  
  
  
  
[SYMPTOM]
  
LARGE ASCII SEQUENTIAL DATA FILES GET  CORRUPTED  IN  APPEND
MODE.
  
[DIAGNOSIS]
  
WHEN THE MONITOR RETURNS THE SIZE OF THE  FILE  IN  POSITIVE
BLOCKS,  RATHER THAN NEGATIVE WORDS, APLSF DOESN'T BOTHER TO
FIND OUT WHERE THE LAST BYTE IN  THE  FILE  REALLY  IS.   IT
ASSUMES THE LAST BLOCK OF THE FILE IS EMPTY.
  
[CURE]
  
ALWAYS FIND OUT WHERE THE LAST BYTE IN THE  FILE  IS  BEFORE
APPENDING.
********************************************************************************
  
  
  
END OF  APLSF-20-V2