home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 3 Comm
/
03-Comm.zip
/
navgcp.cmd
< prev
next >
Wrap
OS/2 REXX Batch file
|
1996-07-22
|
4KB
|
128 lines
/* NAVGCP.CMD by William J. Hinkle [75300,2050] */
/* This Rexx script translates NavCIS address books to GCP USERID.CIS */
/* Just run it from an OS/2 command line or a desktop program object */
uppert = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
lowert = "abcdefghijklmnopqrstuvwxyz"
SIGNAL ON HALT
gcpok = ""
DO UNTIL gcpok = "READY:"
IF gcpok <> "" THEN SAY gcpaddr "could not be found!"
SAY "Please enter the drive:directory to the Golden CommPass addressbook USERID.CIS."
SAY "Just [Enter] for C:\GCP\ or [Ctrl+C][Enter] to quit: ";
PARSE PULL gcppath
gcppath = STRIP(gcppath,"B")
IF gcppath = "" THEN
gcppath = "C:\GCP\"
ELSE DO
IF RIGHT(gcppath,1) <> "\" AND RIGHT(gcppath,1) <> ":" THEN DO
gcppath = gcppath || "\"
END
END
gcpaddr = gcppath || "USERID.CIS"
IF STREAM(gcpaddr,"C","QUERY EXISTS") <> "" THEN DO
SAY "Did you already save" gcpaddr "just in case...? [Y/N][Enter]:"
PARSE UPPER PULL strdat
IF strdat <> "Y" THEN DO
SAY "You'd better do that right now, and try this again later!"
EXIT
END
END
gcpok = STREAM(gcpaddr,"C","OPEN WRITE")
END
navok = ""
DO UNTIL navok = "READY:"
IF navok <> "" THEN SAY navaddr "could not be found!"
SAY "Please enter the drive:directory to the NavCIS addressbook ADDRESS.DBF."
SAY "Just [Enter] for C:\NAVCIS\DATA\ or [Ctrl+C][Enter] to quit: ";
PARSE PULL navpath
navpath = STRIP(navpath,"B")
IF navpath = "" THEN
navpath = "C:\NAVCIS\DATA\"
ELSE DO
IF RIGHT(navpath,1) <> "\" AND RIGHT(navpath,1) <> ":" THEN DO
navpath = navpath || "\"
END
END
navaddr = navpath || "ADDRESS.DBF"
navok = STREAM(navaddr,"C","OPEN READ")
END
IF BITAND(navok,gcpok) = "READY:" THEN DO
/* The first 4 bytes means something... but what? */
/*
strdat = CHARIN(navaddr,1,4)
*/
/* get record count */
slen = REVERSE(CHARIN(navaddr,5,4))
nnames = C2D(slen,4)
SAY "There are" nnames "names:"
/* get position of 1st record */
slen = REVERSE(CHARIN(navaddr,9,2))
navpos = C2D(slen,2) + 1
/* get size of each record */
slen = REVERSE(CHARIN(navaddr,11,2))
navsize = C2D(slen,2)
IF navsize <> 189 THEN SAY "This doesn't appear to be a NavCIS address book!"
ELSE DO nnames
delflag = CHARIN(navaddr,navpos,1)
navpos = navpos + 1
/* skip the 20-character "key" */
navpos = navpos + 20
/* get the CIS ID or other address */
ppntxt = STRIP(CHARIN(navaddr,navpos,60),"B")
navpos = navpos + 60
/* add a > prefix, if needed */
IF DATATYPE(LEFT(ppntxt,1),"M") THEN ppntxt = ">" || ppntxt
/* get the name */
strdat = STRIP(CHARIN(navaddr,navpos,40),"B")
/* un-comment this to reverse "last, first" to "first last" if req'd */
/*
endsurname = POS(",", strdat)
IF endsurname > 0 THEN DO
strdat = SUBSTR(strdat,endsurname+1) || ,
" " || ,
SUBSTR(strdat,1,endsurname-1)
END
*/
navpos = navpos + 40
/* concatenate name and user ID */
IF strdat <> "" THEN nametxt = strdat ppntxt
ELSE nametxt = ppntxt
/* get notes */
strdat = STRIP(CHARIN(navaddr,navpos,60),"B")
IF strdat <> "" THEN DO
/* un-comment this to change case of comments */
/*
strdat = OVERLAY(TRANSLATE(SUBSTR(strdat,2),lowert,uppert),strdat,2)
*/
nametxt = nametxt '|' strdat
END
navpos = navpos + 60
/* get 8-byte index number */
ncnt = STRIP(CHARIN(navaddr,navpos,8),"B")
navpos = navpos + 8
SAY "#" ncnt "=" nametxt
IF LINEOUT(gcpaddr,nametxt) <> 0 THEN DO
SAY "Gagged writing to" gcpaddr "!"
LEAVE
END
END
END
IF navok <> "READY:" THEN SAY "Couldn't find the NavCIS address book file!"
ELSE CALL STREAM navaddr,"C","CLOSE"
IF gcpok <> "READY:" THEN SAY "Couldn't find the GCP address book file!"
ELSE CALL STREAM gcpaddr,"C","CLOSE"
EXIT
HALT:
EXIT