home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / vrac / 4archiv3.zip / 4ARJ.BTM (.txt) next >
4DOS Compressed Batch-To-Memory File  |  1994-06-08  |  46KB  |  806 lines

  1. @Echo off
  2.    setdos /i+log^log off^setdos /v0^setlocal^ unalias *^unset /q ARJ_SW^if not isdir %Temp set Temp=%_Boot:
  3.    alias check `if "%1" eq "" goto Mainscreen`^Alias # `scrput`^alias snd `beep 300 2^beep 500 2^beep 700 1^beep 900 2`
  4.    if exist %@path[%@search[4arj.btm]]\descript.ion describe %@search[4arj.btm] "4DOS archiver for R.Jung ARJ.EXE" >& nul
  5.    iff %1 eq /? then^cls^gosub Info^cancel^elseiff %1 eq /H then^4dos //BrightBg=Yes /c %@search[4arjhelp.com]^cls^cancel^endiff
  6.    iff %@len[%1] ne 0 .and. "%1" ne "/P" then^beep^cls^ screen 00 01 %@upper[%0] does not accept these parameters^gosub Info^cancel^endiff
  7.  
  8. :Errorcheck
  9.   :**************************************************************************
  10.   :* Check for correct 4DOS-version, correct program-name, if KSTACK.COM is *
  11.   :* loaded and if ARJ.EXE is available and can be located through the path.*
  12.   :**************************************************************************
  13.  
  14.    iff "%_4Ver" lt "5" then^cls^beep 1000 09^screen 01 01 This program requires 4DOS 5.00 or higher, on this system 4DOS %_4Ver
  15.    screen 02 01 is installed. Please contact J.P. Software for an upgrade version^cancel^endiff
  16.  
  17.    iff not exist %@search[arj.exe] then^cls^beep 1000 09^screen 01 01 Program ARJ.EXE is needed for %@upper[%0] but cannot be located
  18.    screen 02 01 Place ARJ.EXE in your PATH and restart^cancel^endiff
  19.  
  20.    iff %@name[%0] ne 4ARJ then^cls^beep 1000 09
  21.    screen 01 01 %@upper[%@filename[%0]] is not the original name of this program,
  22.    screen 02 01 please rename %@upper[%@filename[%0]] back into 4ARJ and restart^cancel^endiff
  23.  
  24.    iff %_kstack eq 0 then^cls^beep 1000 09^screen 01 01 Program KSTACK.COM is needed for 4ARJ.BTM is not loaded
  25.    screen 02 01 Load KSTACK.COM in memory and re-run 4ARJ.BTM^cancel^endiff
  26.  
  27. :Load
  28.    :**********************************************************************
  29.    :* Check for the /P switch and decide if a secundairy-shell is needed *
  30.    :**********************************************************************
  31.  
  32.    if "%1" eq "/P" goto CFG_Check
  33.    4dos.com //BrightBg=Yes //EnvFree=800 //NormalKey=F1 //4StartPath=%Temp /C %0 /P^cancel
  34.  
  35. :CFG_Check
  36.    :***********************************************************************
  37.    :* Load default input-values, look for the 4ARJ configurationfile and  *
  38.    :* load it, if it does not exist load the default configuration-values *
  39.    :***********************************************************************
  40.  
  41.    set Archivepath=%@upper[%[_cwds]*.*]^set Targetpath=%@upper[%[_cwds]archive.arj]
  42.    if %@len[%Archivepath] gt 38 set Archivepath=%_Boot:\*.*^if %@len[%Targetpath] gt 38 set Targetpath=%_Boot:\ARCHIVE.ARJ
  43.    set Sourcepath=%@upper[%[_cwds]archive.arj]^set Extractpath=%@upper[%[_cwd]]
  44.    if %@len[%Sourcepath] gt 38 set Sourcepath=%_Boot:\ARCHIVE.ARJ^if %@len[%Extractpath] gt 37 set Extractpath=%_Boot:\
  45.    set Convertpath=%_Boot:\*.*^set Origcolor=%_fg on %_bg border %_bg^set Message=`Wrong inputvalues or combination of values is not allowed !`
  46.  
  47.    iff exist %@search[4arj.cfg] then^pushd %@path[%@search[4arj.cfg]]
  48.    copy 4arj.cfg 4arjtmp.btm >& nul^call %@search[4arjtmp.btm]^del 4arjtmp.btm >& nul
  49.    popd^goto Mainscreen^endiff
  50.  
  51.    set Method=D^set Attribute=N^set Indicator=Y^set Arjdate=N
  52.    set Query=N ^set Workdir=N^set Filespec=N ^set Exe=D^set Ansi=N
  53.    goto Mainscreen
  54.  
  55. :CFG_Create
  56.    :**********************************************************************
  57.    :* Create a new CFG-file, also check the PATH if the new created file *
  58.    :* can be re-located and delete it if not. This subroutine should not *
  59.    :* be used if 4DOS batch-compresser BATCOMP.EXE isn't available.      *
  60.    :**********************************************************************
  61.  
  62.    set Message=`Busy saving configuration in %@upper[%Cfgpath] ....`^gosub Messagebox^snd
  63.    if exist %@search[4arj.cfg] del /q %@search[4arj.cfg]^if exist %@search[4arjtmp.*] del /q %@search[4arjtmp.*]
  64.    if exist %@path[%Cfgpath]\4arjtmp.* del /q %@path[%Cfgpath]\4arjtmp.*
  65.  
  66.    echo set Method=%Method       >>! %@path[%Cfgpath]\4arjtmp.bat
  67.    echo set Arjdate=%Arjdate     >>! %@path[%Cfgpath]\4arjtmp.bat
  68.    echo set Attribute=%Attribute >>! %@path[%Cfgpath]\4arjtmp.bat
  69.    echo set Indicator=%Indicator >>! %@path[%Cfgpath]\4arjtmp.bat
  70.    echo set Query=%Query         >>! %@path[%Cfgpath]\4arjtmp.bat
  71.    echo set Workdir=%Workdir     >>! %@path[%Cfgpath]\4arjtmp.bat
  72.    echo set Filespec=%Filespec   >>! %@path[%Cfgpath]\4arjtmp.bat
  73.    echo set Exe=%Exe             >>! %@path[%Cfgpath]\4arjtmp.bat
  74.    echo set Ansi=%Ansi           >>! %@path[%Cfgpath]\4arjtmp.bat
  75.  
  76.    pushd %@path[%Cfgpath]^batcomp /o 4arjtmp.bat >& nul^copy 4arjtmp.btm 4arj.cfg >& nul
  77.    if exist descript.ion describe 4arj.cfg "Configuration for 4DOS archiver 4ARJ.BTM"
  78.    del 4arjtmp.* >& nul^popd^pushd %Temp
  79.    iff not exist %@search[4arj.cfg] then^set Error=Y^del %Cfgpath >& nul^endiff^popd^return
  80.  
  81. :Errors
  82.    if errorlevel eq 1 echo Warning: Some files could not be found
  83.    if errorlevel eq 2 echo Warning: Fatal error occured
  84.    if errorlevel eq 3 echo Warning: Header- or File CRC error(s) occured
  85.    if errorlevel eq 5 echo Warning: Disk is full or write error occured
  86.    if errorlevel eq 6 echo Warning: Some file's could not be opened
  87.    if errorlevel eq 8 echo Warning: Error because out of memory
  88.    if errorlevel eq 9 echo Warning: Not an ARJ file
  89.    return
  90.  
  91. :Info
  92.    screen 09 00
  93.    # 02 01 %_Fg on %_Bg Syntax:  %@upper[%@name[%0]] [/P] [/H] [/?]
  94.    # 04 10 %_Fg on %_Bg /P = Skip test for brightcolor and environmentsize
  95.    # 05 15 %_Fg on %_Bg and do not load a secundary shell
  96.    # 06 10 %_Fg on %_Bg /H = Starts the 4ARJHELP.COM program if available
  97.    # 07 10 %_Fg on %_Bg /? = This helpscreen
  98.    return
  99.  
  100. :Mainhelp
  101.    # 03 21 blu on bri blu %@repeat[%@char[255],52]^# 04 21 blu on bri blu %@repeat[%@char[255],52]
  102.    # 05 21 blu on bri blu %@repeat[%@char[255],52]^drawbox 03 10 05 72 02 bla on bri yel shadow
  103.    # 04 11 blu on bri yel %@repeat[%@char[255],61]^# 04 12 blu on bri yel Give menu-option on which you would like some help ...
  104.    screen 04 67^inkey /c /p /k"123456[Esc]" %%Mainchoice^if "%Mainchoice" eq "" (gosub Topscreen^goto Mainchoices)
  105.    iff "%Mainchoice" eq "1" then^set Message=`Use this option to ADD, MOVE & UPDATE files in an archive !`^gosub Messagebox^goto Mainchoices^endiff
  106.    iff "%Mainchoice" eq "2" then^set Message=`Use this option to extract files from an existing archive !`^gosub Messagebox^goto Mainchoices^endiff
  107.    iff "%Mainchoice" eq "3" then^set Message=`Use this option to internal SORT files within ARJ-archive !`^gosub Messagebox^goto Mainchoices^endiff
  108.    iff "%Mainchoice" eq "4" then^set Message=`View, test or convert to a EXE-file existing ARJ-archives !`^gosub Messagebox^goto Mainchoices^endiff
  109.    iff "%Mainchoice" eq "5" then^set Message=`Use this option to change the default configurationsettings`^gosub Messagebox^goto Mainchoices^endiff
  110.    iff "%Mainchoice" eq "6" then^set Message=`Use this option to quit with 4DOS-archiver 4ARJ version 3.1`^gosub Messagebox^goto Mainchoices^endiff
  111.  
  112. :Help
  113.    do Line = 03 to 05
  114.      # %Line 21 blu on bri blu %@repeat[%@char[255],52]
  115.    enddo
  116.    drawbox 02 10 05 72 02 bla on bri yel shadow
  117.    # 03 11 blu on bri yel %@repeat[%@char[255],61]^# 04 11 blu on bri yel %@repeat[%@char[255],61]
  118.    # 03 12 blu on bri yel %Line1^# 04 12 blu on bri yel %Line2^Pause >& nul^gosub Topscreen^return
  119.  
  120. :Floppy
  121.    drawbox 03 21 05 58 02 bla on bri yel shadow^# 04 22 blu on bri yel %@repeat[%@char[255],36]
  122.    # 04 23 blu on bri yel Load disk in drive %@upper[%_Floppy] and hit a key^pause >& nul
  123.    iff %@ready[%_Floppy] ne 1 then^goto Floppy^else^gosub Topscreen^endiff^return
  124.  
  125. :Messagebox
  126.    beep
  127.    do Line = 03 to 05
  128.     # %Line 21 blu on bri blu %@repeat[%@char[255],52]
  129.    enddo
  130.    drawbox 03 10 05 72 02 bla on bri yel shadow
  131.    # 04 11 blu on bri yel %@repeat[%@char[255],61]
  132.    # 04 12 blu on bri yel %Message^delay 3^set Message=`Wrong inputvalues or combination of values is not allowed !`
  133.    gosub Topscreen^return
  134.  
  135. :Stop
  136.    cls blu on blu border bla^drawbox 08 16 10 64 2 bla on bri red shadow zoom
  137.    # 09 17 bri yel on bri red ` Thanks for trying 4DOS archive utility 4ARJ ! `^snd
  138.    drawbox 14 16 19 64 1 bla on bri whi fill whi shadow^keystack !
  139.    do Line = 15 to 18
  140.      # %Line 17 blu on bri whi %@repeat[%@char[255],47]
  141.    enddo
  142.    # 15 17 blu on bri whi ` Unregistered evaluation-copy:                 `^delay^keystack !^beep 300 4^keystack !
  143.    # 16 17 blu on bri whi ` ──── Register now and fill in the orderform! `^delay^keystack !^beep 300 4^keystack !
  144.    # 17 17 blu on bri whi ` ──── Print out ORDER.FRM for order 4ARJ.BTM! `^delay^keystack !^beep 300 4^keystack !
  145.    # 18 17 blu on bri whi ` ──── Free upgrades and support by mail       `^delay^keystack !^beep 300 4^keystack !
  146.    # 23 16 bri whi on blu `Hit a key to return to DOS . . .               `^keystack !^Pause >& nul^keystack !
  147.    cls %Origcolor^setdos /s15:100^cancel
  148.  
  149. :Background1
  150.    do Line = 0 to 6
  151.     # %Line 0 Bla on Bri Blu %@repeat[%@char[176],81]
  152.    enddo
  153.    return
  154.  
  155. :Background2
  156.    do Line = 7 to 24
  157.     # %Line 0 Bla on Bri Blu %@repeat[%@char[176],81]
  158.    enddo
  159.    return
  160.  
  161. :Topscreen
  162.    gosub Background1^drawbox 03 21 05 58 02 bla on bri red fill red sha zoo
  163.    # 04 22 blu on bri red ` 4DOS archiver for ARJ version 3.10 `^return
  164. :Mainscreen
  165.    setdos /s0:0^cls bla on bla border bla^gosub Topscreen^gosub Background2
  166.    on Break goto Mainscreen^if %_Ansi eq 1 color bla on bri red^unset /q Jump
  167.    drawbox 08 21 22 58 02 bla on bri red shadow
  168.    do Line = 09 to 21
  169.     # %Line 22 bri yel on bri red %@repeat[%@char[255],36]
  170.    enddo
  171.    # 09 27 bla on bri red `******* Main menu *******`
  172.    # 11 27 bri yel on bri red `1 - Archive files`
  173.    # 12 27 bri yel on bri red `2 - Extract files`
  174.    # 13 27 bri yel on bri red `3 - Sorting files`
  175.    # 14 27 bri yel on bri red `4 - Maintainance ARJ-archives`
  176.    # 15 27 bri yel on bri red `5 - Setup configuration`
  177.    # 16 27 bri yel on bri red `6 - Exit`
  178.    # 19 31 bla on bri red `F1 = General Help`
  179.    if exist %@search[4arjhelp.com] # 20 31 bla on bri red `F7 = Main Help`
  180. :Mainchoices
  181.    setdos /s0:0^inkey /c /p /k"123456[F1][ESC][F7]" %%Mainchoice
  182.    if "%Mainchoice" eq "@59" (setdos /s15:100^goto Mainhelp)
  183.    if "%Mainchoice" eq "1" (setdos /s15:100^goto Screen1)
  184.    if "%Mainchoice" eq "2" (setdos /s15:100^goto Screen2)
  185.    if "%Mainchoice" eq "3" (setdos /s15:100^goto Screen3)
  186.    if "%Mainchoice" eq "4" (setdos /s15:100^goto Screen4)
  187.    if "%Mainchoice" eq "5" (setdos /s15:100^goto Screen5)
  188.    if "%Mainchoice" eq "6" (setdos /s15:100^goto Stop)
  189.    iff "%Mainchoice" eq "@65" .and. exist %@search[4arjhelp.com] then^%@search[4arjhelp.com]^goto Mainscreen^else^goto Stop^endiff
  190. :Screen1
  191.    cls bla on bla border bla^gosub Topscreen^gosub Background2^if %_Ansi eq 1 color bla on bri red
  192.    drawbox 08 09 22 73 02 bla on bri red shadow^# 22 12 blu on bri red ` Ctrl-Break = Mainscreen `
  193.    do Line = 09 to 21
  194.     # %Line 10 bri yel on bri red %@repeat[%@char[255],63]
  195.    enddo
  196.    # 08 21 bla on bri red ` Create an archived ARJ file from disk(s) `
  197.    # 10 13 bri yel on bri red `Path & name file(s) :`
  198.    # 11 13 bri yel on bri red `Path & name ARJ-file:`
  199.    # 12 13 bri yel on bri red `Use 4dos select-command ?   (Y/N):`
  200.    # 13 13 bri yel on bri red `Create a SFX (.EXE) file    (Y/N):`
  201.    # 14 13 bri yel on bri red `Recurse subdirectories      (Y/N):`
  202.    # 15 13 bri yel on bri red `Add, move or update files (A/M/U):`
  203.    # 16 13 bri yel on bri red `Enable Multiple Volumes     (Y/N):`
  204.    # 17 13 bri yel on bri red `Store full path in archive  (Y/N):`
  205.    # 18 13 bri yel on bri red `Test CRC after archiving    (Y/N):`
  206.    # 19 13 bri yel on bri red `Give if needed optional password :`
  207.    # 20 13 bri yel on bri red `Start with Archiving    (Y/N/A/Q):`
  208.  
  209. :Line1A
  210.    # 22 58 bla on bri red %@repeat[%@char[205],11]^screen 10 35^input /c /E /L38 %%Archivepath
  211.    iff %@removable[%@instr[0,2,%Archivepath]] eq 1 .and. %@ready[%@instr[0,2,%Archivepath]] ne 1 then^set _Floppy=%@instr[0,2,%Archivepath]^gosub Floppy^endiff
  212.    iff "%Archivepath" eq ""  then^set Archivepath=%@upper[%[_cwds]*.*]^# 10 35 bla on bri red %Archivepath
  213.    elseiff not isdir %@path[%Archivepath] then^set Message=`Path %@upper[%@path[%Archivepath]] does not exist, please correct path !`
  214.    gosub Messagebox^goto Line1A^endiff^# 10 35 bla on bri red %Archivepath
  215. :Line2A
  216.    screen 11 35^input /c /E /L38 %%Targetpath
  217.    iff %@removable[%@instr[0,2,%Targetpath]] eq 1 .and. %@ready[%@instr[0,2,%Targetpath]] ne 1 then^set _Floppy=%@instr[0,2,%Targetpath]^gosub Floppy^endiff
  218.    iff "%Targetpath" eq ""  then^set Targetpath=%@upper[%[_cwds]archive.arj]^# 11 35 bla on bri red %Targetpath
  219.    elseiff not isdir %@path[%Targetpath] then^set Message=`Path %@upper[%@path[%Targetpath]] does not exist, please correct path !`
  220.    gosub Messagebox^goto Line2A^endiff
  221.    iff "%@instr[0,-1,%Targetpath]" eq "\" then^set Message=`You must complete this path with a valid archive-name`
  222.    gosub Messagebox^goto Line2A^endiff^# 11 35 bla on bri red %Targetpath
  223. :Line3A
  224.    # 22 58 bri yel on bri red ` F1 = Help `^# 12 48 bla on bri red N
  225.    screen 12 48^inkey /c %%Select^check %Select^iff "%Select" eq "@72" then^# 12 48 bla on bri red `   `
  226.    # 11 35 bla on bri red %@repeat[%@char[255],38]^goto Line1A^endiff
  227.    iff "%Select" eq "@28" .or. "%Select" eq "N" .or. "%Select" eq "@80" then^set Select=N^# 12 48 bla on bri red No^goto Line4A^endiff
  228.    iff "%Select" eq "Y" then^# 12 48 bla on bri red Yes^goto Line4A^elseiff "%Select" eq "@59" then
  229.    set Line1=`You can use a "point & shoot" select screen for selecting  `^set Line2=`the files to be archived. Hit a key to continue...         `
  230.    gosub Help^goto Line3A^else^gosub Messagebox^goto Line3A^endiff
  231. :Line4A
  232.    iff "%@instr[2,-3,%Targetpath]" eq "exe" then^# 13 48 bla on bri red Yes^set Sfx=Y^goto Line5A^endiff
  233.    # 13 48 bla on bri red N^screen 13 48^set Jump=Y^inkey /c %%Sfx^check %Sfx
  234.    iff "%Sfx" eq "@72" then^# 13 48 bla on bri red `   `^# 12 48 bla on bri red `   `
  235.    goto Line3A^endiff
  236.    iff "%Sfx" eq "@28" .or. "%Sfx" eq "@80" .or. "%Sfx" eq "N" then^set Sfx=N^# 13 48 bla on bri red No^goto Line5A^endiff
  237.    iff "%Sfx" eq "Y" then^# 13 48 bla on bri red Yes^goto Line5A^elseiff "%Sfx" eq "@59" then
  238.    set Line1=`You can make an archive self-extractable, e.g. the archive `^set Line2=`will be a stand-alone .EXE file ! Hit a key to continue ...`
  239.    gosub Help^goto Line4A^else^gosub Messagebox^goto Line4A^endiff
  240. :Line5A
  241.    iff %Select eq Y then^# 14 48 bla on bri red N^unset /q Jump^set Subdir=N^goto Line6A^endiff
  242.    # 14 48 bla on bri red N^screen 14 48^inkey /c %%Subdir^check %Subdir
  243.    iff "%Subdir" eq "@72" .and. "%Jump" eq "Y" then^# 14 48 bla on bri red `   `^# 13 48 bla on bri red `   `
  244.    unset Jump^goto Line4A^elseiff "%Subdir" eq "@72" .and. "%Jump" eq "" then^# 14 48 bla on bri red `   `
  245.    # 13 48 bla on bri red `   `^# 12 48 bla on bri red `   `^goto Line3A^endiff
  246.    iff "%Subdir" eq "@28" .or. "%Subdir" eq "N" .or. "%Subdir" eq "@80" then^unset /q Jump^set Subdir=N
  247.    # 14 48 bla on bri red No^goto Line6A^endiff
  248.    iff "%Subdir" eq "Y" then^# 14 48 bla on bri red Yes^goto Line6A^elseiff "%Subdir" eq "@59" then
  249.    set Line1=`Selecting this option causes files within subdirectories of`^set Line2=`the chosen path to be included !  Hit a key to continue ...`
  250.    gosub Help^goto Line5A^else^gosub Messagebox^goto Line5A^endiff
  251. :Line6A
  252.    # 15 48 bla on bri red A^screen 15 48^inkey /c %%Command^check %Command
  253.    iff "%Command" eq "@72" .and. %Select eq Y .and. "%@instr[2,-3,%Targetpath]" ne "exe" then^# 15 48 bla on bri red `    `
  254.    # 14 48 bla on bri red `   `^# 13 48 bla on bri red `   `^goto Line4A^endiff
  255.    iff "%Command" eq "@72" .and. %Select eq Y .and. "%@instr[2,-3,%Targetpath]" eq "exe" then^# 15 48 bla on bri red `    `
  256.    # 14 48 bla on bri red `   `^# 13 48 bla on bri red `   `^# 12 48 bla on bri red `   `^goto Line3A
  257.    elseiff "%Command" eq "@72" .and. %Select eq N then^# 15 48 bla on bri red `   `^# 14 48 bla on bri red `   `^goto Line5A^endiff
  258.    iff "%Command" eq "@28" .or. "%Command" eq "@80" .or. "%Command" eq "A" then^set Command=A^# 15 48 bla on bri red Add^goto Line7A^endiff
  259.    iff "%Command" eq "M" then^# 15 48 bla on bri red Move^goto Line7A^elseiff "%Command" eq "U" .and. not exist %Targetpath then
  260.    set Message=`Targetfile %@upper[%@filename[%Targetpath]] does not exist, UPDATE is not allowed`^gosub Messagebox^goto Line6A^endiff
  261.    iff "%Command" eq "U" then^# 15 48 bla on bri red Update^goto Line7A^elseiff "%Command" eq "@59" then
  262.    set Line1=`Choose ADD to create/update. MOVE to copy/delete files and `^set Line2=`UPATE to freshen files. Hit a key to continue.             `
  263.    gosub Help^goto Line6A^else^gosub Messagebox^goto Line6A^endiff
  264. :Line7A
  265.    iff %@removable[%@instr[0,2,%Targetpath]] eq 1 .and. "%Sfx" eq "Y" then^# 16 48 bla on bri red No^set Volumes=N^unset /q Jump^goto Line8A^endiff
  266.    iff %@removable[%@instr[0,2,%Targetpath]] ne 1 then^# 16 48 bla on bri red No^set Volumes=N^unset /q Jump^goto Line8A^endiff
  267.    # 16 48 bla on bri red N^screen 16 48^set Jump=Y^inkey /c %%Volumes^check %Volumes
  268.    iff "%Volumes" eq "@72" then^# 16 48 bla on bri red `   `^# 15 48 bla on bri red `    `^unset /q Jump^goto Line6A^elseiff "%Volumes" eq "@80" then^set Volumes=N^endiff
  269.    iff "%Volumes" eq "@28" .or. "%Volumes" eq "N" then^set Volumes=N^# 16 48 bla on bri red No^goto Line8A^endiff
  270.    iff "%Volumes" eq "Y" then^# 16 48 bla on bri red Yes^goto Line8A^elseiff "%Volumes" eq "@59" then
  271.    set Line1=`This option is to create & split an archive into multiple  `^set Line2=`floppy-disks(for backup purposes) Hit a key to continue ...`
  272.    gosub Help^goto Line7A^else^gosub Messagebox^goto Line7A^endiff
  273. :Line8A
  274.    # 17 48 bla on bri red N^screen 17 48^inkey /c %%Store^check %Store
  275.    iff "%Store" eq "@72" .and. "%Jump" eq "Y" then^# 17 48 bla on bri red `   `^# 16 48 bla on bri red `   `^goto Line7A
  276.    elseiff "%Store" eq "@72" .and. "%Jump" eq "" then^# 17 48 bla on bri red `   `^# 16 48 bla on bri red `   `
  277.    # 15 48 bla on bri red `    `^goto Line6A^endiff^iff "%Store" eq "@28" .or. "%Store" eq "N" .or. "%Store" eq "@80" then^set Store=N
  278.    unset /q Jump^# 17 48 bla on bri red No^goto Line9A^endiff^iff "%Store" eq "Y" then^# 17 48 bla on bri red Yes^goto Line9A^elseiff "%Store" eq "@59" then
  279.    set Line1=`You can store the whole path within an archive, so that is `^set Line2=`possible to restore the same path. Hit a key to continue...`
  280.    gosub Help^goto Line8A^else^gosub Messagebox^goto Line8A^endiff
  281. :Line9A
  282.    # 18 48 bla on bri red Y^screen 18 48^inkey /c %%Test^check %Test
  283.    iff "%Test" eq "@72" then^# 18 48 bla on bri red `   `^# 17 48 bla on bri red `    `^goto Line8A^endiff
  284.    iff "%Test" eq "@80" .or. "%Test" eq "@28" .or. "%Test" eq "Y" then^set Test=Y^# 18 48 bla on bri red Yes^goto Line10A^endiff
  285.    iff "%Test" eq "N" then^# 18 48 bla on bri red No^goto Line10A^elseiff "%Test" eq "@59" then
  286.    set Line1=`This causes 4ZIP to do test on CRC during archiving, this  `^set Line2=`is not possible if you use multiple volumes. Hit a key.... `
  287.    gosub Help^goto Line9A^else^gosub Messagebox^goto Line9A^endiff
  288. :Line10A
  289.    # 22 58 bla on bri red %@repeat[%@char[205],11]^screen 19 48^unset /q Psd^input /c /L17 /P %%Psd
  290.    iff "%Psd" eq "" then^# 19 48 bla on bri red ` [No password] `^else^# 19 48 bla on bri red ` [Password hidden] `^endiff
  291. :Line11A
  292.    # 22 58 bri yel on bri red ` F1 = Help `^# 20 48 bla on bri red Y^screen 20 48^inkey /c %%Start^check %Start
  293.    iff "%Start" eq "@72" then^# 20 48 bla on bri red `   `^# 19 48 bla on bri red %@repeat[%@char[255],24]
  294.    # 18 48 bla on bri red `   `^ goto Line9A^endiff
  295.    iff "%Start" eq "@28" .or. "%Start" eq "Y" then^set Start=Y^goto Archive^elseiff "%Start" eq "A" then^goto Archive^endiff
  296.    iff "%Start" eq "N" then^# 20 48 bla on bri red No^goto Screen1^elseiff "%Start" eq "Q" then^goto Mainscreen^endiff
  297.    iff "%Start" eq "@59" then^set Line1=`YES or ALWAYS(no prompting) starts the program. QUIT to get`
  298.    set Line2=`back to mainscreen. NO to re-enter. Hit a key to continue..`^gosub Help^goto Line11A^else^gosub Messagebox^goto Line11A^endiff
  299.  
  300. :Screen2
  301.    cls bla on bla border bla^gosub Topscreen^gosub Background2^set Extractfile=\*.*^if %_Ansi eq 1 color bla on bri red
  302.    drawbox 08 09 20 73 02 bla on bri red shadow^# 20 12 blu on bri red ` Ctrl-Break = Mainscreen `
  303.    do Line = 09 to 19
  304.     # %Line 10 bri yel on bri red %@repeat[%@char[255],63]
  305.    enddo
  306.    # 08 20 bla on bri red ` Extracting an archived ARJ file to disk `
  307.    # 10 12 bri yel on bri red `Path & name ARJ-file :`
  308.    # 11 12 bri yel on bri red `Path target directory:`
  309.    # 12 12 bri yel on bri red `Extract specified directory/file   :`
  310.    # 13 12 bri yel on bri red `Extract with full path        (Y/N):`
  311.    # 14 12 bri yel on bri red `Extract from multiple volumes (Y/N):`
  312.    # 15 12 bri yel on bri red `Test CRC while extracting     (Y/N):`
  313.    # 16 12 bri yel on bri red `Give if required optional password :`
  314.    # 18 12 bri yel on bri red `Start with extracting     (Y/N/A/Q):`
  315.  
  316. :Line1B
  317.    # 20 58 bla on bri red %@repeat[%@char[205],11]
  318.    screen 10 35^input /c /E /L38 %%Sourcepath
  319.    iff %@removable[%@instr[0,2,%Sourcepath]] eq 1 .and. %@ready[%@instr[0,2,%Sourcepath]] ne 1 then^set _Floppy=%@instr[0,2,%Sourcepath]^gosub Floppy^endiff
  320.    iff not isdir %@path[%Sourcepath] then^set Message=`Path %@upper[%@path[%Sourcepath]] does not exist, please correct path !`
  321.    gosub Messagebox^goto Line1B^endiff
  322.    iff not exist %Sourcepath then^set Message=`File %@upper[%@filename[%Sourcepath]] does not exist, please correct name !`
  323.    gosub Messagebox^goto Line1B^endiff^# 10 35 bla on bri red %Sourcepath
  324. :Line2B
  325.    screen 11 35^input /c /E /L37 %%Extractpath
  326.    iff %@removable[%@instr[0,2,%Extractpath]] eq 1 .and. %@ready[%@instr[0,2,%Extractpath]] ne 1 then^set _Floppy=%@instr[0,2,%Extractpath]^gosub Floppy^endiff
  327.    iff "%Extractpath" eq ""  then^set Extractpath=%_Boot:\^# 11 35 bla on bri red %Extractpath^endiff
  328.    iff %@instr[%@len[%Extractpath],1,"%Extractpath"] ne \ then^set Extractpath=%Extractpath\^endiff
  329.    iff not isdir %@path[%Extractpath] then^set Message=`Path %@upper[%@path[%Extractpath]] does not exist, please correct path !`
  330.    gosub Messagebox^goto Line2B^endiff^# 11 35 bla on bri red %Extractpath
  331.    # 11 35 bla on bri red %Extractpath
  332. :Line3B
  333.    screen 12 49^input /c /L12 /E %%Extractfile
  334.    iff "%Extractfile" eq "" then^set Extractfile=\*.*^endiff^# 12 49 bla on bri red %Extractfile
  335. :Line4B
  336.    # 20 58 bri yel on bri red ` F1 = Help `
  337.    # 13 49 bla on bri red N^screen 13 49^inkey /c %%Subdir^check %Subdir
  338.    iff "%Subdir" eq "@72" then^# 13 49 bla on bri red `   `^# 12 49 bla on bri red %@repeat[%@char[255],14]
  339.    # 11 35 bla on bri red %@repeat[%@char[255],38]^goto Line1B^elseiff "%Subdir" eq "@80" then^set Subdir=N^endiff
  340.    iff "%Subdir" eq "@28" .or. "%Subdir" eq "N" then^set Subdir=N^# 13 49 bla on bri red No^goto Line5B^endiff
  341.    iff "%Subdir" eq "Y" then^# 13 49 bla on bri red Yes^goto Line5B^elseiff "%Subdir" eq "@59" then
  342.    set Line1=`If the path was stored during archive, you can rebuild it  `^set Line2=`starting from the choosen directory. Hit a key to continue.`
  343.    gosub Help^goto Line4B^else^gosub Messagebox^goto Line4B^endiff
  344. :Line5B
  345.    iff %@removable[%@instr[0,2,%Sourcepath]] ne 1 then^# 14 49 bla on bri red No^set Volumes=N^goto Line6B^endiff
  346.    iff %@removable[%@instr[0,2,%Sourcepath]] eq 1 .and. %@ext[%Sourcepath] eq exe then^# 14 49 bla on bri red No^set Volumes=N^goto Line6B^endiff
  347.    # 14 49 bla on bri red N^screen 14 49^set Jump=Y^inkey /c %%Volumes^check %Volumes
  348.    iff "%Volumes" eq "@72" then^# 14 49 bla on bri red `   `^# 13 49 bla on bri red `   `^ unset /q Jump^goto Line4B^elseiff "%Volumes" eq "@80" then^set Volumes=N^unset /q Jump^endiff
  349.    iff "%Volumes" eq "@28" .or. "%Volumes" eq "N" then^set Volumes=N^# 14 49 bla on bri red No^goto Line6B^endiff
  350.    iff "%Volumes" eq "Y" then^# 14 49 bla on bri red Yes^goto Line6B^elseiff "%Volumes" eq "@59" then
  351.    set Line1=`If your archive-file is split on multiple floppy-disks you `^set Line2=`must choose this option to rebuild. Hit a key to continue. `
  352.    gosub Help^goto Line5B^else^gosub Messagebox^goto Line5B^endiff
  353. :Line6B
  354.    # 15 49 bla on bri red Y^screen 15 49^inkey /c %%Test^check %Test
  355.    iff "%Test" eq "@72" .and. "%Jump" eq "Y" then^# 15 49 bla on bri red `   `^# 14 49 bla on bri red `   `^goto Line5B
  356.    elseiff "%Test" eq "@72" .and. "%Jump" eq "" then^# 15 49 bla on bri red `   `^# 14 49 bla on bri red `   `
  357.    # 13 49 bla on bri red `    `^goto Line4B^endiff^if "%Test" eq "@80" set Test=Y
  358.    iff "%Test" eq "@28" .or. "%Test" eq "Y" then^set Test=Y^# 15 49 bla on bri red Yes^goto Line7B^endiff
  359.    iff "%Test" eq "N" then^# 15 49 bla on bri red No^goto Line7B^elseiff "%Test" eq "@59" then
  360.    set Line1=`To be sure you unpack the ARJ-archive properly, set this   `^set Line2=`option to YES for checking the CRC. Hit a key to continue. `
  361.    gosub Help^goto Line6B^else^gosub Messagebox^goto Line6B^endiff
  362. :Line7B
  363.    # 20 58 bla on bri red %@repeat[%@char[205],11]^screen 16 49^unset /q Psd^input /c /L17 /P %%Psd
  364.    iff "%Psd" eq "" then^# 16 49 bla on bri red ` [No password] `^else^# 16 49 bla on bri red ` [Password hidden] `^endiff
  365. :Line8B
  366.    # 20 58 bri yel on bri red ` F1 = Help `
  367.    # 18 49 bla on bri red Y^screen 18 49^inkey /c %%Start^check %Start
  368.    iff "%Start" eq "@72" then^# 18 49 bla on bri red `   `^# 16 49 bla on bri red %@repeat[%@char[255],24]
  369.    # 15 49 bla on bri red `   `^ goto Line6B^endiff
  370.    iff "%Start" eq "@28" .or. "%Start" eq "Y" then^set Start=Y^goto Extract^elseiff "%Start" eq "A" then^goto Extract^endiff
  371.    iff "%Start" eq "N" then^# 18 49 bla on bri red No^goto Screen2^elseiff "%Start" eq "Q" then^goto Mainscreen^endiff
  372.    iff "%Start" eq "@59" then^set Line1=`YES or ALWAYS(no prompting) starts the program. QUIT to get`
  373.    set Line2=`back to mainscreen. NO to re-enter. Hit a key to continue..`^gosub Help^goto Line8B^else^gosub Messagebox^goto Line8B^endiff
  374.  
  375. :Screen3
  376.    iff not exist %@search[sort.exe] then^cls %Origcolor^beep 1000 09
  377.    screen 01 01 Program SORT.EXE is needed for %@upper[%0] but cannot be located^screen 02 01 Place microsoft SORT.EXE in your PATH and/or DOS directory
  378.    screen 03 01 Hit any key to return to the Mainmenu of %0^pause >& nul^goto Mainscreen^endiff
  379.  
  380.    cls bla on bla border bla^gosub Topscreen^gosub Background2^if %_Ansi eq 1 color bla on bri red
  381.    drawbox 08 10 20 72 02 bla on bri red shadow^# 20 12 blu on bri red ` Ctrl-Break = Mainscreen `
  382.    do Line = 09 to 19
  383.     # %Line 11 bri yel on bri red %@repeat[%@char[255],61]
  384.    enddo
  385.    # 08 22 bla on bri red ` Sorting an archived ARJ file on disk `
  386.    # 10 13 bri yel on bri red `Path & name ARJ-file:`
  387.    # 11 13 bri yel on bri red `Sort on Attribute or CRC    (A/C):`
  388.    # 12 13 bri yel on bri red `Sort on Date,Time or size (D/T/S):`
  389.    # 13 13 bri yel on bri red `Sort on Extension or Ratio  (E/R):`
  390.    # 14 13 bri yel on bri red `Sort on Filenames or Path   (F/P):`
  391.    # 15 13 bri yel on bri red `Reverse the sort-order      (Y/N):`
  392.    # 18 13 bri yel on bri red `Start with sorting      (Y/N/A/Q):`
  393.  
  394. :Line1C
  395.    screen 10 35^input /c /E /L37 %%Sourcepath
  396.    iff %@removable[%@instr[0,2,%Sourcepath]] eq 1 .and. %@ready[%@instr[0,2,%Sourcepath]] ne 1 then^set _Floppy=%@instr[0,2,%Sourcepath]^gosub Floppy^endiff
  397.    iff not isdir %@path[%Sourcepath] then^set Message=`Path %@upper[%@path[%Sourcepath]] does not exist, please correct path !`
  398.    gosub Messagebox^goto Line1C^endiff
  399.    iff not exist %Sourcepath then^set Message=`File %@upper[%@filename[%Sourcepath]] does not exist, please correct name !`
  400.    gosub Messagebox^goto Line1C^endiff
  401.    # 10 35 bla on bri red %Sourcepath
  402. :Line2C
  403.    # 20 58 bri yel on bri red ` F1 = Help `^screen 11 48^inkey /c %%Sort^check %Sort
  404.    iff "%Sort" eq "@72" then^# 11 48 bla on bri red %@repeat[%@char[255],24]^goto Line1C^endiff
  405.    iff "%Sort" eq "@28" .or. "%Sort" eq "@80" then^unset Sort^ # 11 48 bla on bri red Not selected^goto Line3C^endiff
  406.    iff "%Sort" eq "A" then^set Sort=/+69^# 11 48 bla on bri red Attribute sort^goto Line6C^endiff
  407.    iff "%Sort" eq "C" then^set Sort=/+60^# 11 48 bla on bri red CRC sort^goto Line6C^endiff
  408.    iff "%Sort" eq "@59" then^set Line1=`For sorting on Attribute or CRC choose the valid option or `
  409.    set Line2=`press [ENTER] to skip these options. Hit a key to continue.`
  410.    gosub Help^goto Line2C^else^set Message=`Please answer with A(ttribute) or C(RC), %@upper[%Sort] is not allowed`
  411.    gosub Messagebox^goto Line2C^endiff
  412. :Line3C
  413.    screen 12 48^inkey /c %%Sort^check %Sort
  414.    iff "%Sort" eq "@72" then^# 12 48 bla on bri red %@repeat[%@char[255],24]^# 11 48 bla on bri red %@repeat[%@char[255],24]^goto Line2C^endiff
  415.    iff "%Sort" eq "@28" .or. "%Sort" eq "@80" then^unset Sort^ # 12 48 bla on bri red Not selected^goto Line4C^endiff
  416.    iff "%Sort" eq "D" then^set Sort=/+41^# 12 48 bla on bri red Date sort^goto Line6C^endiff
  417.    iff "%Sort" eq "T" then^set Sort=/+51^# 12 48 bla on bri red Time sort^goto Line6C^endiff
  418.    iff "%Sort" eq "S" then^set Sort=/+14^# 12 48 bla on bri red Size sort^goto Line6C^endiff
  419.    iff "%Sort" eq "@59" then^set Line1=`For sorting on Date, Time or Size, choose a valid option or`
  420.    set Line2=`press [ENTER] to skip these options. Hit a key to continue.`
  421.    gosub Help^goto Line3C^else^set Message=`Please answer with D(ate),T(ime) or S(ize), %@upper[%Sort] is not allowed`^gosub Messagebox^goto Line3C^endiff
  422. :Line4C
  423.    screen 13 48^inkey /c %%Sort^check %Sort
  424.    iff "%Sort" eq "@72" then^# 13 48 bla on bri red %@repeat[%@char[255],24]^# 12 48 bla on bri red %@repeat[%@char[255],24]
  425.    # 11 48 bla on bri red %@repeat[%@char[255],24]^goto Line3C^endiff
  426.    iff "%Sort" eq "@28" .or. "%Sort" eq "@80" then^unset Sort ^# 13 48 bla on bri red Not selected^goto Line5C^endiff
  427.    iff "%Sort" eq "E" then^set Sort=/+81^# 13 48 bla on bri red Extension sort^goto Line6C^endiff
  428.    iff "%Sort" eq "R" then^set Sort=/+36^# 13 48 bla on bri red Ratio sort^goto Line6C^endiff
  429.    iff "%Sort" eq "@59" then^set Line1=`For sorting on Extension or Ratio choose a valid option or `
  430.    set Line2=`press [ENTER] to skip these options. Hit a key to continue.`
  431.    gosub Help^goto Line4C^else^set Message=`Please answer with E(xtension) or R(atio), %@upper[%Sort] is not allowed`^gosub Messagebox^goto Line4C^endiff
  432. :Line5C
  433.    screen 14 48^inkey /c %%Sort^check %Sort
  434.    iff "%Sort" eq "@72" then^# 14 48 bla on bri red %@repeat[%@char[255],24]^# 13 48 bla on bri red %@repeat[%@char[255],24]
  435.    # 12 48 bla on bri red %@repeat[%@char[255],24]^# 11 48 bla on bri red %@repeat[%@char[255],24]^goto Line4C^endiff
  436.    iff "%Sort" eq "@28" .or. "%Sort" eq "@80" then^set Message=`*** No sort-options selected, mainmenu will be reopend ***`^gosub Messagebox^goto Mainscreen^endiff
  437.    iff "%Sort" eq "F" then^set Sort=/+89^ # 14 48 bla on bri red Filename sort^goto Line6C^endiff
  438.    iff "%Sort" eq "P" then^set Sort=/+122^# 14 48 bla on bri red Path sort^goto Line6C^endiff
  439.    iff "%Sort" eq "@59" then^set Line1=`For sorting on Filename or Path choose the valid option or `
  440.    set Line2=`press [ENTER] to skip these options. Hit a key to continue.`
  441.    gosub Help^goto Line5C^else^set Message=`Please answer with F(ilenames) or P(ath), %@upper[%Sort] is not allowed`^gosub Messagebox^goto Line5C^endiff
  442. :Line6C
  443.    # 15 48 bla on bri red N^screen 15 48^inkey /c %%Reverse^check %Reverse
  444.    iff "%Reverse" eq "@72" then^# 15 48 bla on bri red %@repeat[%@char[255],24]^# 14 48 bla on bri red %@repeat[%@char[255],24]
  445.    # 13 48 bla on bri red %@repeat[%@char[255],24]^# 12 48 bla on bri red %@repeat[%@char[255],24]^# 11 48 bla on bri red %@repeat[%@char[255],24]
  446.    goto Line5C^elseiff "%Reverse" eq "@80" then^set Reverse=N^endiff
  447.    iff "%Reverse" eq "@28" .or. "%Reverse" eq "N" then^unset Reverse^# 15 48 bla on bri red No reversed sortorder^goto Line7C^endiff
  448.    iff "%Reverse" eq "Y" then^set Reverse=/r^# 15 48 bla on bri red Sorting will be reversed^goto Line7C^endiff
  449.    iff "%Reverse" eq "@59" then^set Line1=`If you want all sorting to be done reversed you must choose`^set Line2=`YES. Answer NO will not reverse ! Hit a key to continue... `
  450.    gosub Help^goto Line6C^else^set Message=`Answer with Y(es) or N(o) , anything else is not allowed`^gosub Messagebox^goto Line6C^endiff
  451. :Line7C
  452.    # 18 48 bla on bri red Y^screen 18 48^inkey /c %%Start^check %Start
  453.    iff "%Start" eq "@72" then^# 18 48 bla on bri red `   `^# 15 48 bla on bri red %@repeat[%@char[255],24]^ goto Line6C^endiff
  454.    iff "%Start" eq "@28" .or. "%Start" eq "Y" then^set Start=Y^goto Sort^elseiff "%Start" eq "A" then^goto Sort^endiff
  455.    iff "%Start" eq "N" then^# 18 48 bla on bri red No^goto Screen3^elseiff "%Start" eq "Q" then^goto Mainscreen^endiff
  456.    iff "%Start" eq "@59" then^set Line1=`YES or ALWAYS(no prompting) starts the program. QUIT to get`^set Line2=`back to mainscreen. NO to re-enter. Hit a key to continue..`
  457.    gosub Help^goto Line7C^else^gosub Messagebox^goto Line7C^endiff
  458.  
  459. :Screen4
  460.    cls bla on bla border bla^gosub Topscreen^gosub Background2^if %_Ansi eq 1 color bla on bri red
  461.    drawbox 08 10 20 72 02 bla on bri red shadow^# 20 12 blu on bri red ` Ctrl-Break = Mainscreen `
  462.    do Line = 09 to 19
  463.     # %Line 11 bri yel on bri red %@repeat[%@char[255],61]
  464.    enddo
  465.    # 08 28 bla on bri red ` Maintainance ARJ-archives `
  466.    # 10 13 bri yel on bri red `Path & name ARJ-file:`
  467.    # 11 13 bri yel on bri red `Test and List ARJ-file   (Y/N):`
  468.    # 12 13 bri yel on bri red `Add Password to ARJ-FILE (Y/N):`
  469.    # 13 13 bri yel on bri red `Change ARJ to .EXE file  (Y/N):`
  470.    # 14 13 bri yel on bri red `Remove PATH from archive (Y/N):`
  471.    # 15 13 bri yel on bri red `Give optional Password        :`
  472.    # 16 13 bri yel on bri red `Pause after full-screen  (Y/N):`
  473.    # 18 13 bri yel on bri red `Start program        (Y/N/A/Q):`
  474.    goto Line1D
  475.  
  476. :Empty
  477.     do Line = 11 to 18
  478.     # %Line 45 bri yel on bri red %@repeat[%@char[255],27]
  479.     enddo
  480.     unset /q Test Garble Change Remove Pause Start^return
  481.  
  482. :Line1D
  483.    screen 10 35^input /c /E /L36 %%Sourcepath
  484.    iff %@removable[%@instr[0,2,%Sourcepath]] eq 1 .and. %@ready[%@instr[0,2,%Sourcepath]] ne 1 then^set _Floppy=%@instr[0,2,%Sourcepath]^gosub Floppy^endiff
  485.    iff not isdir %@path[%Sourcepath] then^set Message=`Path %@upper[%@path[%Sourcepath]] does not exist, please correct path !`
  486.    gosub Messagebox^goto Line1D^endiff
  487.    iff not exist %Sourcepath then^set Message=`File %@upper[%@filename[%Sourcepath]] does not exist, please correct name !`
  488.    gosub Messagebox^goto Line1D^endiff
  489.    # 10 35 bla on bri red %Sourcepath
  490. :Line2D
  491.    # 20 58 bri yel on bri red ` F1 = Help `^ # 11 45 bla on bri red N^screen 11 45^inkey /c %%Test^check %Test
  492.    iff "%Test" eq "@72" then^gosub Empty^goto Line1D^elseiff "%Test" eq "@80" then^set Test=N^endiff
  493.    iff "%Test" eq "@28" .or. "%Test" eq "N" then^set Test=N^# 11 45 bla on bri red No^goto Line3D^endiff
  494.    iff "%Test" eq "Y" then^# 11 45 bla on bri red Yes^goto Line6D^elseiff "%Test" eq "@59" then
  495.    set Line1=`Use this option to test and list an archive, this disables `^set Line2=`however the Change-To-EXE option.  Hit a key to continue   `
  496.    gosub Help^goto Line2D^else^gosub Messagebox^goto Line2D^endiff
  497. :Line3D
  498.    # 12 45 bla on bri red N^screen 12 45^inkey /c %%Garble^check %Garble
  499.    iff "%Garble" eq "@72" then^gosub Empty^goto Line2D^elseiff "%Garble" eq "@80" then^set Garble=N^endiff
  500.    iff "%Garble" eq "@28" .or. "%Garble" eq "N" then^set Garble=N^# 12 45 bla on bri red No^goto Line4D^endiff
  501.    iff "%Garble" eq "Y" then^# 12 45 bla on bri red Yes^goto Line6D^elseiff "%Garble" eq "@59" then
  502.    set Line1=`This option adds a password to an archive, this disables   `^set Line2=`however the Change-To-EXE option.  Hit a key to continue   `
  503.    gosub Help^goto Line3D^else^gosub Messagebox^goto Line3D^endiff
  504. :Line4D
  505.    # 13 45 bla on bri red N^screen 13 45^inkey /c %%Change^check %Change
  506.    iff "%Change" eq "@28" .or. "%Change" eq "@80" then^set Change=N^endiff
  507.    iff "%Change" eq "@72" then^gosub Empty^goto Line3D^endiff
  508.    iff "%Change" eq "Y" .and. "%@ext[%Sourcepath]" ne "exe" then^# 13 45 bla on bri red Yes^goto Line6D^endiff
  509.    iff "%Change" eq "Y" .and. "%@ext[%sourcepath]" eq "exe" then^set Message=`File %@upper[%@filename[%Sourcepath]] is already a executable-file`
  510.    gosub Messagebox^unset /q Change^goto Screen4^endiff^iff "%Change" eq "N" then^# 13 45 bla on bri red No^goto Line5D^endiff
  511.    iff "%Change" eq "@59" then^set Line1=`You can make an existing ARJ-archive to be self-extracting. `
  512.    set Line2=`These EXE-files are called SFX-files. Hit a key to continue.`^gosub Help^goto Line4D^else^gosub Messagebox^goto Line4D^endiff
  513. :Line5D
  514.    # 20 58 bri yel on bri red ` F1 = Help `^# 14 45 bla on bri red Y^screen 14 45^inkey /c %%Remove^check %Remove
  515.    iff "%Remove" eq "@72" then^gosub Empty^goto Line4D^elseiff "%Remove" eq "@80" then^set Remove=Y^endiff
  516.    iff "%Remove" eq "@28" .or. "%Remove" eq "Y" then^set Remove=Y^# 14 45 bla on bri red Yes^goto Line6D^endiff
  517.    iff "%Remove" eq "N" then^set Message=`No menu-option has been chosen, mainmenu will be reopened !`^gosub Messagebox^goto Mainscreen^endiff
  518.    iff "%Remove" eq "@59" then^set Line1=`This option is to remove the path stored in an archive; not`
  519.    set Line2=`possible with absolute paths ! Hit a key to continue.      `^gosub Help^goto Line5D^else^gosub Messagebox^goto Line5D^endiff
  520. :Line6D
  521.    # 20 58 bla on bri red %@repeat[%@char[205],11]^screen 15 45^unset /q Psd^input /c /L17 /P %%Psd
  522.    iff "%Psd" eq "" .and. "%Garble" eq "Y" then^set Message=`You must type a password which will be added to %@upper[%@filename[%Sourcepath]]`
  523.    gosub Messagebox^goto Line6D^endiff
  524.    iff "%Psd" eq "" then^# 15 45 bla on bri red ` [No password] `^ else^# 15 45 bla on bri red ` [Password hidden] `^endiff
  525. :Line7D
  526.    # 20 58 bri yel on bri red ` F1 = Help `^iff "%Change" eq "Y" .or. "%Garble" eq "Y" then^# 16 45 bla on bri red Not possible now^set Pause=N^goto Line8D
  527.    elseiff "%Remove" eq "Y" then^set Pause=N^# 16 45 bla on bri red Not possible now^goto Line8D^endiff
  528.    # 16 45 bla on bri red Y^screen 16 45^inkey /c %%Pause^check %Pause
  529.    iff "%Pause" eq "@72" then^gosub Empty^goto Line5D^elseiff "%Pause" eq "@80" then^set Pause=Y^endiff
  530.    iff "%Pause" eq "@28" .or. "%Pause" eq "Y" then^set Pause=Y^# 16 45 bla on bri red Yes^goto Line8D^endiff
  531.    iff "%Pause" eq "N" then^# 16 45 bla on bri red No^goto Line8D^elseiff "%Pause" eq "@59" then
  532.    set Line1=`If the contents of the archive you will test & view do not `^set Line2=`fit on the screen, choose YES ! Hit a key to continue...   `
  533.    gosub Help^goto Line7D^else^gosub Messagebox^goto Line7D^endiff
  534. :Line8D
  535.    # 18 45 bla on bri red Y^screen 18 45^inkey /c %%Start^check %Start^iff "%Start" eq "@72" then^gosub Empty^goto Line5D^endiff
  536.    iff "%Start" eq "@28" .or. "%Start" eq "Y" then^set Start=Y^goto Maintainance^elseiff "%Start" eq "A" then^goto Maintainance^endiff
  537.    iff "%Start" eq "N" then^# 18 45 bla on bri red No^goto Screen4^elseiff "%Start" eq "Q" then^goto Mainscreen^endiff
  538.    iff "%Start" eq "@59" then^set Line1=`YES or ALWAYS(no prompting) starts the program. QUIT to get`
  539.    set Line2=`back to mainscreen. NO to re-enter. Hit a key to continue..`^gosub Help^goto Line8D^else^gosub Messagebox^goto Line8D^endiff
  540.  
  541. :Screen5
  542.    cls bla on bla border bla^gosub Topscreen^gosub Background2^if %_Ansi eq 1 color bla on bri red
  543.    drawbox 08 10 22 72 02 bla on bri red shadow^# 22 12 blu on bri red ` Ctrl-Break = Mainscreen `
  544.    do Line = 09 to 21
  545.     # %Line 11 bri yel on bri red %@repeat[%@char[255],61]
  546.    enddo
  547.    # 08 30 bla on bri red ` Setup Configuration `
  548.    # 10 13 bri yel on bri red `Archive also hidden- and systemfiles (Y/N):`
  549.    # 11 13 bri yel on bri red `Default, Maximum or No compression (D/M/N):`
  550.    # 12 13 bri yel on bri red `Use date/time latest archived file   (Y/N):`
  551.    # 13 13 bri yel on bri red `Show ANSI comments                   (Y/N):`
  552.    # 14 13 bri yel on bri red `Show bar graphics indicator          (Y/N):`
  553.    # 15 13 bri yel on bri red `Use temp-variable as workdirectory   (Y/N):`
  554.    # 16 13 bri yel on bri red `Ask permission (query) for each file (Y/N):`
  555.    # 17 13 bri yel on bri red `Display only the Filenames           (Y/N):`
  556.    # 18 13 bri yel on bri red `Create Default or Small .EXE files   (D/S):`
  557.    # 19 13 bri yel on bri red `Save configuration in 4ARJ.CFG       (Y/N):`
  558.    # 20 13 bri yel on bri red `Back to the Mainscreen               (Y/N):`
  559.  
  560. :Line1F
  561.    # 22 58 bri yel on bri red ` F1 = Help `
  562.    # 10 57 bla on bri red N^if "%Attribute" ne "" .and. "%Attribute" ne "" # 10 59 bla on bri red (%@upper[%Attribute] is used)
  563.    screen 10 57^inkey /c %%Attribute^check %Attribute^if "%Attribute" eq "@80" set Attribute=N
  564.    iff "%Attribute" eq "@28" .or. "%Attribute" eq "N" then^set Attribute=N^# 10 57 bla on bri red `No           `^goto Line2F^endiff
  565.    iff "%Attribute" eq "Y" then^# 10 57 bla on bri red `Yes          `^goto Line2F^elseiff "%Attribute" eq "@59" then
  566.    set Line1=`Default ARJ won't archive system and hidden files. If you  `^set Line2=`want to archive these, choose YES !  Hit a key to continue.`
  567.    gosub Help^unset /q Attribute^goto Line1F^else^gosub Messagebox^unset /q Attribute^goto Line1F^endiff
  568. :Line2F
  569.    # 11 57 bla on bri red D^if "%Method" ne "" .and. "%Method" ne "" # 11 59 bla on bri red (%@upper[%Method] is used)
  570.    screen 11 57^inkey /c %%Method^check %Method
  571.    iff "%Method" eq "@72" then^unset Method Attribute^# 11 57 bla on bri red %@repeat[%@char[255],15]^# 10 57 bla on bri red `   `^goto Line1F
  572.    elseiff "%Method" eq "@80" then^set Method=D^endiff
  573.    iff "%Method" eq "@28" .or. "%Method" eq "D" then^set Method=D^# 11 57 bla on bri red `Default        `^goto Line3F^endiff
  574.    iff "%Method" eq "M" then^# 11 57 bla on bri red `Maximum        `^goto Line3F^endiff
  575.    iff "%Method" eq "N" then^# 11 57 bla on bri red No (store only)^goto Line3F^elseiff "%Method" eq "@59" then
  576.    set Line1=`For more speed during the ARJ-proces choose DEFAULT or NONE`^set Line2=`This will however compress LESS !  Hit a key to continue.  `
  577.    gosub Help^unset /q Method^goto Line2F^else^gosub Messagebox^unset /q Method^goto Line2F^endiff
  578. :Line3F
  579.    # 12 57 bla on bri red N^if "%Arjdate" ne "" .and. "%Arjdate" ne "" # 12 60 bla on bri red (%@upper[%Arjdate] is used)
  580.    screen 12 57^inkey /c %%Arjdate^check %Arjdate
  581.    iff "%Arjdate" eq "@72" then^unset Arjdate Method^# 12 57 bla on bri red %@repeat[%@char[255],15]^# 11 57 bla on bri red %@repeat[%@char[255],15]
  582.    goto Line2F^elseiff "%Arjdate" eq "@80" then^set Arjdate=N^endiff
  583.    iff "%Arjdate" eq "@28" .or. "%Arjdate" eq "N" then^set Arjdate=N^# 12 57 bla on bri red `No            `^goto Line4F^endiff
  584.    iff "%Arjdate" eq "Y" then^# 12 57 bla on bri red `Yes           `^goto Line4F^elseiff "%Arjdate" eq "@59" then
  585.    set Line1=`You can give the ARJ-file today's date (default) or give it`^set Line2=`the date of the latest archived file. Hit a key to continue`
  586.    gosub Help^unset /q Arjdate^goto Line3F^else^gosub Messagebox^unset /q Arjdate^goto Line3F^endiff
  587. :Line4F
  588.    # 13 57 bla on bri red N^if "%Ansi" ne "" .and. "%Ansi" ne "" # 13 59 bla on bri red (%@upper[%Ansi] is used)
  589.    screen 13 57^inkey /c %%Ansi^check %Ansi
  590.    iff "%Ansi" eq "@72" then^unset Ansi Arjdate^# 13 57 bla on bri red %@repeat[%@char[255],15]^# 12 57 bla on bri red `   `^goto Line3F
  591.    elseiff "%Ansi" eq "@80" then^set Ansi=N^endiff
  592.    iff "%Ansi" eq "@28" .or. "%Ansi" eq "N" then^set Ansi=N^# 13 57 bla on bri red `No           `^goto Line5F^endiff
  593.    iff "%Ansi" eq "Y" then^# 13 57 bla on bri red `Yes          `^goto Line5F^elseiff "%Ansi" eq "@59" then
  594.    set Line1=`Setting this option will display ANSI sequences unaltered. `^set Line2=`Not displaying is the default.  Hit a key to continue.     `
  595.    gosub Help^unset /q Ansi^goto Line4F^else^gosub Messagebox^unset /q Ansi^goto Line4F^endiff
  596. :Line5F
  597.    # 14 57 bla on bri red Y^if "%Indicator" ne "" .and. "%Indicator" ne "" # 14 59 bla on bri red (%@upper[%Indicator] is used)
  598.    screen 14 57^inkey /c %%Indicator^check %Indicator
  599.    iff "%Indicator" eq "@72" then^unset Indicator Ansi^# 14 57 bla on bri red %@repeat[%@char[255],15]^# 13 57 bla on bri red `   `
  600.    goto Line4F^elseiff "%Indicator" eq "@80" then^set Indicator=Y^endiff
  601.    iff "%Indicator" eq "@28" .or. "%Indicator" eq "Y" then^set Indicator=Y^# 14 57 bla on bri red `Yes          `^goto Line6F^endiff
  602.    iff "%Indicator" eq "N" then^# 14 57 bla on bri red `No           `^goto Line6F^elseiff "%Indicator" eq "@59" then
  603.    set Line1=`A Bar-Type Progress-Indicator can be set instead of the    `^set Line2=`default percentage Indicator. Hit a key to continue.       `
  604.    gosub Help^unset /q Indicator^goto Line5F^else^gosub Messagebox^unset /q Indicator^goto Line5F^endiff
  605. :Line6F
  606.    # 15 57 bla on bri red N^if "%Workdir" ne "" .and. "%Workdir" ne "" # 15 59 bla on bri red (%@upper[%Workdir] is used)
  607.    screen 15 57^inkey /c %%Workdir^check %Workdir
  608.    iff "%Workdir" eq "@72" then^unset Workdir Indicator^# 15 57 bla on bri red %@repeat[%@char[255],15]^# 14 57 bla on bri red `   `
  609.    goto Line5F^elseiff "%Workdir" eq "@80" then^set Workdir=N^endiff
  610.    iff "%Workdir" eq "@28" .or. "%Workdir" eq "N" then^set Workdir=N^# 15 57 bla on bri red `No           `^goto Line7F^endiff
  611.    iff "%Workdir" eq "Y" then^set Workdir=Y^# 15 57 bla on bri red `Yes          `^ elseiff "%Workdir" eq "@59" then
  612.    set Line1=`If you have set your TEMP-directory, you can use TEMP to   `^set Line2=`speed up the archive process. Hit a key to continue.       `
  613.    gosub Help^unset /q Workdir^goto Line6F^else^gosub Messagebox^unset /q Workdir^goto Line6F^endiff
  614. :Line7F
  615.    # 16 57 bla on bri red N^if "%Query" ne "" .and. "%Query" ne "" # 16 59 bla on bri red (%@upper[%Query] is used)
  616.    screen 16 57^inkey /c %%Query^check %Query
  617.    iff "%Query" eq "@72" then^unset Query Workdir^# 16 57 bla on bri red %@repeat[%@char[255],15]^# 15 57 bla on bri red `   `
  618.    goto Line6F^elseiff "%Query" eq "@80" then^set Query=N^endiff
  619.    iff "%Query" eq "@28" .or. "%Query" eq "N" then^set Query=N^# 16 57 bla on bri red `No           `^goto Line8F^endiff
  620.    iff "%Query" eq "Y" then^# 16 57 bla on bri red `Yes          `^goto Line8F^elseiff "%Query" eq "@59" then
  621.    set Line1=`If this option is activated, you will be prompted [YNAQ] to`^set Line2=`continue for each file. Hit a key to continue.             `
  622.    gosub Help^unset /q Query^goto Line7F^else^gosub Messagebox^unset /q Query^goto Line7F^endiff
  623. :Line8F
  624.    # 17 57 bla on bri red N^if "%Filespec" ne "" .and. "%Filespec" ne "" # 17 59 bla on bri red (%@upper[%Filespec] is used)
  625.    screen 17 57^inkey /c %%Filespec^check %Filespec
  626.    iff "%Filespec" eq "@72" then^unset Filespec Query^# 17 57 bla on bri red %@repeat[%@char[255],15]^# 16 57 bla on bri red `   `
  627.    goto Line7F^elseiff "%Filespec" eq "@80" then^set Filespec=N^endiff
  628.    iff "%Filespec" eq "@28" .or. "%Filespec" eq "N" then^set Filespec=N^# 17 57 bla on bri red `No           `^goto Line9F^endiff
  629.    iff "%Filespec" eq "Y" then^# 17 57 bla on bri red `Yes          `^goto Line9F^elseiff "%Filespec" eq "@59" then
  630.    set Line1=`If you only want to see the filename and not the whole path`^set Line2=`during the progress choose YES. Hit a key to continue.     `
  631.    gosub Help^unset /q Filespec^goto Line8F^else^gosub Messagebox^unset /q Filespec^goto Line8F^endiff
  632. :Line9F
  633.    # 18 57 bla on bri red D^if "%Exe" ne "" .and. "%Exe" ne "" # 18 59 bla on bri red (%@upper[%Exe] is used)
  634.    screen 18 57^inkey /c %%Exe^check %Exe
  635.    iff "%Exe" eq "@72" then^unset Exe Filespec ^# 18 57 bla on bri red %@repeat[%@char[255],15]^# 17 57 bla on bri red `   `
  636.    goto Line8F^elseiff "%Exe" eq "@80" then^set Exe=D^endiff
  637.    iff "%Exe" eq "@28" .or. "%Exe" eq "D" then^set Exe=D^# 18 57 bla on bri red `Default      `^goto Line10F^endiff
  638.    iff "%Exe" eq "S" then^# 18 57 bla on bri red `Small        `^goto Line10F^elseiff "%Exe" eq "@59" then
  639.    set Line1=`When creating .EXE files you can make the default large SFX`^set Line2=`and the limited but smaller SFX. Hit a key to continue.    `
  640.    gosub Help^unset /q Exe^goto Line9F^else^gosub Messagebox^unset /q Exe^goto Line9F^endiff
  641. :Line10F
  642.    # 22 58 bri yel on bri red ` F1 = Help `^# 19 57 bla on bri red N^screen 19 57^inkey /c %%Savecfg^check %Savecfg
  643.    iff "%Savecfg" eq "@72" then^unset Savecfg Exe^# 19 57 bla on bri red %@repeat[%@char[255],15]^# 18 57 bla on bri red `       `
  644.    # 19 57 bla on bri red `   `^goto Line9F^endiff
  645.    iff "%Savecfg" eq "@28" .or. "%Savecfg" eq "@80" then^set Savecfg=N^endiff
  646.    iff "%Savecfg" eq "Y" .and. not exist %@search[batcomp.exe] then^set Message=`4DOS compresser BATCOMP.EXE missing, can't create 4ARJ.CFG!`
  647.    gosub Messagebox^set Savecfg=N^# 19 57 bla on bri red No^goto Line11F^endiff
  648.    if "%Savecfg" eq "Y" goto SubLine10F
  649.    iff "%Savecfg" eq "N" then^set Savecfg=N^# 19 57 bla on bri red No^goto Line11F^endiff
  650.    iff "%Savecfg" eq "@59" then^set Line1=`If you want 4ARJ to save the configuration and to reload it`
  651.    set Line2=`during start-up, choose YES. Hit a key to continue....     `^gosub Help^goto Line10F^else^gosub Messagebox^goto Line10F^endiff
  652. :SubLine10F
  653.    # 22 58 bla on bri red %@repeat[%@char[205],11]
  654.    iff exist %@search[4arj.cfg] then^set Cfgpath=%@upper[%@search[4arj.cfg]]^else^set Cfgpath=%@upper[%@path[%@search[4dos.com]]4arj.cfg]^endiff
  655.    # 19 11 bri yel on bri red %@repeat[%@char[255],61]^# 19 13 bri yel on bri red Full path for 4ARJ.CFG :
  656.    screen 19 38^input /c /E /L34 %%Cfgpath
  657.    iff %@removable[%@instr[0,2,%Cfgpath]] eq 1 then^set Message=`The configurationfile can only be created on a fixed disk`^gosub Messagebox^goto SubLine10F^endiff
  658.    iff %@filename[%Cfgpath] ne 4ARJ.CFG .or. not isdir %@path[%Cfgpath] then^set Message=`Syntax error : Filename must be 4ARJ.CFG or incorrect path`
  659.    gosub Messagebox^goto SubLine10F^endiff
  660. :Line11F
  661.    # 22 58 bri yel on bri red ` F1 = Help `^# 20 57 bla on bri red Y^screen 20 57^inkey /c %%Main^check %Main
  662.    iff "%Main" eq "@72" then^unset Main Savecfg^# 19 13 bri yel on bri red `Save configuration in 4ARJ.CFG       (Y/N):               `
  663.    # 20 57 bla on bri red `   `^goto Line10F^endiff
  664.    iff "%Main" eq "@59" then ^ set Line1=`YES returns to the mainscreen, NO causes 4ARJ to go back to`
  665.    set Line2=`the beginning of this screen. Hit a key to continue.       ` ^ gosub Help ^ goto Line11F ^ endiff
  666.    iff %@index[YN@28,%Main] eq -1 then^gosub Messagebox^goto Line11F^endiff^iff "%Main" eq "N" then^# 20 57 bla on bri red No^goto Screen5^endiff
  667.    iff "%Main" eq "Y" .or. "%Main" eq "@28" then^# 20 57 bla on bri red Yes^endiff^if "%Savecfg" eq "Y" gosub CFG_Create
  668.    iff "%Error" eq "Y" then^set Message=`%@upper[%@Path[%Cfgpath]] not matching your PATH, 4ARJ.CFG will be deleted`
  669.    gosub Messagebox^unset Error^goto SubLine10F^else^goto Mainscreen^endiff
  670.  
  671. :Archive
  672.    alias D `# -1 0 %_fg on %_bg Do you want to FORMAT or only WIPE the targetdrive ? (F/W)^screen -1 59^inkey /k"FW" %%A^iff %A eq F then^Format %@instr[0,2,%Targetpath] /autotest /u^else^del /y /z %@instr[0,2,%Targetpath]\*.* >& nul^unset A^endiff`
  673.    cls %Origcolor^if exist %@path[%Archivepath]arj_sel del /q %@path[%Archivepath]arj_sel
  674.    iff %Attribute eq Y  then^set CFG1=-a        ^else^unset /q CFG1^endiff
  675.    iff %Method    eq M  then^set CFG2=-jm       ^elseiff %Method eq N then^set CFG2=-m0^else^unset /q CFG2^endiff
  676.    iff %Arjdate   eq Y  then^set CFG3=-s        ^else^unset /q CFG3^endiff
  677.    iff %Ansi      eq Y  then^set CFG4=-ja       ^else^unset /q CFG4^endiff
  678.    iff %Indicator eq Y  then^set CFG5=-i2       ^else^unset /q CFG5^endiff
  679.    iff %Workdir   eq Y  then^set CFG6=-w%temp   ^else^unset /q CFG6^endiff
  680.    iff %Query     eq Y  then^set CFG7=-q        ^else^unset /q CFG7^endiff
  681.    iff %Filespec  eq Y  then^set CFG8=-jl       ^else^unset /q CFG8^endiff
  682.    iff %Sfx       eq Y  then^set Sfx=-je        ^else^unset Sfx    ^endiff
  683.    iff "%Psd"     ne "" then^set Psd=-g%Psd     ^else^unset /q Psd ^endiff
  684.    iff %Subdir    eq Y  then^set Subdir=-r      ^else^unset Subdir ^endiff
  685.    iff %Volumes   eq Y  then^set Volumes=-vvasD ^else^unset Volumes^endiff
  686.    iff %Store     eq N  then^set Store=-e       ^else^unset Store  ^endiff
  687.    iff %Test      eq Y  then^set Test=-jt       ^else^unset Test   ^endiff
  688.    iff %Start     eq A  then^set Start=-y       ^else^set Start=-y ^endiff
  689.    iff %Start     eq -y .and. %Volumes eq -vvasD then^unset Start  ^endiff
  690.    iff %Sfx       eq -je .and. %Exe eq S then   ^set Sfx=-je1      ^endiff
  691.  
  692.    iff %Sfx eq -je1 .and. "%Psd" ne "" then^beep^drawbox 01 00 04 79 1 bri red on blu fill blu
  693.    # 02 02 bri red on blu Warning Password is skipped: 4ARJ is configured in creating small .EXE files
  694.    # 03 02 bri red on blu Use the SETUP of 4ARJ to create the default .EXE files (password allowed)
  695.    screen 06 00^Pause Hit a key to go back to the mainscreen of 4ARJ^goto Mainscreen^endiff
  696.    if %Select ne Y goto Runarj
  697.  
  698.    :Selectarj
  699.    pushd %@path[%Archivepath]^iff "%CFG1" eq "-a" then^select /a-d /deo:en Echo (%Archivepath) >>! arj_sel^else
  700.    select /a-d-h /deo:en Echo (%Archivepath) >>! arj_sel^endiff
  701.    iff not exist arj_sel then^echo No Files selected^pause^popd^goto Mainscreen^else^popd^goto Runarj^endiff
  702.  
  703.    :Runarj
  704.    pushd %@path[%Archivepath]^Timer > nul^if exist %_Boot:\arjtime.dat del /q %_Boot:\arjtime.dat
  705.    iff select ne Y .and. "%Subdir" ne "-r" .and. not exist %@filename[%Archivepath] then^echo No valid Files found in %@upper[%@path[%Archivepath]]
  706.    pause^popd^goto Mainscreen^endiff^iff select ne Y .and. "%Subdir" eq "-r" then^global /iq (if exist %@filename[%Archivepath] set found=Y)^endiff
  707.    iff select ne Y .and. "%Subdir" eq "-r" .and. %found ne Y then^echo No valid Files found in %@upper[%@path[%Archivepath]] and in recursive directories
  708.    pause^popd^goto Mainscreen^endiff^unset /q found
  709.    if not exist arj_sel .and. "%Subdir" eq "-r" dir %@filename[%Archivepath] /a:-d /fhkms >>! arj_sel
  710.    if not exist arj_sel .and. "%Subdir" ne "-r" dir %@filename[%Archivepath] /a:-d /fhkm  >>! arj_sel
  711.    gosub DescArj
  712.    ARJ %Command %Targetpath !arj_sel -xarj_sel -xdescript.ion %CFG1 %CFG2 %CFG3 %CFG4 %CFG5 %CFG6 %CFG7 %CFG8 %Psd %Sfx %Volumes %Store %Test %Start
  713.    if exist arj_sel del /q arj_sel^if exist 4arj.ion del /q 4arj.ion^cls^popd
  714.    if "%@ext[%targetpath]" eq "" set targetpath=%Targetpath.arj^if errorlevel ne 0 (gosub errors^pause^goto Mainscreen)
  715.    timer > %_Boot:\arjtime.dat^set arjtime=%@substr[%@line[%_boot:\arjtime.dat,0],%@eval[%@len[%@line[%_boot:\arjtime.dat,0]]-8],5]^del /q %_Boot:\arjtime.dat
  716.    snd^echo Archive-file %@upper[%@filename[%Targetpath]] succesfully created/updated in %@upper[%@path[%Targetpath]]
  717.    echo Total time elapsed: %arjtime Minutes^echo Filesize of %@upper[%@filename[%Targetpath]] : %@filesize[%@path[%Targetpath]%@name[%Targetpath].*,bc] Bytes
  718.    unset /q arjtime^Pause^goto Mainscreen
  719.  
  720.    :DescArj
  721.    iff "%Subdir" ne "" then^global /iq (if exist descript.ion set ION=Y)^else^if exist descript.ion set ION=Y^endiff
  722.    iff %ION eq Y then^unset ION^screen 1 0 Saving 4DOS-descriptions, one moment please . . .^screen 0 0^else^return^endiff
  723.    set handle=%@fileopen[arj_sel,read]^set _Sign=176^set _Col=0^setdos /s0:0
  724.    do forever
  725.     set _Val=%@fileread[%handle]
  726.     if "%_Col" eq "48" (set _Col=0^set _Sign=%@inc[%_Sign]^if %_Sign gt 178 set _Sign=176)
  727.     if "%_Val" eq "**EOF**" leave
  728.     set _Name=%@word[0,%_Val]
  729.     if "%@descript[%_Name]" ne "" echo %@filename[%_Name] %@descript[%_Name] >>! 4arj.ion
  730.     set _Col=%@inc[%_Col]^scrput 03 %_Col %_Bg on %_Fg %@char[%_Sign]
  731.    enddo
  732.    if exist 4arj.ion echo %_Cwds%4arj.ion >>! arj_sel^unset /q handle _Col _Sign _Name _Val^setdos /s15:100^cls
  733.    return
  734.  
  735. :Extract
  736.    cls %Origcolor
  737.    iff %Ansi      eq Y then^set CFG4=-ja    ^else^unset /q CFG4^endiff
  738.    iff %Indicator eq Y then^set CFG5=-i1    ^else^unset /q CFG5^endiff
  739.    iff %Workdir   eq Y then^set CFG6=-w%temp^else^unset /q CFG6^endiff
  740.    iff %Query     eq Y then^set CFG7=-q     ^else^unset /q CFG7^endiff
  741.    iff %Filespec  eq Y then^set CFG8=-jl    ^else^unset /q CFG8^endiff
  742.    iff %Subdir    eq Y then^set Command=x   ^else^set Command=e^endiff
  743.    iff %Volumes   eq Y then^set Volumes=-vva^else^unset Volumes^endiff
  744.    iff "%Psd"     ne ""  then^set Psd=-g%Psd^else^unset /q Psd ^endiff
  745.    iff %Start     eq A then^set Start=-y    ^else^set Start=-y ^endiff
  746.    iff %Start eq -y .and. %Volumes eq -vva then  ^unset Start  ^endiff
  747.  
  748.    pushd %Extractpath^Timer > nul^ARJ %Command %Sourcepath %Extractfile 4arj.ion %CFG4 %CFG5 %CFG6 %CFG7 %CFG8 %Volumes %Psd %Start
  749.    global /iq (if exist 4ARJ.ION set Startpath=%_Cwds%4ARJ.ION)^popd^iff "%Startpath" ne "" .and. "%Subdir" eq "Y" then^pushd %@path[%Startpath]
  750.    if not exist 4ARJ.ION (echo Error in locating temp-file 4ARJ.ION with descriptions^pause^return)
  751.    cls^set _Sign=176^set _Col=0^setdos /s0:0^global /iq (gosub Descript^if "%@fileclose[%handle]" eq "-1" echo Error on closing file 4ARJ.ION)
  752.    unset /q handle _Val _Name _Desc _Col _Sign^popd^setdos /s15:100^elseiff "%Startpath" ne "" then^pushd %@path[%Startpath]
  753.    if not exist 4ARJ.ION (echo Error in locating temp-file 4ARJ.ION with descriptions^pause^return)^cls^set _Sign=176^set _Col=0^setdos /s0:0
  754.    gosub descript^if "%@fileclose[%handle]" eq "-1" echo Error on closing file 4ARJ.ION^unset /q handle _Val _Name _Desc _Col _Sign^popd^setdos /s15:100^endiff
  755.    if exist %Startpath del /q %Startpath^Timer >! %_Boot:\arjtime.dat^set arjtime=%@substr[%@line[%_boot:\arjtime.dat,0],%@eval[%@len[%@line[%_boot:\arjtime.dat,0]]-8],5]
  756.    if exist %_Boot:\arjtime.dat del /q %_Boot:\arjtime.dat^iff errorlevel eq 0 then^snd
  757.    echo Archive-file %@upper[%@filename[%Sourcepath]] succesfully extracted in %@upper[%@path[%Extractpath]]
  758.    echo Total time elapsed: %arjtime Minutes^else^gosub Errors^endiff^unset /q arjtime^Pause^goto Mainscreen
  759.  
  760.   :Descript
  761.    screen 1 0 Restoring 4DOS-descriptions, one moment please . . .
  762.    set handle=%@fileopen[%Startpath%,read]
  763.    do forever
  764.     if "%_Col" eq "51" (set _Col=0^set _Sign=%@inc[%_Sign]^if %_Sign gt 178 set _Sign=176)
  765.     set _Val=%@fileread[%handle]
  766.     if %_Val eq **EOF** leave
  767.     set _Name=%@word[0,%_Val]
  768.     set _Desc=%@trim[%@instr[%@len[%@word[0,%_Val]],%@len[%_Val],%_Val]]
  769.     if exist %_Name .and. %@attrib[%_Name%,h] eq 0 (echo %_Desc | describe %_Name)
  770.     set _Col=%@inc[%_Col]
  771.     scrput 03 %_Col %_Bg on %_Fg %@char[%_Sign]
  772.    enddo
  773.    screen 5 0
  774.    return
  775.  
  776. :Sort
  777.    cls %Origcolor
  778.    ARJ v %Sourcepath -jv1 -jp- >! %_Boot:\arjsort.$$1
  779.    iff errorlevel ne 0 then^gosub Errors^del %_Boot:\arjsort.$$1 >& nul^pause^goto Mainscreen^endiff
  780.    SORT %Sort %Reverse < %_Boot:\arjsort.$$1 >! %_Boot:\arjsort.$$$
  781.    iff errorlevel ne 0 then^gosub Errors^del %_Boot:\arjsort.$$? >& nul^pause^goto Mainscreen^endiff
  782.    ARJ o %Sourcepath -!! -jp- !%_Boot:\arjsort.$$$
  783.    iff errorlevel ne 0 then^gosub Errors^del %_Boot:\arjsort.$$? >& nul^pause^goto Mainscreen^endiff
  784.    del %_Boot:\arjsort.$$? >& nul
  785.    echo Sorting completed^Pause Hit a key to return to the mainmenu^goto Mainscreen
  786.  
  787. :Maintainance
  788.    cls %Origcolor^iff "%Psd" ne ""  then^set Psd=-g%Psd ^else^unset/q Psd^endiff
  789.    iff %Pause eq Y then^set Pause=-jp^else^unset Pause^endiff^if %Test eq Y goto Test
  790.    if %Garble eq Y goto Garble^if %Change eq Y goto Change^if %Remove eq Y goto Remove
  791.  
  792.    :Test
  793.    ARJ t %Sourcepath %Psd %Pause^Pause Hit a key to continue with a listing of %@upper[%@filename[%Sourcepath]]^cls %Origcolor
  794.    ARJ l %Sourcepath %Pause^if errorlevel ne 0 gosub Errors^Pause Hit a key to go back to the Mainscreen of %0^goto Mainscreen
  795.  
  796.    :Garble
  797.    ARJ g %Sourcepath %Psd^if errorlevel ne 0 gosub Errors^Pause Hit a key to go back to the Mainscreen of %0^unset /q Garble^goto Mainscreen
  798.  
  799.    :Change
  800.    iff %Exe eq S then^set Sfx=-je1^else^set Sfx=-je^endiff^ARJ y %Sourcepath %Psd %Sfx
  801.    iff errorlevel ne 0 then^gosub Errors^else^del /q %Sourcepath >& nul^endiff
  802.    Pause Hit a key to go back to the Mainscreen of %0^unset /q Change Sfx^goto Mainscreen
  803.  
  804.    :Remove
  805.    ARJ r %Sourcepath^if errorlevel ne 0 gosub Errors^Pause Hit a key to go back to the Mainscreen of %0^unset /q Remove^goto Mainscreen
  806.