Waiting Jobs to end

Hi guys,
I have a program that generates a file of +500.000 registers (with a lot of info ecah) to the server. I have splitted the program in multiple jobs to make it performant,and after that I managed the program continues to create one single file from a Z table (which is filled by the Jobs).
The questions are:
1 - Do I have to Lock the table when doing the insert command in each job?
2 - The program needs to wait until all jobs are finished. How can I programm that?
Here an example of the code implemented to create multiple jobs:
DATA: L_CANT_REG TYPE  RSEUMOD-TBMAXSEL.
  CONSTANTS: DC_SIGN    TYPE CHAR1 VALUE 'I',
             DC_OPTION  TYPE CHAR2 VALUE 'EQ'.
  CLEAR: RA_BPCONTACT. REFRESH RA_BPCONTACT.
  LOOP AT I_BCONT INTO R_BCONT.
    RA_BPCONTACT-SIGN   = DC_SIGN.
    RA_BPCONTACT-OPTION = DC_OPTION.
    RA_BPCONTACT-LOW    = R_BCONT-BPCONTACT.
    APPEND RA_BPCONTACT.
    DESCRIBE TABLE RA_BPCONTACT LINES L_CANT_REG.
    IF L_CANT_REG EQ P_CANREG.
      PERFORM F_EJECUTAR_JOB.
      CLEAR: L_CANT_REG, RA_BPCONTACT.
      REFRESH RA_BPCONTACT.
    ENDIF.
  ENDLOOP.
  IF RA_BPCONTACT IS NOT INITIAL.
    PERFORM F_EJECUTAR_JOB.
    CLEAR: L_CANT_REG, RA_BPCONTACT.
    REFRESH RA_BPCONTACT.
  ENDIF.
Many thanks in advance!!!
LUCAS

Hi Lucas,
after that I managed the program continues to create one single file from a Z table (which is filled by the Jobs).
Do you mean to say that each job will be updating a Z table with the actual data that will be later downloaded into a file?
1 - Do I have to Lock the table when doing the insert command in each job?
Depends how you build your Z table, i would suggest something like below,
MANDT  - Key Field
JOBNO  - Key Field
followed by the fields that contain actual data
Jobno will be a unique number for every "PERFORM F_EJECUTAR_JOB." call that you make and will be passed from your main program. This will make sure that duplicate entries are not overwritten and you don't have to worry about locking the table.
2 - The program needs to wait until all jobs are finished. How can I programm that?
Like i said in my previous post, you will have to use the "PERFORM ON END OF TASK" construct when you are calling the FM in parallel. Could you post the code inside "PERFORM F_EJECUTAR_JOB." so that you can get more inputs on how you could do this.
Check the below links too fore more inputs on parallel processing
http://help.sap.com/saphelp_nw04/helpdata/en/22/0425c6488911d189490000e829fbbd/frameset.htm
http://wiki.sdn.sap.com/wiki/display/ABAP/Parallel+Processing
Regards,
Chen

