DECLARE SUB code (ninput AS STRING, noutput AS STRING, idist%) DECLARE SUB decode (ninput AS STRING, noutput AS STRING, idist%) '****************************************************************************** '* This demo program encodes a text file by the letter * '* transposing method * '* -------------------------------------------------------------------------- * '* SAMPLE RUN: * '* File test.pas contains: * '* * '* Program Relativistic_Mass; * '* * '* Uses WinCrt1; * '* * '* Var * '* * '* rest_mass, rela_mass, { kg } * '* voltage, { volt } * '* speed, { m/s } * '* e, { electron charge in coulomb } * '* c: double; { speed of light in m/s } * '* * '* Begin * '* * '* e:=1.602e-19; c:=2.9979e8; rest_mass:=9.109e-31; * '* * '* writeln; * '* write(' Give electron gun voltage in volts: '); * '* * '* readln(voltage); * '* * '* rela_mass := (voltage*e + rest_mass*c*c) / (c*c); * '* * '* speed := c*sqrt(1.0 - Sqr(rest_mass/rela_mass)); * '* * '* writeln; * '* writeln(' Relativistic mass (kg) and speed (m/s):'); * '* writeln(' ', rela_mass, ' ', speed); * '* writeln; * '* * '* ReadKey; * '* DoneWinCrt * '* * '* End. * '* * '* TRANSPOSITION CIPHER * '* Give name of input text file: test.pas * '* Give name of output text file: test.txt * '* Give flag (e) to encode (d) decode: e * '* Give transposition distance: 40 * '* * '* File test.txt now contains: * '* ***** '* P o r m R l t;vssMic_taisi a e a g r * '* * '* U e i C t ; 1 r n W s s * '* * '* V r a * '* * '* }rgs _ a s e asmas_,l r , s m{tke * '* } tvol a e , g{tvol * '* s/e d ,{emps } * '*o h r e i o l}mb o u c n g a c n r cel { e,e t * '*o i h n m s } / i t g l f ecp o b e ; l u{ds:e d * '* * '* B g n i e * '* * '*9 1 9 - 1 ; 3 e 0 . = sea=_.s0re;1e;7c9=2.:9 998- 2e6t1m:s : * '* * '* w i e n ; l t r * '*o t : ' ; ) s l v nw iget'oG vu loctrenegeniv l(ateri * '* * '* r a l ( o t g ) ; e a l v n d e * '* * '*c c c ; ) * ( / ) * *rslm_taes : *vgltaoe(e=+ rssm_aaes c * '* * '*l _ a s ) ; ) s m a e /ssemdt:e (*qq t 1.0(-rSsrcr=s _eaps r * '* * '* w i e n ; l t r * '*p e m s : ) ; ' ) / ( d e s dwai)ekn 'sRmlcttvisiia ea s((lgt rn * '* ;wdieesn,' ' seaa_mlsr,,' '( lpter) * '* w i e n ; l t r * '* * '* R a K y ; e d e * '* D n W n r t C i e o * '* * '* E d . n * '* ***** '* TRANSPOSITION CIPHER * '* Give name of input text file: test.txt * '* Give name of output text file: test1.pas * '* Give flag (e) to encode (d) decode: d * '* Give transposition distance: 40 * '* * '* File test1.pas now contains: same text as test.pas. * '* * '* -------------------------------------------------------------------------- * '* Reference: "Advanced Turbo C By Herbert Schildt, Borland-Osborne/ * '* McGraw-Hill, 1987." * '* * '* Basic Release By J-P Moreau, Paris. * '* (www.jpmoreau.fr) * '****************************************************************************** 'Program Encode DEFINT I-N ' integer idist user-specified transposition distance DIM ninput AS STRING 'name of input text file (to encode/decode DIM noutput AS STRING 'name of output text file (to encode/decode DIM flag AS STRING '(e)ncode or (d)ecode CLS PRINT PRINT " TRANSPOSITION CIPHER" PRINT INPUT " Give name of input text file: ", ninput PRINT INPUT " Give name of output text file: ", noutput PRINT INPUT " Give flag (e) to encode (d) decode: ", flag IF LEFT$(flag, 1) <> "e" AND LEFT$(flag, 1) <> "d" THEN PRINT PRINT " Usage (example): toto.in toto.out e" PRINT END 'exit program END IF PRINT INPUT " Give transposition distance: ", idist PRINT IF LEFT$(flag, 1) = "e" THEN code ninput, noutput, idist ELSE decode ninput, noutput, idist END IF PRINT " Program terminated." PRINT END 'of main program 'end of file encode.bas SUB code (ninput AS STRING, noutput AS STRING, idist) ' integer idone (boolean) DIM temp AS STRING DIM t AS INTEGER DIM s AS STRING 'one text line OPEN ninput FOR INPUT AS #1 OPEN noutput FOR OUTPUT AS #2 idone = 0 'False WHILE idone = 0 LINE INPUT #1, s For i=1 to 2*idist s = s + " " Next i IF EOF(1) = -1 THEN GOTO 10 GOTO 15 10 idone = 1 'True 15 t = 1 WHILE t <= idist temp = MID$(s, t, 1) ' s(t:t)=s(t+dist:t+dist) s = LEFT$(s, t - 1) + MID$(s, t + idist, 1) + RIGHT$(s, LEN(s) - t) ' s(t+dist:t+dist)=temp s = LEFT$(s, t + idist - 1) + temp + RIGHT$(s, LEN(s) - t - idist) t = t + 1 temp = MID$(s, t, 1) ' s(t:t)=s(dist*2-t:dist*2-t) s = LEFT$(s, t - 1) + MID$(s, idist * 2 - t, 1) + RIGHT$(s, LEN(s) - t) ' s(dist*2-t:dist*2-t)=temp s = LEFT$(s, idist * 2 - t - 1) + temp + RIGHT$(s, LEN(s) + t - idist * 2) t = t + 1 WEND PRINT #2, s WEND CLOSE #1 CLOSE #2 END SUB 'code SUB decode (ninput AS STRING, noutput AS STRING, idist) ' integer idone (boolean) DIM temp AS STRING DIM t AS INTEGER DIM s AS STRING 'one text line OPEN ninput FOR INPUT AS #1 OPEN noutput FOR OUTPUT AS #2 idone = 0 'False WHILE idone = 0 LINE INPUT #1, s IF EOF(1) = -1 THEN GOTO 11 l = LEN(s) GOTO 16 11 idone = 1 'True 16 t = 1 WHILE t <= idist t = t + 1 temp = MID$(s, t, 1) ' s(t:t)=s(dist*2-t:dist*2-t) s = LEFT$(s, t - 1) + MID$(s, idist * 2 - t, 1) + RIGHT$(s, LEN(s) - t) ' s(dist*2-t:dist*2-t)=temp s = LEFT$(s, idist * 2 - t - 1) + temp + RIGHT$(s, LEN(s) + t - idist * 2) t = t - 1 temp = MID$(s, t, 1) ' s(t:t)=s(t+dist:t+dist) s = LEFT$(s, t - 1) + MID$(s, t + idist, 1) + RIGHT$(s, LEN(s) - t) ' s(t+dist:t+dist)=temp s = LEFT$(s, t + idist - 1) + temp + RIGHT$(s, LEN(s) - t - idist) t = t + 2 WEND PRINT #2, s WEND CLOSE #1 CLOSE #2 END SUB 'decode