* * $Id: getarg.s,v 1.1.1.1 1996/02/15 17:54:44 mclareni Exp $ * * $Log: getarg.s,v $ * Revision 1.1.1.1 1996/02/15 17:54:44 mclareni * Kernlib * * GETARG CSECT * * CERN PROGLIB# Z264 GETARG .VERSION KERNIBX 1.01 900524 * ORIG. March 90, Roger Howard, Vancouver * * SUBROUTINE GETARG(N,ARG) * Return character string ARG: Nth command line argument * USING *,15 ENTRY _getarg_ _getarg_ STM 2,8,16(13) Save registers L 3,0(,3) GR3: length of arg2 = ARG LR 2,1 GR2: ADDRESS OF ARG2 = ARG FILL MVI 0(2),C' ' Fill next byte with blank LA 2,1(,2) Advance to next byte BCT 3,FILL Repeat for length of ARG LR 2,13 GR2: caller's stack frame L 3,4(,2) GR3: previous stack frame AGAIN L 4,4(,3) pointer in previous stack frame LTR 4,4 Check for end of chain BC 8,FOUND LR 2,3 Move up chain LR 3,4 BC 15,AGAIN FOUND L 5,76(,2) GR5: main entry value of GR1 LR 6,0 L 6,0(,6) value of arg1 = N SLL 6,2 4*N L 7,0(6,5) address of Nth ARG LR 8,7 copy starting address NEXT CLI 0(7),X'00' Is byte a hex zero? BC 8,RETURN LA 7,1(,7) Address of next byte BC 15,NEXT RETURN SR 7,8 Byte count minus 1 BC 12,EXIT Exit on count less than 1 BCTR 7,0 Remove trailing hex 0 EX 7,COPY Copy string EXIT LM 2,8,16(13) BCR 15,14 COPY MVC 0(0,1),0(8) END