home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / navgcp.cmd < prev    next >
OS/2 REXX Batch file  |  1996-07-22  |  4KB  |  128 lines

  1. /* NAVGCP.CMD by William J. Hinkle [75300,2050] */
  2. /* This Rexx script translates NavCIS address books to GCP USERID.CIS */
  3. /* Just run it from an OS/2 command line or a desktop program object */
  4. uppert = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  5. lowert = "abcdefghijklmnopqrstuvwxyz"
  6. SIGNAL ON HALT
  7.  
  8. gcpok = ""
  9. DO UNTIL gcpok = "READY:"
  10.     IF gcpok <> "" THEN SAY gcpaddr "could not be found!"
  11.     SAY "Please enter the drive:directory to the Golden CommPass addressbook USERID.CIS."
  12.     SAY "Just [Enter] for C:\GCP\ or [Ctrl+C][Enter] to quit: ";
  13.     PARSE PULL gcppath
  14.     gcppath = STRIP(gcppath,"B")
  15.     IF gcppath = "" THEN
  16.         gcppath = "C:\GCP\"
  17.     ELSE DO
  18.         IF RIGHT(gcppath,1) <> "\" AND RIGHT(gcppath,1) <> ":" THEN DO
  19.             gcppath = gcppath || "\"
  20.         END
  21.     END
  22.     gcpaddr = gcppath || "USERID.CIS"
  23.     IF STREAM(gcpaddr,"C","QUERY EXISTS") <> "" THEN DO
  24.         SAY "Did you already save" gcpaddr "just in case...? [Y/N][Enter]:"
  25.         PARSE UPPER PULL strdat
  26.         IF strdat <> "Y" THEN DO
  27.             SAY "You'd better do that right now, and try this again later!"
  28.             EXIT
  29.         END
  30.     END
  31.     gcpok = STREAM(gcpaddr,"C","OPEN WRITE")
  32. END
  33.  
  34. navok = ""
  35. DO UNTIL navok = "READY:"
  36.     IF navok <> "" THEN SAY navaddr "could not be found!"
  37.     SAY "Please enter the drive:directory to the NavCIS addressbook ADDRESS.DBF."
  38.     SAY "Just [Enter] for C:\NAVCIS\DATA\ or [Ctrl+C][Enter] to quit: ";
  39.     PARSE PULL navpath
  40.     navpath = STRIP(navpath,"B")
  41.     IF navpath = "" THEN
  42.         navpath = "C:\NAVCIS\DATA\"
  43.     ELSE DO
  44.         IF RIGHT(navpath,1) <> "\" AND RIGHT(navpath,1) <> ":" THEN DO
  45.             navpath = navpath || "\"
  46.         END
  47.     END
  48.     navaddr = navpath || "ADDRESS.DBF"
  49.     navok = STREAM(navaddr,"C","OPEN READ")
  50. END
  51.  
  52. IF BITAND(navok,gcpok) = "READY:" THEN DO
  53.     /* The first 4 bytes means something... but what? */
  54.     /*
  55.     strdat = CHARIN(navaddr,1,4)
  56.     */
  57.     /* get record count */
  58.     slen = REVERSE(CHARIN(navaddr,5,4))
  59.     nnames = C2D(slen,4)
  60.     SAY "There are" nnames "names:"
  61.     /* get position of 1st record */
  62.     slen = REVERSE(CHARIN(navaddr,9,2))
  63.     navpos = C2D(slen,2) + 1
  64.     /* get size of each record */
  65.     slen = REVERSE(CHARIN(navaddr,11,2))
  66.     navsize = C2D(slen,2)
  67.     IF navsize <> 189 THEN SAY "This doesn't appear to be a NavCIS address book!"
  68.     ELSE DO nnames
  69.         delflag = CHARIN(navaddr,navpos,1)
  70.         navpos = navpos + 1
  71.  
  72.         /* skip the 20-character "key" */
  73.         navpos = navpos + 20
  74.  
  75.         /* get the CIS ID or other address */
  76.         ppntxt = STRIP(CHARIN(navaddr,navpos,60),"B")
  77.         navpos = navpos + 60
  78.         /* add a > prefix, if needed */
  79.         IF DATATYPE(LEFT(ppntxt,1),"M") THEN ppntxt =  ">" || ppntxt
  80.  
  81.         /* get the name */
  82.         strdat = STRIP(CHARIN(navaddr,navpos,40),"B")
  83.         /* un-comment this to reverse "last, first" to "first last" if req'd */
  84.      /*
  85.         endsurname = POS(",", strdat)
  86.         IF endsurname > 0 THEN DO
  87.             strdat = SUBSTR(strdat,endsurname+1) || ,
  88.                      " " || ,
  89.                      SUBSTR(strdat,1,endsurname-1)
  90.         END
  91.      */
  92.         navpos = navpos + 40
  93.  
  94.         /* concatenate name and user ID */
  95.         IF strdat <> "" THEN nametxt = strdat ppntxt
  96.         ELSE nametxt = ppntxt
  97.  
  98.         /* get notes */
  99.         strdat = STRIP(CHARIN(navaddr,navpos,60),"B")
  100.         IF strdat <> "" THEN DO
  101.             /* un-comment this to change case of comments */
  102.             /*
  103.             strdat = OVERLAY(TRANSLATE(SUBSTR(strdat,2),lowert,uppert),strdat,2)
  104.             */
  105.             nametxt = nametxt '|' strdat
  106.         END
  107.         navpos = navpos + 60
  108.  
  109.         /* get 8-byte index number */
  110.         ncnt = STRIP(CHARIN(navaddr,navpos,8),"B")
  111.         navpos = navpos + 8
  112.  
  113.         SAY "#" ncnt "=" nametxt
  114.         IF LINEOUT(gcpaddr,nametxt) <> 0 THEN DO
  115.             SAY "Gagged writing to" gcpaddr "!"
  116.             LEAVE
  117.         END
  118.     END
  119. END
  120. IF navok <> "READY:" THEN SAY "Couldn't find the NavCIS address book file!"
  121. ELSE CALL STREAM navaddr,"C","CLOSE"
  122. IF gcpok <> "READY:" THEN SAY "Couldn't find the GCP address book file!"
  123. ELSE CALL STREAM gcpaddr,"C","CLOSE"
  124. EXIT
  125.  
  126. HALT:
  127. EXIT
  128.