Similar Messages

  • EM Patch Job never end

    Hi,
    I was trying to patch my Oracle 10g R2 10.2.0.3 using the dbconsole. But the EM Job never end(more than 20hours run). The patch job stuck in "checkTarget" with the log file show "waiting for output" (the previous step "cachePatchFile" succeeded).
    Anyone know what could be the reason?
    Thanks

    I searched for a way to stop the job because it's still on the Preparation now.
    But i did not find the job in ALL_SCHEDULER_JOBS and with EM i can only stop it friendly, not forcefully.
    Does anyone have a hint?
    Thanks
    Daniel

  • Waiting for the end of the process

    I'm executing a command using the Runtime class and I have to wait until the end of the command to get the results. But, I don't want to sleep the thread for some undeterminated time. I'd like it just to wait until the command ends.
    See in this code:
    try
    String result="";
    Process p = Runtime.getRuntime().exec("sh"); //open a new shell
    InputStream is = p.getInputStream();
    OutputStream os = p.getOutputStream();
    os.write("ifconfig -a | grep PROMISC -c\n".getBytes());
    os.flush();
    try {
    Thread.currentThread().sleep(1000);
    /*command should take some time to execute so wait for 10 secs .... I don't like this .... I would prefer waiting for the end the command ifconfig*/
    catch (InterruptedException eIE) { }
    while (is.available() > 0)
    result = result + ( (char) is.read());
    System.out.println(result);
    catch (IOException e) {
    System.out.println(e);

    AFAIK you can only detect if the shell process has finished, as sub-processes of the shell are not visible to your Java program (without resorting to OS-specific syscalls).
    You can write "exit" (or whatever terminates your shell) in the output stream as the last command - this will quit the shell as soon as all commands are finished, and that will be visible to your prog. Note that you should not run ANY of the shell commands in background then, as this could cause the shell to exit before the commands are finished (and, depending on the system, even signal the subprocesses).

  • "wait till the end" for EXECUTE_PROCESS_CHAIN  in a WAD template

    hi all,
    I try to launch a process chain from a WAD template using the EXECUTE_PROCESS_CHAIN command with a button.
    I want to use the option "wait till the end" on this button, but the WAD do not wait the end of the process chain.
    Do you know how to use this option "wait till the end" for EXECUTE_PROCESS_CHAIN  in a WAD template?
    Thank's.
    Laurent.

    I answer myself because I have discovered at last which was the Authorization Object necessary to display maps in templates:
    S_BDS_DS
    02, 03, 04, 30                                                 ACTVT
    BW_META_OBJECTS                                    CLASSNAME
    OT                                                                 CLASSTYPE

  • Generate New Database job never ends

    Hi all,
    We are trying to generate a new template in our DEV environment, the job remains active but never ends. On every attempt , the process stops in a different table or process.
    The log file (level 5) simply stops in a certain point and nothing else happens. The dbeng9 processes consumes almost 90% CPU but the process siebsh does not appear between the top processes.
    We already tried reset all the servers, gateway, reassign the remote component group, recreating diccache.dat, but nothing worked.
    We use siebel loyalty 8.1.1.1 and oracle 11g 11.2 , on top of aix 5.3
    Meanwhile, the workaround was to generate new template in another siebel enterprise and copied the templates to the DEV environment and extracted the databases.
    Will be very thankful if anyone can help.
    Thanks in advance

    But the problem is that the process really stucked. The siebel.dbf , which should be created during the job , stop increasing the size around 30M while in the other environment, when the process finished , the file reached 80M.
    The log file also suddenly stopped to increase. It really seems that the process is waiting for something.
    We are not having resource problems like disk space , cpu or memory lacking.
    Guys, do you know what kind of consistency should be checked for GennewDB? If the repository table definitions have differences when compared with actual physical schema, suppose that we forget to apply some new table definitions, would it be the root cause? Do you know a way to compare the repository definitions against the physical schema? I think "apply all" is not an option..
    Thanks in advance

  • I accidentally turned off wifi and ran some videos overnight on my mobile and used all of my data allowance on day 3 of the month. I screwed up... I acknowledge that... do I bump my plan up 1gb at a time or wait to the end of the month to adjust the bill.

    I just need to know my best options to control the amount I pay in overages since I messed up. Been with Verizon for at least 15 years and I haven't really had this come up before. Not sure how I messed up this bad this time

    Personally, I would wait until ~5-7 days before the end of your billing cycle to make the adjustment RETROACTIVE to the beginning of your current billing cycle. That way you can add what you need with a bit extra for the last 5 days. Of course you would want to make another adjustment on the last day of your billing cycle to drop your data allowance back to normal, only have that adjustment made effective on the 1st day of your NEXT billing cycle. You don't want to have to pay for the extra data NEXT month.

  • Waiting for the end of effect

    In my Flex application I have a function that plays animation hiding web content and when the animation reaches its end event listener fires another function that change web content and plays second animation which shows new web content. Here is the code:
    public function function1(contentId:String):void {
         contentHideAnimation.addEventListener(EffectEvent.EFFECT_END,function2);
         contentHideAnimation.play();
         contentId = id;
    private function function2(event:Event):void {
         var id:String = contentId;
         moduleLoader.unloadModule();
         if (id == "content1") { moduleLoader.loadModule("modules/content1.swf"); }
         else if (id == "content2") {moduleLoader.loadModule("modules/content2.swf"); }
         else if (id == "content2") { moduleLoader.loadModule("modules/content3.swf"); }
         contentShowAnimation.play();
    What I want to do is to put all the code from both functions in one function (I had to split it into two because move effects (show and hide animations) were played simultaneously).My question is: how can I wait for animation to finish and then play second animation in one function body?

    public function function1(contentId:String):void {
         contentHideAnimation.addEventListener(EffectEvent.EFFECT_END,function():void{
                   var id:String = contentId;
                   moduleLoader.unloadModule();
                   if (id == "content1") { moduleLoader.loadModule("modules/content1.swf"); }
                   else if (id == "content2") {moduleLoader.loadModule("modules/content2.swf"); }
                   else if (id == "content2") { moduleLoader.loadModule("modules/content3.swf"); }
                   contentShowAnimation.play();
         contentHideAnimation.play();
         contentId = id;
    }

  • Jobs not ended

    Hi,
    In one of my transaction, there is a background job. I use parallel processing, using 5 process.
    I tried to kill the jobs from SM51. Cancel with Core & Cancel without Core, both didnt help me. It kills the job temporarly. But, later a new job is created. This process is contnuing, is this because of any short dump in the program?
    There is one short dump for the same background user. But if there is any short dump, this should not create any new process in the background job.
    The worst part is, I dont find any job in SM37. I tried with the name WF-BATCH, it didnt show any jobs, running, scheduled, cancelled.... nothing it shows.
    Can you help me how to cancel this job?.
    Your help would be much appreciated.
    Regards, Sathish R

    See the process ID of the job
    go to the task manager of the application server
    go to that process and choose End Task

  • Cisco Prime Infraestrutre 2.0 - JOB Not ends

    Hi,
    i've a problem in my Cisco prime Infraestructure, i've scheduled a IOS upgrade with a reload in the end, i forgot to permit in the equipment to do reloads from SNMP, and the question is all the job was done except the reload, bu in Jobs dashboard i still seeing that the job is in progress anda i can not abort the process.
    Anyone kows ow can i clean this job, from the job list, and why this happens?

    Hi,
    i've alreay added the snmp-server command.
    With Job i still have problems, qhen i try do abort the job i've the follwing error:
    "Selected jobs were not aborted. FAILURE : Exception occured while aborting the job : Job with job id 2752679 does not have any running cancellable tasks.-JOBM_042"
    The cancel option isn't enable.

  • How to wait till the end of DOS program started using Runtime.exec(cmd)?

    In my Java program I need to call two DOS batch programs namely call.bat and start.bat. First I need to start the batch program call.bat and once that program is completed, I need to call the other batch file start.bat.
    The piece of code which I am using is:
    public static void ExecuteScripts(){
    try {
    \\Start the first batch program call.bat
    Process p = Runtime.getRuntime().exec("cmd /c start .\\scripts\\call.bat");
    p.waitFor();
    System.out.println("Exit value "+p.exitValue());
    \\Start the second batch program run.bat
    Process p1 = Runtime.getRuntime().exec("cmd /c start .\\scripts\\run.bat");
    catch (Exception e) {
    e.printStackTrace();
    For this piece of code it starts the first batch program(i.e, call.bat) in a command prompt and immediately it starts the second batch program (i.e, run.bat) in another command prompt. So it runs both the batch programs simultanesously. But what I wanted is that my program should wait till the first batch is executed and then start the second batch.
    Please tell me how to wait between these two runtime commands in JAVA
    With regards,
    C.Chenthil.
    -------------------

    Hi everybody thanks a lot.
    I got a solution from another forum. Kindly find the solution
    public static void ExecuteScripts(){
    try {
    \\Start the first batch program call.bat
    Process p = Runtime.getRuntime().exec("cmd /c start/wait .\\scripts\\call.bat");
    p.waitFor();
    System.out.println("Exit value "+p.exitValue());
    \\Start the second batch program run.bat
    Process p1 = Runtime.getRuntime().exec("cmd /c start/wait .\\scripts\\run.bat");
    catch (Exception e) {
    e.printStackTrace();
    Process p = Runtime.getRuntime().exec("cmd /c start/wait .\\scripts\\call.bat"); is the switch that served my purpose.

  • How do I create a table of 3 data elements for each trial and have it updated instead of waiting until the end of the program?

    I am trying to record 3 pieces of data, all (software) timing in ms (in U8 integers). I managed to finally get each data in the right column but now it doesn't record anything in the table and it doesn't update the numeric indicators during the experiment like it should. I can't figure for the life of me what I did wrong. I know at least the trial part of the program works, but so far the data recording part is giving me a headache.
    Thanks
    Attachments:
    BETACRT.vi ‏241 KB

    Why it is not reporting the data is easy; fixing the program may not be. LabVIEW uses a dataflow paradigm. This means that no part of the program executes until all of its data inputs are availble. In your case the table and the array functions driving it are fed by outputs from the outer while loop. Thus no data gets to the table until the while loop has finished executing (which is at the end of your experiment). One possible approach would be to store the data in a shift register and move the table inside the loop.
    Many experienced LV programmers try to avoid or minimize the use of sequence structures and local variables to read and write to/from front panel objects. We use a state machine which is a while loop with a case structure. Queues can be u
    sed to pass data between the user interface and the data acquistion loops. This subject is too involved to be handled in a brief posting, but if you search the archives and examples you can learn more.
    Also, be aware that software timing can be problematic if you are using a desktop operating system. If the OS decides to check the net for software updates or something you could have large discrepancies in your timing. These might be rare, but there is no reliable way of detecting them. I have built several systems similar to what you seem to be trying to do and have never been successful with software timing.

  • Few SAP_COLLECTOR_FOR_PERFMONITOR jobs never end

    Hi,
    On our BI Production server, in job overview there are 5 of these jobs running for almost a day now and they are taking all job spaces so no other process cant be completed. Our BC guy is on vacation so there is no one I can actually ask what to do, so please advise. Thanks

    Hi Mijodrag,
    If you have access to view the jobs in SM37 select them by clicking on the tick boxes on the left of the screen as per my attachment.
    Otherwise you will have to identify via SM66 on which server the job is running, then via SM51 go to that server then to SM50 select the relevant processes and "Cancel without core" as per below attachment.
    Once this is done someone will have to investigate why these jobs are running so long usually these jobs are not long running there might be some other problems on your system as well see SM21/ST22 perhaps as well.
    Kind Regards,
    Johan

  • Wait until execution ends

    Hello,
    I am using TestStand API in CVI to run a test sequence. I want the button start to be dimmed during the execution, so I wrote these lines: 
    SetCtrlAttribute(panel, PANEL_COMMANDBUTTON, ATTR_DIMMED, TRUE);
    TS_NewEngine (NULL, &lEngine));
    TS_EngineGetProperty (lEngine, &errorInfo, TS_EngineGlobals, CAVT_OBJHANDLE, &stationGlobalsHandle));
    TS_EngineGetSeqFileEx (lEngine, &errorInfo, "SequenceFile1.seq",TS_GetSeqFile_OperatorInterfaceFlags, TS_ConflictHandler_UseGlobalType,&lCurrentSequenceFile ));
    TS_SeqFileGetFileGlobalsDefaultValues (lCurrentSequenceFile,&errorInfo, &fileGlobalsHandle);
    TSerrChk( TS_EngineNewExecution (lEngine, &errorInfo, lCurrentSequenceFile,"MainSequence", modelSeqFile, VFALSE,TS_ExecTypeMask_Normal, CA_DEFAULT_VAL, CA_DEFAULT_VAL, CA_DEFAULT_VAL, &lCurrentExecution));
    TS_ExecutionWaitForEndEx(lCurrentExecution,&errorInfo, INFINITE,TRUE,CA_DEFAULT_VAL,CA_DEFAULT_VAL,&end);
    SetCtrlAttribute(panel, PANEL_COMMANDBUTTON, ATTR_DIMMED, FALSE);
    But it's not working, the sequence is not even executed and the button remains dimmed.
    If anyone can help me I would appreciate it. 
    Thank you

    There are several flaws in your approach:
    You are not using Manager Controls
    You are using WaitForEndEx which is documented as This method is not meant to be used by a user interface or sequence editor, as it does not process UIMessages. Instead, use this method from a step to synchronize with another execution. Remove this from your UI code!
    The default visible TestStand button provides properties. Use them to do what you want.
    thanks,
    Norbert

  • Job work end product

    Dear experts
    we received the raw materials as UNBW material for subcontract work. I have to send the final product to the vendor by sales route. For this I have to create material master to this final product  as either FERT or UNBW material?
    Regards

    Hi,
    When you are doing a Job Work it ois a service sale...no need to have material code for this...if you have taken UNBW material against 501 movement type...while issuing the service sale invoice to 502 movement type to give effect to inventory.
    Regards
    Vikas

  • Job ab Ende November gesucht...

    Auch ohne Hoch- oder Fachschulabschluß sind Spitzenleistungen drin!
    Suche nach Abschluß meiner Ausbildung zur IT-Managerin/Neue Medien interessanten Job.
    Kenntnisse:
    - HTML, JavaScript, CSS, Photoshop, Premiere, Illustrator, SoundForge, Flash4, Dreamweaver, HomeSite.
    Interessen:
    - WebDesign, Programmierung.
    mfG
    [email protected]

    Hier Javascript:
    Postmail-CGI
    Hallo,
    Könnten Sie helfen, wie man ein Postmail-CGI richtig installiert ? Mein Hoster hat mir vor Vertragsabschluß versprochen, mir beim Installieren eines Postmail-CGI zu helfen - und daß dies kein Problem wäre. Nun allerdings scheint er damit auch Probleme zu haben. Das CGI läuft offenbar, denn nach Absenden bringt es im Browser die Rückmeldung "ihre Eingaben waren korrekt... etc." allerdings kommt im Emailpostfach keiene Email an.
    Könnten Sie helfen ? Offenbar fehlt nur ein richtiger Eintrag im CGI, der die Mail in das Postfach leitet.
    Das Problem: vermutlich die richtigen urls im CGI anzugeben. Es handelt sich um einen
    Apache Server. Das CGI befindet sich im Verzeichnis der Website im cgi-bin. Das CGI heißt
    af.cgi. Zur besseren Orientierung dasselbe nachfolgend:
    #!/usr/bin/perl
    # AlienForm2 - Released 23 May, 1998.
    # Copyright 1997, 1998 Jon Hedley - [email protected]
    # All Rights Reserved.
    # Do not discribute this script without my express, written permission!
    # Remember to upload in ASCII mode!
    # Work hard, and be good to your mother.
    # Deutsche Übersetzung:
    # www.internet-partner.de mail: [email protected]
    # Beachte, daß das Script im ASCII Modus upgeloadet wird !
    # Installationhilfen können gegeben werden, bitte Kontakt per eMail oder AIM
    # Wir freuen uns auf jeden Link auf unsere Homepage, machen es aber nicht zur
    # Bedingung
    # Setzt den benötigten MIME-Type. Normalerweise sollte hier nichts geändert werden.
    $content_type = "Content-Type: text/htmlnn";
    # Hier den Unix-Pfad zu den Forumularen angeben. Dieser Pfad wird den angegebenen
    # Formularen vorangestellt. Das Verzeichnis sollte dort sein, wo sich auch die HTML-Dateien
    # befinden, nicht aber im CGI-BIN Verzeichnis, bzw. in dortigen Unterverzeichnissen!
    $base_path = \'/vserv/i/interne2/htdocs/formulare/\';
    # Befehl zum laden des Mailers, welcher unbedingt den STDIN-Standard unterstützen sollte!
    $mail_cmd = \'/usr/sbin/sendmail -t\';
    # Hier kann festgeelgt werden, welcher Server, oder welche Seiten auf dieses
    # Script zugreifen darf. Dabei können ganze URL\'s angegeben werden oder auch
    # global ganze Server (ist meist das sinnvollste). Es ist sinnvoll die Angaben
    # mit UND ohne vorangestelltem www zu machen. Es sei denn, der Server ist sowieso
    # nicht erreichbar ohne www. vorweg.
    # Alternativ kann hier auch eine IP angegeben werden. Alle Einträge sind in \' Hochkommas \'
    # zu setzen, und werden in einer Liste mit Kommas getrennt.
    @Referers = (\'www.domainnahme.com\');
    ##Hier habe ich den richtigen Domainnahmen angegeben.
    ## AB HIER NICHTS MEHR ÄNDERN, WENN DU NICHT GENAU WEISST ##
    ## WAS DU MACHST! ##
    $error_loop = 0;
    $browser_out = 0;
    if ($ENV{\'REQUEST_METHOD\'} eq \'GET\' and not $ENV{\'QUERY_STRING\'})
    $ENV{\'OUT_TITLE\'} = "AlienForm2 deutsch Releas 9/98";
    $ENV{\'OUT_MSG\'} = qq|Die letzte deutsche Version ist erhaeltlich bei <a href="http://www.internet-partner.de">Internet-Partner.de.|;
    @msg = (<DATA>);
    @msg = ParseText(@msg);
    BrowserOut(@msg);
    exit(0);
    &CheckRef;
    &ParseForm;
    if (@missing_values or @bad_emails or @only_digits or @only_words) { Error(\'evil values\') }
    foreach $key (keys %FORM)
    if ($key =~ /^_send_email/)
    @lines = ReadFile(\'Email Template\',$FORM{$key});
    @lines = ParseText(@lines);
    SendMail(@lines);
    elsif ($key =~ /^_out_file/)
    @lines = ReadFile(\'Log File\',$FORM{$key});
    @lines = ParseText(@lines);
    LogFile(\'LogFile Template\',@lines);
    elsif ($key =~ /^_browser_out/ and $browser_out < 2)
    $browser_out++;
    @lines = ReadFile(\'Browser Template\',$FORM{$key});
    @lines = ParseText(@lines);
    BrowserOut(@lines);
    elsif ($key =~ /^_redirect/ and $browser_out < 2)
    $browser_out++;
    print "Location: $FORM{$key}nn";
    unless ($browser_out)
    @msg = (<DATA>);
    $ENV{\'OUT_TITLE\'} = "Übertragung erfolgreich";
    $ENV{\'OUT_MSG\'} = "Deine eingaben waren erfolgreich, vielen Dank";
    @msg = ParseText(@msg);
    BrowserOut(@msg);
    exit(0);
    sub BrowserOut
    { print "$content_type@_n" }
    sub CheckRef
    my ($valid_referer, @terms);
    if ((@Referers) and ($ENV{\'HTTP_REFERER\'}))
    foreach $referer (@Referers)
    if ($ENV{\'HTTP_REFERER\'} =~ m|http.*?://$referer|i)
    $valid_referer++;
    last;
    else {$valid_referer++;}
    unless ($valid_referer)
    @terms = split(///,$ENV{\'HTTP_REFERER\'});
    Error
    \'Falscher Server\',
    "\'$ENV{\'HTTP_REFERER\'}\' ist nicht autorisiert zur Verwendung des Scripts. Wenn du eine Erlaubnis geben möchtest,
    trage bitte \'$terms[2]\' in die reffer-liste am Anfang des Scripts."
    sub Error
    ++$error_loop;
    my $title = shift @_;
    my $msg = shift @_;
    my @error;
    if ($title eq \'evil values\')
    my $val;
    if (@missing_values)
    $msg = qq|<p>Die nachfolgenden Felder müssen eingegeben werden:</p>n<ol type="i">n|;
    foreach $val (@missing_values) { $msg .= "<li>$valn" }
    $msg .= "</ol>n";
    if (@bad_emails)
    $msg .= qq|<p>Die nachfolgenden Felder müssen eine gültige eMail-Adresse beinhalten:</p>n<ol type="i">n|;
    foreach $val (@bad_emails) { $msg .= "<li>$valn" }
    $msg .= "</ol>n";
    if (@only_digits)
    $msg .= qq|<p>Die nachfolgenden Felder dürfen nur Zahlen von (0-9) enthalten:</p>n<ol type="i">n|;
    foreach $val (@only_digits) { $msg .= "<li>$valn" }
    $msg .= "</ol>n";
    if (@only_words)
    $msg .= qq|<p>Die nachfolgenden Felder dürfen keine Sonderzeichen enthalten, nur A-Z und 0-9:</p>n<ol type="i">n|;
    foreach $val (@only_words) { $msg .= "<li>$valn" }
    $msg .= "</ol>n";
    $title = \'Fehler - Fehlerhafte Zahlen\';
    $msg .= qq|<p>Gehe zurück und wiederhole die Eingabe.</p>n|;
    if ($FORM{\'_error_url\'}) { print "Location: $FORM{\'_error_url\'}nn" }
    elsif ($FORM{\'_error_path\'} and $error_loop < 2)
    $ENV{\'OUT_TITLE\'} = $title;
    $ENV{\'OUT_MSG\'} = $msg;
    @error = ReadFile(\'Error Template\',$FORM{\'_error_path\'});
    @error = ParseText(@error);
    BrowserOut(@error);
    else
    @error = (<DATA>);
    $ENV{\'OUT_TITLE\'} = $title;
    $ENV{\'OUT_MSG\'} = $msg;
    @error = ParseText(@error);
    BrowserOut(@error);
    exit(0);
    sub LogFile
    my $msg = shift @_;
    my $file = shift @_;
    $file = $base_path . $file;
    open(FILE,">>$file") or Error(\'Datei Zugriffs Fehler\',"Ein Fehler tritt auf, beim anhängen an die Log-Datei $msg ($file): $!");
    flock(FILE,2) or Error(\'Datei Sperr Fehler\',"Ein Fehler tritt bei der Dateispere auf: $msg ($file): $!.");
    print FILE @_;
    close(FILE) or Error(\'Datei schlißen Fehler\',"Ein Fehler tritt beim Schliessen der Datei auf: $msg ($file): $!.");
    sub ReadFile
    my $msg = shift @_;
    my $file = shift @_;
    my @lines;
    $file = $base_path . $file;
    open(FILE, "$file") or Error(\'Datei Zugriffs Fehler\',"Ein Fehler tritt beim Zugriff auf: $msg ($file): $!.");
    flock(FILE,2) or Error(\'Datei Lock Fehler\',"Ein Fehler tritt beim sperren auf: $msg ($file): $!.");
    @lines = (<FILE>);
    close(FILE) or Error(\'Datei Schliessen Fehler\',"Ein Fehler tritt beim Schliessen der Datei auf: $msg ($file): $!.");
    return @lines;
    sub ParseForm
    my ($key, $prefs, $buffer);
    if ($ENV{\'REQUEST_METHOD\'} eq \'GET\')
    { @pairs = split(/&/, $ENV{\'QUERY_STRING\'}) }
    elsif ($ENV{\'REQUEST_METHOD\'} eq \'POST\')
    read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});
    @pairs = split(/&/, $buffer)
    else {Error(\'Bad or Unbekannte Request-Methode\',
    "Das Formular muß mit REQUEST=POST oder REQUEST=GET übertragen werden, Fehler in HTML-Datei prüfen!.")}
    foreach $pair (@pairs)
    local($name, $value) = split(/=/, $pair);
    $name =~ tr/+/ /;
    $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s/<!--(.)*?-->//mg;
    $FORM{$name} = $value;
    if ($name =~ /_/ and $name !~ /^_/)
    ($prefs, $key) = split /_/, $name, 2;
    if ($prefs =~ /r/i and not $value) { push @missing_values, $key }
    if ($prefs =~ /e/i and $value and
    (($value =~ /(@.*@)|(..)|(@.)|(.@)|(^.)/) or
    ($value !~ /^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$/)))
    { push @bad_emails, $key }
    if ($prefs =~ /d/i and $value and $value =~ /D/) { push @only_digits, $key }
    if ($prefs =~ /w/i and $value and $value =~ /W/) { push @only_words, $key }
    if ($prefs =~ /s/i and $value) { $value =~ s/^(s)*//;
    $value =~ s/(s)*$//;
    $FORM{$name} = $value; }
    sub ParseText
    my ($line, $key, $value, $sub);
    foreach $line (@_)
    while (($key => $value) = each %FORM)
    { $line =~ s/[$key]/$value/ig }
    while (($key => $value) = each %ENV)
    { $line =~ s/[%$key]/$value/ig }
    $line =~ s/[[^<](.)*?[^>]]//g;
    foreach $line (@_)
    while ($line =~ /[<((.)*?)>]/)
    $sub = $1;
    $sub =~ s/[^d+*/-%.x<>()]//g;
    $sub = eval $sub;
    $line =~ s/[<(.)*?>]/$sub/
    return @_;
    sub SendMail
    open(MAIL,"|$mail_cmd") or Error(\'Fehler - Mailer öffnen\',"Ein Fehler tritt auf beim Starten des Mailers ($mail_cmd): $!.");
    print MAIL @_;
    close(MAIL) or Error(\'Mail Send Error\',"Ein Fehler tritt beim Senden der eMail auf: $?. Please check the email\'s headers.");
    __END__
    <head>
    <title>[%OUT_TITLE]</title>
    </head>
    <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
    <div align="center"><center>
    <table border="2" cellpadding="0" cellspacing="0" bgcolor="#FFD26B" bordercolor="#699A69"
    width="500">
    <tr>
    <td><h2 align="center">[%OUT_TITLE]</h2>
    <p align="center">[%OUT_MSG]</p></td>
    </tr>
    </table>
    <p><br><p>
    <table border="2" cellpadding="0" cellspacing="0" bgcolor="#FFD26B" bordercolor="#699A69"
    width="500">
    <tr>
    <td><h2 align="center"><a href="http://www.cgi.tj/">AlienForm<sup>2</sup></a></h2>
    <p align="center">Copyright 1997 - 1998 <a href="mailto:[email protected]">Jon Hedley</a>.<br>
    All Rights Reserved.<br><br>Deutsche Übersetzung: <a href=http://www.internet-partner.de>www.internet-partner.de</a><br>
    eMail <a href=mailto:[email protected]>[email protected]</a></b><br></td>
    </tr>
    </table>
    </center></div>
    </body>
    Im HTML-Text ist folgende Zeile eingetragen:
    <form name="FormName#5" action="cgi-bin/af.cgi" method="post">
    welche vielleicht noch nicht richtig ist.
    Zunächst habe ich mir mit folgender Zeile beholfen:
    <form name="Formular 1" action="mailto:[email protected]" method="post" enctype="text/plain" target="_self">
    Diese bedient das Formular ohne CGI-Funktion, soll aber nicht mit allen Browsern bzw. Servern funktionierne - und vor allem, es fehlt die Rückmeldung.
    Die im CGI verzeichnete Firma Schiffmann meldet sich auch nicht auf eine Anfrage, obwohl Sie Hilfe beim Installieren versprochen hat, es kommt lediglich eine automatische mailantwort mit Angeboten.
    Verschiedene Anbieter im internet machen ebenfalls Angebote, ihren Mailserver gegen Entgeld zu benutzen (was ja nicht verwerflich ist).
    Die NCSA HTTPd ( cgi-src directory) bietet Beispiel CGI, die ich im Moment leider nicht entpacken kann, da ich erst Stuffit-Deluxe kaufen müßte
    Wenn ich hoffentlich bald mehr Kunden habe, könnte ich Partner und Mitarbeiter gebrauchen.
    Mit freundlichen Grüßen
    Uwe Hamisch
    Hanau

Maybe you are looking for

  • Cannot open some tif files in camera raw

    When I try to open my scanned tiffs (Coolscan 9000, Silverfast) with camera raw I get this option only with some of those files. With others it is not even greyed out it just isn't there. So far I have not discovered any regularity about this. I does

  • Output of RFC needs to be converted into PDF format

    Hi Experts, In the ESS screen, we have to provide one link for every employee. When the user will click on the link, one letter in PDF format should be displayed to the user. This PDF will act as a "Address Certificate". The address certificate will

  • After watching 25 mn, it stops "Could not load movie"

    I rented a movie on my iPad from iTunes Store. After 25 mn of watching it stops and it says "could not load movie" then it has been fully downloaded. The Apple assistance says "if your download was interrupted 1/ From the Home screen, tap the iTunes

  • Missing inbox and preference window in mail

    The inbox shows up in time machine but cannot see it or the mail preference screen   Help

  • Size of the export file

    Hi Guys, solaris 9 oracle 9i How can one tell the size of the export file. Thank you all.