ASMB
      NAM SA2DE,7 24306-60001 REV.2026 791206 
* 
* 
******************************************************************* 
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS RESERVED.
* NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, REPRODUCED, OR
* TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR WRITTEN
* CONSENT OF HEWLETT-PACKARD COMPANY. 
******************************************************************* 
* 
* 
*     SOURCE:    24306-18005
*     RELOC:     24306-60001
* 
* 
* 
******************************************************************
* 
* 
* 
* 
* 
*FUNCTION - CONVERTS A FIELD FROM A2 FORMAT,
*TWO CHARACTERS PER WORD, TO DECIMAL FORMAT,
*RIGHT JUSTIFIED, TWO DIGITS PER WORD.
* 
*CALLING SEQUENCE - CALL SA2DE(JSTR,J,JLAST,NER)
*WHERE JSTR NAMES THE ONE-DIMENSIONAL STRING INTEGER ARRAY
*THAT IS TO BE CONVERTED. 
*JBEG IS AN INTEGER CONSTANT, INTEGER VARIABLE, OR
*INTEGER EXPRESSION DEFINING THE FIRST CHARACTER
*POSITION IN JSTR TO BE CONVERTED.
*JEND IS AN INTEGER CONSTANT, INTEGER VARIABLE, OR
*INTEGER EXPRESSION DEFINING THE LAST CHARACTER IN JSTR 
*TO BE CONVERTED. 
*NER IS AN INTEGER VARIABLE ERROR INDICATOR.  IT IS SET 
*IF AN INVALID CHARACTER IS FOUND.
* 
      ENT SA2DE 
      EXT .ENTR,SZONE,SGET,SPUT 
PARAM BSS 4 
SA2DE NOP 
      JSB .ENTR     TRANSFER PARAMETERS 
      DEF PARAM 
      JSB SZONE     JSIGN=2 IF NEGATIVE 
      DEF *+5 
      DEF PARAM,I 
      DEF PARAM+2,I 
      DEF FOUR
      DEF JSIGN 
      LDA PARAM+1,I 
      STA JNOW      JNOW=J
ONE   JSB SGET      GET NEXT CHAR 
      DEF *+4 
      DEF PARAM,I 
      DEF JNOW
      DEF JTEST 
      LDA JTEST 
      CPA BLANK     JTEST=ASCII BLANK?
      JMP ZER       IF SO 
      ADA LIMLO     IS JTEST VALID NUMBER?
      SSA 
      JMP ERR 
      LDA JTEST 
      ADA LIMHI 
      SSA 
      JMP VERT
ERR   LDA JNOW
      STA PARAM+3,I JTEST INVALID#,NER=JNOW 
      JMP CHECK 
ZER   LDA ZERO      JTEST=ASCII ZERO
      STA JTEST 
VERT  LDA JTEST     CONVERT TO DECIMAL
      AND DMASK 
      STA JTEST 
      JSB SPUT      PUT DECIMAL 
      DEF *+4 
      DEF PARAM,I 
      DEF JNOW
      DEF JTEST 
CHECK LDA PARAM+2,I IS JNOW<JLAST?
      CMA,INA 
      ADA JNOW
      SSA,RSS 
      JMP FIN       IF NOT
      ISZ JNOW      JNOW=JNOW+1 
      JMP ONE 
FIN   LDA JSIGN     IS JSIGN=2?(NEG.) 
      CPA TWO 
      JMP *+2 
      JMP SA2DE,I   IF NOT,RETURN 
      JSB SGET      GET JSTR(JLAST) 
      DEF *+4 
      DEF PARAM,I 
      DEF PARAM+2,I 
      DEF JTEST 
      LDA JTEST     JSTR(JLAST)=-JSTR(JLAST)-1
      CMA 
      STA JTEST 
      JSB SPUT      PUT JSTR(JLAST) 
      DEF *+4 
      DEF PARAM,I 
      DEF PARAM+2,I 
      DEF JTEST 
      JMP SA2DE,I   RETURN
JSIGN BSS 1 
JNOW  BSS 1 
JTEST BSS 1 
TWO   OCT 2 
FOUR  OCT 4 
BLANK OCT 40
LIMLO OCT -60 
LIMHI OCT -72 
ZERO  OCT 60
DMASK OCT 17
      END 
      END$
                                                                                      