*DECK NP$8TIN
*IF,DEF,XFR
USETEXT NX$ACBF
USETEXT AIPDEF
USETEXT HEADER
USETEXT NP$STAT
USETEXT NP$DB
USETEXT NP$NWL
USETEXT NP$MODE
USETEXT NP$GETS
USETEXT NX$ACBX
PROC NP$8TIN(NPASCWD,INTVALUE);
BEGIN
#
**
* 1. PROC NAME AUTHOR DATE
*
* NP$8TIN Y. C. YIP 02/16/1984
*
* 2. FUNCTIONAL DESCRIPTION.
*
* NP$8TIN PICKS UP THE DD VALUE IN ASCII REPRESENTATION
* AND RETURN THE INTEGER VALUE OF THE CHECKMARK TO INTVALUE.
*
* 3. METHOD USED.
*
* NP$8TIN LOOPS AROUND THE DD FIELDS STARTING FROM THE
* LAST DD FIELD. IT PICKS UP THE ASCII VALUE, SUBTRACT
* ASCII VALUE 0 FROM IT TO GET THE ACTUAL NUMERICAL VALUE
* WORD OFFSET OF THE CURRENT PRU. DBIT IS ONLY USED BY THE
* RESULT TO IT.
*
* 4. ENTRY CONDITIONS:
*
* NPASCWD = WORD CONTAINING THE DD
* INTVALUE = RETURN PARAMETER
*
*
* 5. EXIT CONDITIONS:
*
* INTVALUE HAS THE CHECKMARK NUMBER.
* NPASCWD IS UNCHANGED
#
#
****
#
XREF
BEGIN
END
#
****
#
ITEM NPASCWD; # WORD CONTAINING THE ASCII DD#
ITEM INTVALUE; # PARAMETER THAT RETURNS THE #
ITEM TEMP; # INTEGER TEMPORARY #
ITEM EXPONENT; # POWER OF TEN #
ITEM INDEX; # LOOP INDEX #
CONTROL EJECT;
#
************************************************************************
* *
* CODE OF NP$8TIN BEGINS HERE *
* *
************************************************************************
#
EXPONENT = 1; # START WITH 1 #
INTVALUE = 0; # INTIALIZE INTVALUE #
FOR INDEX = DDEND STEP -BYTE$SIZE UNTIL DDSTART
DO
BEGIN
TEMP = B<INDEX,BYTE$SIZE>NPASCWD; # GET THE ASCII VALUE #
TEMP = TEMP - ASCII$ZERO;
TEMP = TEMP*EXPONENT; # CALCULATE CHECKMARK VALUE #
INTVALUE = TEMP + INTVALUE;
EXPONENT = EXPONENT*10;
END
RETURN; # RETURN TO CALLER #
END # END OF PROC NP$8TIN #
TERM
*ENDIF