home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / NETGET.LZH / NetGet.CMD next >
OS/2 REXX Batch file  |  1992-07-26  |  7KB  |  187 lines

  1. /*
  2.                  NETGET REXX v1.0 by John Mastwijk of 1:134/65
  3.        Based on Jeff Galbraith's (1:134/21) excellent DOS utility GETNET
  4.  
  5.   NetGet will extract a given net from a St. Louis format nodelist and format
  6.    it nicely (or not if you prefer :-).  Its useful for creating a "BBS LIST"
  7.                      type bulletin for your bulletin board.
  8.  
  9.     Modify and/or butcher to your hearts content. There aren't any comments
  10.        in the REXX and its really messy, but its fairly self-explanatory.
  11.  
  12.         If you make any nifty modifications, please send me the update!
  13. */
  14. ARG Zone Net A B
  15. IF Net = '' THEN
  16.   DO
  17.     CALL LINEOUT StdErr,"NETGET REXX v1.0 by John Mastwijk of 1:134/65 (FidoNet) & 40:649/1015 (ibmNET)"
  18.     CALL LINEOUT StdErr," - Based on Jeff Galbraith's excellent DOS (cough, hack :-) program GETNET"
  19.     CALL LINEOUT StdErr,""
  20.     CALL LINEOUT StdErr,"Usage:  NETGET [zone] [net] [/Llistname] [/F] [/X]"
  21.     CALL LINEOUT StdErr,""
  22.     CALL LINEOUT StdErr,"        ZONE and NET numbers are required.  Eg.  NETGET 1 134"
  23.     CALL LINEOUT StdErr,""
  24.     CALL LINEOUT StdErr,"   /L - Optional.  If supplied, "listname" is used.  Path is optional but"
  25.     CALL LINEOUT StdErr,"        extension IS required.  If this parameter is omitted, the most"
  26.     CALL LINEOUT StdErr,"        current FidoNet nodelist in the current directory is assumed."
  27.     CALL LINEOUT StdErr,"        Eg. NETGET 40 649 /Ld:\nodelist\ibmlist.196 /X"
  28.     CALL LINEOUT StdErr,""
  29.     CALL LINEOUT StdErr,"   /F - Optional.  If supplied, the output is formatted.  HOST, HUB, DOWN,"
  30.     CALL LINEOUT StdErr,"        PVT, and MO nodes ARE included and they are indicated as such in"
  31.     CALL LINEOUT StdErr,"        the output.  Eg. NETGET 1 134 /F"
  32.     CALL LINEOUT StdErr,""
  33.     CALL LINEOUT StdErr,"   /X - Optional.  If supplied, the output is formatted BUT HOST, HUB, DOWN,"
  34.     CALL LINEOUT StdErr,"        PVT, and MO nodes are NOT included.  Eg. NETGET 1 134 /X"
  35.     CALL LINEOUT StdErr,""
  36.     CALL LINEOUT StdErr,"   If neither /F nor /X are supplied, output is in RAW nodelist format."
  37.     CALL LINEOUT StdErr,"   Output can be re-directed.  Eg. NETGET 1 134 /X >D:\BULLETIN\NET134.LST"
  38.   END
  39. ELSE
  40.   DO
  41.     IF (DATATYPE(Zone) <> "NUM") | (DATATYPE(Net) <> "NUM") THEN
  42.       DO
  43.         CALL LINEOUT StdErr,"Error:  Invalid ZONE and/or NODE"
  44.         EXIT
  45.       END
  46.     IF LEFT(A,2) = "/L" THEN
  47.       File = SUBSTR(A,3)
  48.     ELSE
  49.       IF LEFT(B,2) = "/L" THEN
  50.         File = SUBSTR(B,3)
  51.       ELSE
  52.         DO
  53.           W = LEFT(DATE('W'),2)
  54.           D = DATE('D')
  55.           SELECT
  56.             WHEN W = "Sa" THEN
  57.               D = D - 1
  58.             WHEN W = "Su" THEN
  59.               D = D - 2
  60.             WHEN W = "Mo" THEN
  61.               D = D - 3
  62.             WHEN W = "Tu" THEN
  63.               D = D - 4
  64.             WHEN W = "We" THEN
  65.               D = D - 5
  66.             WHEN W = "Th" THEN
  67.               D = D - 6
  68.             OTHERWISE
  69.               NOP
  70.           END
  71.           File = 'NODELIST.'RIGHT(D,3,'0')
  72.         END
  73.     IF LINES(File) = 0 THEN
  74.       DO
  75.         CALL LINEOUT StdErr, "Error: " File "not found"
  76.         EXIT
  77.       END
  78.     Other = ''
  79.     IF (LEFT(A,2) = "/F") | (LEFT(B,2) = "/F") THEN
  80.       Other = 'F'
  81.     IF (LEFT(A,2) = "/X") | (LEFT(B,2) = "/X") THEN
  82.       Other = 'X'
  83.  
  84.     /* Find ZONE */
  85.     Line = LINEIN(File)
  86.     DO WHILE LINES(File)
  87.       IF LEFT(Line,5 + LENGTH(Zone)) = "Zone,"Zone THEN
  88.         LEAVE
  89.       Line = LINEIN(File)
  90.     END
  91.  
  92.     IF SUBSTR(Line,6,LENGTH(Zone)) <> Zone THEN
  93.       DO
  94.         CALL LINEOUT StdErr, "Error:  Zone" Zone "not found in" File
  95.         EXIT
  96.       END
  97.  
  98.     /* Find NET */
  99.     Line = LINEIN(File)
  100.     DO WHILE LINES(File)
  101.       IF LEFT(Line,5 + LENGTH(Net)) = "Host,"Net THEN
  102.         LEAVE
  103.       IF LEFT(Line,5) = "Zone," THEN
  104.         LEAVE
  105.       Line = LINEIN(File)
  106.     END
  107.  
  108.     IF SUBSTR(Line,6,LENGTH(Net)) <> Net THEN
  109.       DO
  110.         CALL LINEOUT StdErr, "Error:  Net" Net "not found in Zone" Zone
  111.         EXIT
  112.       END
  113.  
  114.     IF Other <> '' THEN
  115.       DO
  116.         SAY CENTRE("--= Net" Net "of" FILESPEC("N", File) "on" DATE('N') "=--", 79)
  117.         IF Other = 'F' THEN
  118.           SAY "            H = Host, B = Hub, D = Down, P = Private, M = Mail only"
  119.         ELSE
  120.           SAY ""
  121.         SAY " NODE   BBS NAME             AREA     SYSOP                PHONE         BAUD"
  122.         SAY " ============================================================================="
  123.       END
  124.  
  125.     CALL Output
  126.     Line = LINEIN(File)
  127.     DO UNTIL (LEFT(Line,1) = ';') | (\LINES(File))
  128.       CALL Output
  129.       Line = LINEIN(File)
  130.     END
  131.   END
  132. EXIT
  133.  
  134. Output : PROCEDURE EXPOSE Line Other
  135.   IF Other = '' THEN
  136.     SAY Line
  137.   ELSE
  138.     DO
  139.       IF ((LEFT(Line,1) <> ',') | (LASTPOS(",MO",Line) <> 0)) & (Other = 'X') THEN
  140.         NOP
  141.       ELSE
  142.         DO
  143.           Desg = LEFT(Line, POS(',',Line) - 1)
  144.           Temp = RIGHT(Line, LENGTH(Line) - POS(',',Line))
  145.           IF Desg = "Host" THEN
  146.             Node = '0'
  147.           ELSE
  148.             Node = LEFT(Temp, POS(',',Temp) - 1)
  149.           Temp = TRANSLATE(RIGHT(Temp, LENGTH(Temp) - POS(',',Temp)),' ','_')
  150.           Name = LEFT(Temp, POS(',',Temp) - 1)
  151.           Temp = RIGHT(Temp, LENGTH(Temp) - POS(',',Temp))
  152.           City = LEFT(Temp, POS(',',Temp) - 1)
  153.           Temp = RIGHT(Temp, LENGTH(Temp) - POS(',',Temp))
  154.           Sysp = LEFT(Temp, POS(',',Temp) - 1)
  155.           Temp = RIGHT(Temp, LENGTH(Temp) - POS(',',Temp))
  156.           Phne = LEFT(Temp, POS(',',Temp) - 1)
  157.           Phne = RIGHT(Phne, LENGTH(Phne) - POS('-',Phne))
  158.           Temp = RIGHT(Temp, LENGTH(Temp) - POS(',',Temp))
  159.           Baud = LEFT(Temp, POS(',',Temp) - 1)
  160.  
  161.           SELECT
  162.             WHEN LASTPOS(",MO",Line) <> 0 THEN
  163.               Flag = 'M'
  164.             WHEN Desg = "Host" THEN
  165.               Flag = 'H'
  166.             WHEN Desg = "Hub" THEN
  167.               Flag = 'B'
  168.             WHEN Desg = "Pvt" THEN
  169.               DO
  170.                 Flag = 'P'
  171.                 Phne = "-- PRIVATE --"  /* Max. 12 characters */
  172.               END
  173.             WHEN Desg = "Down" THEN
  174.               DO
  175.                 Flag = 'D'
  176.                 Phne = "--- DOWN ---"  /*  Max. 12 characters */
  177.               END
  178.             OTHERWISE
  179.               Flag = ' '
  180.           END
  181.  
  182.           SAY " "RIGHT(Node,4)" "Flag" "LEFT(Name,19)"  "LEFT(City,7)" ",
  183.                LEFT(Sysp,20)" "LEFT(Phne,12)"  "LEFT(Baud,4)
  184.         END
  185.     END
  186. RETURN
  187.