home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rexxwps.zip / wps_qcls.cmd < prev    next >
OS/2 REXX Batch file  |  1995-10-07  |  2KB  |  55 lines

  1. /* Program name:  WPS_QCLS.CMD  Title: Figure 4              */
  2. /* REXX Report              Issue: Summer '95, page 42-51    */
  3. /* Article title: The Workplace Shell: Objects to the Core   */
  4. /* Author: Rony G. Flatscher                                 */
  5. /* Description: utilizing REXX to communicate with the       */
  6. /*              Workplace Shell                              */
  7. /* Program requirements: OS/2 Warp                           */
  8. /*                                                           */
  9.  
  10.  
  11. /* WPS_QCLS.CMD: query and display installed WPS object classes     */
  12.  
  13. /* load OS/2's RexxUtil functions, if not loaded already            */
  14. IF RxFuncQuery('SysLoadFuncs') THEN
  15. DO
  16.     CALL RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  17.     CALL SysLoadFuncs
  18. END
  19.  
  20. CALL SysQueryClassList "ObjCls."   /* get a list of object classes  */
  21. CALL sort                          /* sort in alphabetic order      */
  22.  
  23. SAY "The following WPS object classes are installed:"
  24. DO i = 1 TO ObjCls.0
  25.    PARSE VAR ObjCls.i classname classDLL
  26.    SAY RIGHT(i, 4) LEFT(classname" ", 35, ".") classDLL
  27. END
  28. EXIT
  29.  
  30. /* one of Knuth's algorithms; sort object classes in stem ObjCls.   */
  31. SORT: PROCEDURE EXPOSE ObjCls.
  32.    M = 1                           /* define M for passes           */
  33.    DO WHILE (9 * M + 4) < ObjCls.0
  34.       M = M * 3 + 1
  35.    END
  36.  
  37.    DO WHILE M > 0                  /* sort stem                     */
  38.       K = ObjCls.0 - M
  39.       DO J = 1 TO K
  40.          Q = J
  41.          DO WHILE Q > 0
  42.             L = Q + M
  43.             /* make comparisons case-independent                    */
  44.             IF TRANSLATE(ObjCls.Q) <<= TRANSLATE(ObjCls.L) THEN
  45.                LEAVE
  46.             tmp      = ObjCls.Q    /* switch elements               */
  47.             ObjCls.Q = ObjCls.L
  48.             ObjCls.L = tmp
  49.             Q = Q - M
  50.          END
  51.       END
  52.       M = M % 3
  53.    END
  54.    RETURN
  55.