home *** CD-ROM | disk | FTP | other *** search
- '***********************************************************************
- ' StdArray.rlz
- '
- ' Standard Array Function Library
- '
- ' Copyright ⌐ 1991-1992 Computer Associates International, Inc.
- ' All rights reserved.
- '
- '***********************************************************************
-
- IF QVar(%%StdArray, _Defined) THEN
- EXIT MACRO
- END IF
- %%StdArray = 1
-
- RUN "StdError"
-
- '*** Dim(rsNumElems [, gsValue])
-
- FUNC Dim(rsNumElems, ..)
- LOCAL i, v, retval
-
- ECType(rsNumElems, _Real + _Scalar, 1)
- ECRange(rsNumElems, 1, 8192, 1)
- ECProto(QNOptParams, 1, "Dim(rsNumElems [, gsValue])")
- IF QNOptParams THEN
- ECType(QOptParam(1), _Scalar, 2)
- v = QOptParam(1)
- retval[1:rsNumElems] = v
- RETURN retval
- ELSE
- retval[1:rsNumElems] = 0
- RETURN retval
- END IF
- END FUNC
-
-
- '*** FirstMatch(gvArray, gsMatch, rsStart, rsEnd)
-
- EXTERNAL "standard.exe" FUNC FirstNonZero(POINTER, INTEGER, INTEGER, INTEGER) AS INTEGER
- EXTERNAL "standard.exe" FUNC FirstRealMatch(POINTER, REAL, INTEGER, INTEGER, INTEGER) AS INTEGER
-
- FUNC FirstMatch(gvArray, gsMatch, ..)
- LOCAL shift, size, retval
-
- ECType(gvArray, _Array, 1)
- ECType(gsMatch, _Scalar, 2)
- ECProto(QNOptParams, 2, "FirstMatch(gvArray, gsMatch [, rsStart [, rsEnd]])")
- shift = StartValid(gvArray) - 1
- size = EndValid(gvArray) - StartValid(gvArray) + 1
- IF QVar(gsMatch, _Real) THEN
- ECType(gvArray, _Real, 1)
- IF shift THEN
- SELECT CASE QNoptParams
- CASE 0
- retval = FirstRealMatch(gvArray[+shift], gsMatch, size, 1, size)
- CASE 1
- ECType(QOptParam(1), _Real + _Scalar, 3)
- retval = FirstRealMatch(gvArray[+shift], gsMatch, size, QOptParam(1)-shift, size)
- CASE 2
- ECType(QOptParam(1), _Real + _Scalar, 3)
- ECType(QOptParam(2), _Real + _Scalar, 4)
- retval = FirstRealMatch(gvArray[+shift], gsMatch, size, QOptParam(1)-shift, QOptParam(2)-shift)
- END SELECT
- ELSE
- SELECT CASE QNoptParams
- CASE 0
- retval = FirstRealMatch(gvArray, gsMatch, size, 1, size)
- CASE 1
- ECType(QOptParam(1), _Real + _Scalar, 3)
- retval = FirstRealMatch(gvArray, gsMatch, size, QOptParam(1), size)
- CASE 2
- ECType(QOptParam(1), _Real + _Scalar, 3)
- ECType(QOptParam(2), _Real + _Scalar, 4)
- retval = FirstRealMatch(gvArray, gsMatch, size, QOptParam(1), QOptParam(2))
- END SELECT
- END IF
- ELSE
- IF QVar(gsMatch, _DateTime) THEN
- ECType(gvArray, _DateTime, 1)
- ELSE
- ECType(gvArray, _Alpha, 1)
- END IF
- IF shift THEN
- SELECT CASE QNoptParams
- CASE 0
- retval = FirstNonZero(gvArray[+shift] = gsMatch, size, 1, size)
- CASE 1
- ECType(QOptParam(1), _Real + _Scalar, 3)
- retval = FirstNonZero(gvArray[+shift] = gsMatch, size, QOptParam(1)-shift, size)
- CASE 2
- ECType(QOptParam(1), _Real + _Scalar, 3)
- ECType(QOptParam(2), _Real + _Scalar, 4)
- retval = FirstNonZero(gvArray[+shift] = gsMatch, size, QOptParam(1)-shift, QOptParam(2)-shift)
- END SELECT
- ELSE
- SELECT CASE QNoptParams
- CASE 0
- retval = FirstNonZero(gvArray = gsMatch, size, 1, size)
- CASE 1
- ECType(QOptParam(1), _Real + _Scalar, 3)
- retval = FirstNonZero(gvArray = gsMatch, size, QOptParam(1), size)
- CASE 2
- ECType(QOptParam(1), _Real + _Scalar, 3)
- ECType(QOptParam(2), _Real + _Scalar, 4)
- retval = FirstNonZero(gvArray = gsMatch, size, QOptParam(1), QOptParam(2))
- END SELECT
- END IF
- END IF
-
- IF retval THEN
- RETURN retval + shift
- ELSE
- RETURN 0
- END IF
- END FUNC
-
-