Path: utzoo!utgpu!water!watmath!clyde!bellcore!faline!thumper!ulysses!mhuxo!mhuxt!mhuxi!mhuxh!mhuxu!att!ihnp4!cbmvax!daveh From: daveh@cbmvax.UUCP (Dave Haynie) Newsgroups: comp.sys.amiga.tech Subject: Re: ARexx Questions Message-ID: <4131@cbmvax.UUCP> Date: 29 Jun 88 00:02:16 GMT References: <2119@cadovax.UUCP> Organization: Commodore Technology, West Chester, PA Lines: 69 in article <2119@cadovax.UUCP>, kaz@cadovax.UUCP (Kerry Zimmerman) says: > Keywords: ARexx > After reading so many glowing words about ARexx here on the net... > Why would I want to write a script in ARexx instead of using a CLI script > or a Shell script (using Matt's Shell)? I don't recall the examples on the ARexx disk offhand. But there are lots of things you can't do easily, or possibly at all, using the CLI script language, or probably Matt's shell language (tough I haven't used it myself). One of the features I like the most about the ARexx language is that it supports recursive subroutines, like any REAL computer language. Consider, for a moment, this problem. I've got gobs of stuff on my hard disk, all kinds of directories filled with Usenet downloads. I like to transfer whole directories over to floppy disks. I waste lots of time if I try to transfer a directory and find out that it won't fit on the space remaining on a floppy. So I want a function that'll tell me the size, in blocks, of a directory tree. Here's an ARexx solution, written in about 10 minutes. -----Cut Here----- /* Sizeblk.rexx Shows recursive function. -Dave Haynie */ parse arg dir . blocks = countblock(dir) say 'Total of' blocks 'blocks in directory' '9b'x'3m'dir'9b'x'0m' exit countblock : procedure arg dir blocks = 0 files = showdir(dir,'file') dirs = showdir(dir,'dir') call pragma 'Directory',dir do while files ~= '' parse var files oner . files = delword(files,1,1) blocks = blocks + subword(statef(oner),3,1) + 1 end do while dirs ~= '' parse var dirs oner . dirs = delword(dirs,1,1) blocks = blocks + countblock(oner) + 1 end call pragma 'Directory','/' return blocks -----Cut Here----- > No advantage is gained using ARexx over the CLI or Shell to communicate > with DOS that I know of. I'd be interested in seeing this done with CLI Scripts. You could certainly write a C program to do this, but it would be longer, and it would probably take more than 10 minutes to write. I guess it would be faster, too, but this is just an example. > Kerry Zimmerman > # {ucbvax,decvax}!trwrb!cadovax!kaz Contel Business Systems 213-323-8170 > A difference between an amateur and a professional, > is that a professional has the right tools. -- Dave Haynie "The 32 Bit Guy" Commodore-Amiga "The Crew That Never Rests" {ihnp4|uunet|rutgers}!cbmvax!daveh PLINK: D-DAVE H BIX: hazy "I can't relax, 'cause I'm a Boinger!"