Anmelden Demo Control and Command

JavaScript is off
CnC Home

Diese Seite dient nur zur Demonstration des Logon-Vorganges.
Sie können jede beliebige Eingabe tätigen.

User-ID: (CnC)       
Password: (Passwort für Demo egal, aber nicht leer)
(Input any string but not empty)
      



Rollen Sie bitte nach unten um den Quelltext zu sehen.
Scroll down this page to see the source of the flow script.


HttpServletRequest

Parameter CNC_SRC_JSP -> /welcome.jsp
Parameter CNC_STATUS -> null
HttpSession

CNC_FLOWSTACK_KEY -> java.util.Stack:  List size: 1 class de.cnc.FlowStackElement
CNC_SRC_JSP -> java.lang.String:  /welcome.jsp
CNC_STATUS -> java.lang.String:  3485319946249336832
javax.security.auth.subject -> javax.security.auth.Subject:  Betreff:

FlowStack

Adr.|Src-Line|   Procedure        |
----+--------+--------------------+-----------------------------------------------------------------------
   8|      13|main                |      jsp( "/logon.jsp" );

flow.cnc

   Src: Adr:
      1:    ://****************************************************************************************
      2:   0:procedure main()
      3:    :{
      4:   1:  logon  // im Body der logon-Deklaration ist die User-Validierung ausgeschalten, damit ein Einloggen überhaupt möglich ist
      5:    :  {
      6:    :    // Logon immer wieder anbieten, bis ok
      7:   2:    while ( session:USER != "USER" )
      8:    :    {
      9:   3:      if ( session:CNC_INFO_MESSAGE == null )
     10:    :      {
     11:   5:        session:CNC_INFO_MESSAGE := "JavaScript is " + if( request:param:CNC_JAVASCRIPT == 'on' , 'on' , 'off' );
     12:   6:      }
->   13:   8:      jsp( "/logon.jsp" );
     14:   9:      action( "logon" );
     15:  10:    } //while
     16:  11:  } //logon
     17:    :
     18:    :  // Einstiegspunkt Applikation
     19:    :  // Logon und User-Validierung müssen hier schon gelaufen sein
     20:  12:  label begin;
     21:    :
     22:    :  //Aufräumen
     23:  13:  session:CNC_FORM_KEY := null;
     24:  14:  session:CNC_LIST_KEY := null;
     25:    :
     26:  15:  while ( true ) // Endlos-Schleife
     27:    :  {
     28:  16:    if ( session:CNC_INFO_MESSAGE == null )
     29:    :    {
     30:  18:      session:CNC_INFO_MESSAGE := "JavaScript is " + if( request:param:CNC_JAVASCRIPT == 'on' , 'on' , 'off' );
     31:  19:    }
     32:    :
     33:  21:    jsp( "/mainmenu.jsp" );
     34:    :
     35:  22:    action( "clearSession" );
     36:    :
     37:  23:    if ( cnc_link == "blaettern" )
     38:    :    {
     39:  25:      call blaettern();
     40:  26:    }
     41:  28:    else if ( cnc_link == "suchen" )
     42:    :    {
     43:  30:      call suchen();
     44:  31:    }
     45:  33:    else if ( cnc_link == "liste_edit" )
     46:    :    {
     47:  35:      call liste_edit();
     48:  36:    }
     49:  38:    else if ( cnc_link == "jsp_spreadsheet" )
     50:    :    {
     51:  40:      call jsp_spreadsheet();
     52:  41:    }
     53:  43:    else if ( cnc_link == "date" )
     54:    :    {
     55:  45:      call date();
     56:  46:    }
     57:  48:    else if ( cnc_link == "date_range" )
     58:    :    {
     59:  50:      call date_range();
     60:  51:    }
     61:  53:    else if ( cnc_link == "date_validator" )
     62:    :    {
     63:  55:      call date_validator();
     64:  56:    }
     65:  58:    else if ( cnc_link == "localvar" )
     66:    :    {
     67:  60:      session:CNC_INFO_MESSAGE := "Test localvar: Achten Sie bitte auf die Session-Variable localvartest";
     68:  61:      jsp ( "/cncdebug/show.jsp" );
     69:  62:      session:localvartest := 'outside';
     70:  63:      session:CNC_INFO_MESSAGE := "Test localvar: Session-Variable localvartest vor CALL.<br><br>localvar wurde auf den Wert 'outside' gesetzt";
     71:  64:      jsp ( "/cncdebug/show.jsp" );
     72:  65:      call localvar();
     73:  66:      if ( session:localvartest != 'outside' )
     74:    :      {
     75:  68:        session:CNC_ERROR_MESSAGE := "Test failed !!!";
     76:  69:      }
     77:  71:      else
     78:    :      {
     79:  72:        session:CNC_INFO_MESSAGE := "Test localvar: Session-Variable localvartest nach RETURN.<br><br>localvar hat wieder den Wert 'outside'.";
     80:  73:      }
     81:  74:      jsp ( "/cncdebug/show.jsp" );
     82:  75:      reset ( "session:localvartest" );
     83:  76:    }
     84:  78:    else if ( cnc_link == "param" )
     85:    :    {
     86:  80:      session:testparamoutside := "pervalue";
     87:    :
     88:  81:      session:CNC_INFO_MESSAGE := "Test value-parameter: Session-Variable testparamoutside vor CALL.<br><br>Variable testparamoutside auf 'pervalue' gesetzt.<br><br>testparamoutside: " + session:testparamoutside;
     89:  82:      jsp ( "/cncdebug/show.jsp" );
     90:    :
     91:  83:      call valueparamtest( session:testparamoutside );
     92:    :
     93:  84:      session:CNC_INFO_MESSAGE := "Test value-parameter: Session-Variable testparamoutside nach RETURN.<br><br>Variable testparamoutside hat wieder den Wert 'pervalue'.<br><br>testparamoutside: " + session:testparamoutside;
     94:  85:      jsp ( "/cncdebug/show.jsp" );
     95:    :
     96:  86:      reset ( "session:testparamoutside" );
     97:  87:    }
     98:  89:    else if ( cnc_link == "refparam" )
     99:    :    {
    100:  91:      session:testparamoutside := "perreference";
    101:    :
    102:  92:      session:CNC_INFO_MESSAGE := "Test reference-parameter: Session-Variable testparamoutside vor CALL<br><br>testparamoutside: " + session:testparamoutside;
    103:  93:      jsp ( "/cncdebug/show.jsp" );
    104:    :
    105:  94:      call refparamtest( session:testparamoutside );
    106:    :
    107:  95:      if ( session:testparamoutside != 'changed' )
    108:    :      {
    109:  97:        session:CNC_ERROR_MESSAGE := "Test failed !!!";
    110:  98:      }
    111: 100:      else
    112:    :      {
    113: 101:        session:CNC_INFO_MESSAGE := "Test reference-parameter: Session-Variable testparamoutside nach RETURN<br><br>testparamoutside: " + session:testparamoutside;
    114: 102:      }
    115: 103:      jsp ( "/cncdebug/show.jsp" );
    116:    :
    117: 104:      reset ( "session:testparamoutside" );
    118: 105:    }
    119:    :
    120: 107:    else if ( cnc_link == "returnvalue" )
    121:    :    {
    122:    :      //reset sessionKey="testparamoutside ;
    123:    :
    124: 109:      session:CNC_INFO_MESSAGE := "Session-Variable test_return_outside existiert vor CALL nicht<br>session:test_return_outside: " + session:test_return_outside;
    125: 110:      jsp ( "/cncdebug/show.jsp" );
    126:    :
    127: 111:      session:test_return_outside := call returnvaluetest ();
    128:    :
    129: 112:      if ( session:test_return_outside != "returnvalue" )
    130:    :      {
    131: 114:        session:CNC_INFO_MESSAGE := "Test failed<br>session:test_return_outside: " + session:test_return_outside;
    132: 115:      }
    133: 117:      else
    134:    :      {
    135: 118:        session:CNC_INFO_MESSAGE := "Session-Variable test_return_outside nach RETURN<br>session:test_return_outside: " + session:test_return_outside;
    136: 119:      }
    137: 120:      jsp ( "/cncdebug/show.jsp" );
    138: 121:    } // else if
    139: 124:    else if ( cnc_link == "rekursion" )
    140:    :    {
    141: 125:      session:CNC_INFO_MESSAGE := "Die Prozedur rekursion wird 4-mal aufgerufen bis der Parameter rekursivparam auf 4 incrementiert wurde";
    142: 126:      jsp ( "/cncdebug/show.jsp" );
    143: 127:      call rekursion ( 0 );
    144: 128:    } // else if
    145: 131:    else if ( cnc_link == "impl_action" )
    146:    :    {
    147: 132:      call impl_action();
    148: 133:    } // else if
    149: 136:    else if ( cnc_link == "singlestepon" )
    150:    :    {
    151: 137:      session:CNC_SINGLE_STEP_DEBUG := "ON";
    152: 138:    } // else if
    153: 141:    else if ( cnc_link == "singlestepoff" )
    154:    :    {
    155: 142:      reset ( "session:CNC_SINGLE_STEP_DEBUG" );
    156: 143:    } // else if
    157: 146:    else if ( cnc_link == "bestellung" )
    158:    :    {
    159: 147:      call bestellapp();
    160: 148:    } // else if
    161: 151:    else if ( cnc_link == "expression" )
    162:    :    {
    163: 152:      call expression();
    164: 153:    } // else if
    165: 156:    else if ( cnc_link == "farbwahl" )
    166:    :    {
    167: 157:      call farbwahl();
    168: 158:    } // else if
    169: 161:    else if ( cnc_link == "frames" )
    170:    :    {
    171: 162:      jsp( "/frames/frame_main.jsp" );
    172: 163:    } // else if
    173: 166:    else if ( cnc_link == "tree_simple" )
    174:    :    {
    175: 167:      call tree_simple();
    176: 168:    } // else if
    177: 171:    else if ( cnc_link == "tree_frames" )
    178:    :    {
    179: 172:      jsp( "/tree_frames/frame_tree_main.jsp" );
    180: 173:    } // else if
    181:    :    else
    182:    :    {
    183: 176:      session:CNC_ERROR_MESSAGE := "unbekannte Action: " + cnc_link + " " + cnc_button + " !!!" ;
    184: 177:      jsp ( "/cncdebug/show.jsp" );
    185: 178:    }
    186: 179:  } // while
    187:    :
    188:    :  // Sprungmarke für Navigationslink Logout
    189:    :  // wird im normalen Durchlauf wegen Endlos-Schleife nie erreicht
    190: 180:  label logout;
    191: 181:  reset ( '' ); // löscht alle Session-Variablen
    192: 182:  session:CNC_INFO_MESSAGE := "Sie wurden ordnungsgemäss abgemeldet";
    193:    :  // jsp( "/logon.jsp" );
    194:    :
    195:    :} // end main
    196:    ://****************************************************************************************
    197: 184:procedure blaettern()
    198:    :{
    199:    :  /*
    200:    :     +-------------------+
    201:    :     |                   |
    202:    :     |   blaettern.jsp   |<-----------------------+
    203:    :     |                   |                        |
    204:    :     +-------------------+                        |
    205:    :              |                                   |
    206:    :              |        +-------------------+      |
    207:    :              |        |       next        |      |
    208:    :              +------->|                   |------+
    209:    :              |        |  page++ (max 10)  |      |
    210:    :              |        +-------------------+      |
    211:    :              |                                   |
    212:    :              |        +-------------------+      |
    213:    :              |        |       prev        |      |
    214:    :              +------->|                   |------+
    215:    :                       |  page-- (min 0)   |
    216:    :                       +-------------------+
    217:    :  */
    218: 185:  session:page := 1;
    219: 186:  while( true ) // Endlos-Schleife
    220:    :  {
    221: 187:    jsp ( "/blaettern/blaettern.jsp" );
    222:    :
    223: 188:    // Test Links
    224: 189:    if ( cnc_link == "prev" )
    225:    :    {
    226: 190:      if ( session:page > 0 )
    227:    :      {
    228: 192:        session:page-- ;
    229: 193:      }
    230: 195:      else
    231:    :      {
    232: 196:        session:CNC_INFO_MESSAGE := "Minimum erreicht, Link" ;
    233: 197:      }
    234: 198:    } // elseif
    235: 201:    else if ( cnc_link == "next" )
    236:    :    {
    237: 202:      if ( session:page < 10 )
    238:    :     {
    239: 204:        session:page++ ;
    240: 205:      }
    241: 207:      else
    242:    :      {
    243: 208:        session:CNC_INFO_MESSAGE := "Maximum erreicht, Link" ;
    244: 209:      }
    245: 210:    } // elseif
    246:    :
    247:    :    // Test Buttons
    248: 213:    else if ( cnc_button == "prev" )
    249:    :    {
    250: 214:      if ( session:page > 0 )
    251:    :      {
    252: 216:        session:page-- ;
    253: 217:      }
    254: 219:      else
    255:    :      {
    256: 220:        session:CNC_INFO_MESSAGE := "Minimum erreicht, Button" ;
    257: 221:      }
    258: 222:    } // elseif
    259: 225:    else if ( cnc_button == "next" )
    260:    :    {
    261: 226:      if ( session:page < 10 )
    262:    :      {
    263: 228:        session:page++ ;
    264: 229:      }
    265: 231:      else
    266:    :      {
    267: 232:        session:CNC_INFO_MESSAGE := "Maximum erreicht, Button" ;
    268: 233:      }
    269: 234:    } // elseif
    270: 236:  } // while
    271:    :} // end blaettern
    272:    ://***************************************************************************************
    273: 238:procedure suchen()
    274:    :{
    275:    :  /*
    276:    :     +-------------------+
    277:    :     |                   |
    278:    :     |    suchen.jsp     |<------------------------------------------------------------------+
    279:    :     |                   |                                                                   |
    280:    :     +-------------------+                                                                   |
    281:    :              |                                                                              |
    282:    :              |                                                                              |
    283:    :     +-------------------+                                                                   |
    284:    :     |                   |                                                                   |
    285:    :     |   suche-action    |                                                                   |
    286:    :     |                   |                                                                   |
    287:    :     +-------------------+                                                                   |
    288:    :              |                                                                              |
    289:    :              |                                                   +-----------------------+  |
    290:    :              |                                                   |                       |  |
    291:    :              +-- kein Treffer ---------------------------------->|  suche_erfolglos.jsp  |--+
    292:    :              |                                                   |                       |  |
    293:    :              |                                                   +-----------------------+  |
    294:    :              |                                                                              |
    295:    :              |                                                   +-----------------------+  |
    296:    :              |                                                   |                       |  |
    297:    :              +-- genau ein Treffer -------------------------+--->| anzeige_datensatz.jsp |--+
    298:    :              |                                              |    |                       |
    299:    :              |                                              |    +-----------------------+
    300:    :              |                                              |
    301:    :              |                       +-------------------+  |
    302:    :              |                       |                   |  |
    303:    :              +-- mehrere Treffer --->| treffer_liste.jsp |--+
    304:    :                                      |                   |
    305:    :                                      +-------------------+
    306:    :  */
    307: 239:  do ( true ) // Endlos-Schleife
    308:    :  {
    309: 240:    session:such_treffer := ""; // reset sessionKey such_treffer
    310: 241:    jsp ( "/suchen/suchen.jsp" );
    311:    :
    312: 242:    action ( "suchen" ) ; // speichert Trefferanzahl in der Session
    313:    :
    314: 244:    if ( session:such_treffer < 1 )
    315:    :    {
    316:    :      // kein Treffer
    317: 245:      jsp ( "/suchen/suche_erfolglos.jsp" );
    318: 246:    }
    319: 248:    else if ( session:such_treffer == 1 )
    320:    :    {
    321:    :      // genau ein Treffer
    322: 250:      session:show_name := "Genau1TrefferName" ;
    323: 251:      jsp ( "/suchen/anzeige_datensatz.jsp" );
    324: 252:    }
    325: 254:    else
    326:    :    {
    327:    :      // mehrere Treffer
    328: 255:      jsp ( "/suchen/treffer_liste.jsp" );
    329:    :
    330: 256:      session:show_name := cnc_action ; // gewählten Namen zwischenspeichern
    331:    :
    332:    :      // weiter zum konkreten Treffer aus der Trefferliste
    333: 257:      jsp ( "/suchen/anzeige_datensatz.jsp" );
    334: 258:    } //else
    335: 259:  } // do
    336:    :} // end suchen
    337:    :// ****************************************************************************************
    338: 261:procedure liste_edit()
    339:    :{
    340: 262:  action ( "setListeInSession" );
    341:    :
    342: 263:  while (true) // Endlos-Schleife
    343:    :  {
    344: 264:    jsp ( "/liste_edit/liste_edit.jsp" );
    345:    :
    346: 265:    if ( cnc_button == "add" )
    347:    :    {
    348: 267:      action ( "add" );
    349: 268:      session:CNC_FOCUS := "txt[" + ( length( session:CNC_LIST_KEY ) - 1 ) + "]";
    350: 269:    }
    351: 271:    else if ( cnc_button == "ins" )
    352:    :    {
    353: 273:      action ( "ins" );
    354: 274:      session:CNC_FOCUS := "txt[" + cnc_button_index + "]";
    355: 275:    }
    356: 277:    else if ( cnc_button == "del" )
    357:    :    {
    358: 279:      session:CNC_FORM_KEY := session:CNC_LIST_KEY[ cnc_button_index ]; // gewähltes Listenelement auf CNC_FORM_KEY kopieren
    359: 280:      session:CNC_INFO_MESSAGE := "Tabellenzeile " + cnc_button_index + " wirklich löschen?";
    360: 281:      jsp ( "/generic/del_ask.jsp" );
    361: 282:      if ( cnc_button == "del" )
    362:    :      {
    363:    :        //action ( "del" );
    364: 284:        action ( "deleFormListElement" );
    365: 285:      }
    366: 287:      session:CNC_FORM_KEY := null; // aufräumen
    367: 288:      session:CNC_FOCUS := "txt[" + cnc_button_index + "]";
    368: 289:    }
    369: 291:    else if ( cnc_button == "mvup" )
    370:    :    {
    371: 293:      action ( "mvup" );
    372: 294:      session:CNC_FOCUS := "txt[" + ( cnc_button_index - 1 ) + "]";
    373: 295:    }
    374: 297:    else if ( cnc_button == "mvdn" )
    375:    :    {
    376: 299:      action ( "mvdn" );
    377: 300:      session:CNC_FOCUS := "txt[" + ( cnc_button_index + 1 ) + "]";
    378: 301:    }
    379: 303:    else if ( cnc_button == "save" )
    380:    :    {
    381: 305:      action ( "save" );
    382: 306:      session:CNC_INFO_MESSAGE := "Abspeichern auf Datenbank ist in dieser Demo-Version nicht möglich";
    383: 307:      jsp ( "/cncdebug/show.jsp" );
    384: 308:      return;
    385: 310:    }
    386: 312:  } // while
    387:    :} // end liste_edit
    388:    ://****************************************************************************************
    389: 314:procedure date()
    390:    :{
    391: 315:  do(true) // Endlos-Schleife
    392:    :  {
    393: 316:    jsp ( "/date/date.jsp" );
    394: 317:    session:date := request:param:date; // eingegebenes Datum zwischenspeichern
    395: 319:    if ( strToDate( session:date ) != null )
    396:    :    {
    397: 320:      session:CNC_INFO_MESSAGE := "Datum '" + trim( session:date ) + "' ist korrekt"; // Setzen Meldung
    398: 321:      jsp ( "/cncdebug/show.jsp" );
    399: 322:      break;
    400: 323:    } //if
    401: 325:    session:CNC_ERROR_MESSAGE := "Bitte Datum korrigieren"; // Setzen Meldung
    402: 326:  } // do
    403:    :} // end date
    404:    ://****************************************************************************************
    405: 328:procedure date_range()
    406:    :{
    407: 329:  while ( true ) // Endlos-Schleife
    408:    :  {
    409: 330:    session:CNC_ERROR_MESSAGE := "Bitte Datum von 1.1.2004 bis 31.12.2004 eingeben";
    410: 331:    jsp ( "/date/date.jsp" );
    411: 332:    session:date := request:param:date; // eingegebenes Datum zwischenspeichern
    412: 334:    if (   ( strToDate( session:date ) >= strToDate( "1.1.2004" ) )  // if date >= 01.01.2004
    413:    :        && ( strToDate( session:date ) <= strToDate( "31.12.2004" ) ) ) // if date <= 31.12.2004
    414:    :    {
    415: 335:      session:CNC_INFO_MESSAGE := 'Datum "' + trim( session:date ) + '" ist korrekt'; // Setzen Meldung
    416: 336:      jsp ( "/cncdebug/show.jsp" );
    417: 337:      break; // Schleife beenden
    418: 338:    } // if
    419: 340:  } // while
    420:    :} // end procedure daterange
    421:    ://****************************************************************************************
    422: 342:procedure date_validator()
    423:    :{
    424: 343:  while (true)
    425:    :  {
    426: 344:    session:CNC_FORM_KEY := newObject( 'de.cncdemo.formbeans.DateValidatorFormBean' );
    427: 345:    session:CNC_INFO_MESSAGE := "Bitte Datum eingeben";
    428: 346:    jsp ( "/date/datevalidator.jsp" );
    429: 347:    session:CNC_INFO_MESSAGE := 'Datum "' + invokeMethod( session:CNC_FORM_KEY , 'getDate' ) + '" ist korrekt'; // Setzen Meldung
    430: 348:    jsp ( "/cncdebug/show.jsp" );
    431: 349:  }
    432:    :} // end procedure date_validator
    433:    ://****************************************************************************************
    434: 351:procedure localvar()
    435:    :{
    436:    :  /*
    437:    :
    438:    :  +-------------------------------------------+
    439:    :  | procedure main                            |
    440:    :  |                                           |
    441:    :  | Variable localvartest = outside           |
    442:    :  |                                           |
    443:    :  |  +-------------------------------------+  |
    444:    :  |  | procedure localvar                  |  |
    445:    :  |  |                                     |  |
    446:    :  |  | Variable localvartest = inside      |  |
    447:    :  |  |                                     |  |
    448:    :  |  +-------------------------------------+  |
    449:    :  |                                           |
    450:    :  | return zu main                            |
    451:    :  | Variable localvartest == outside          |
    452:    :  |                                           |
    453:    :  +-------------------------------------------+
    454:    :
    455:    :  */
    456: 352:  local session:localvartest;
    457:    :
    458: 353:  session:CNC_INFO_MESSAGE := "procedure localvar: Session-Variable localvartest nach CALL.<br><br>Der Originalwert wird auf dem Stack des CNC-Systems zwischengespeichert.";
    459: 354:  jsp ( "/cncdebug/show.jsp" );
    460:    :
    461: 355:  session:localvartest := "inside";
    462:    :
    463: 356:  session:CNC_INFO_MESSAGE := "procedure localvar: Session-Variable localvartest nach Belegen mit neuem Wert.<br><br>localvar wurde auf den Wert 'inside' gesetzt.";
    464: 357:  jsp ( "/cncdebug/show.jsp" );
    465:    :
    466:    :} // end procedure localvar
    467:    ://****************************************************************************************
    468: 359:procedure valueparamtest( session:testparaminside )
    469:    :{
    470:    :  /*
    471:    :
    472:    :  +-----------------------------------------------+
    473:    :  | procedure main                                |
    474:    :  |                                               |
    475:    :  | Variable testparamoutside = pervalue          |
    476:    :  |                                               |
    477:    :  |  +-----------------------------------------+  |
    478:    :  |  | procedure valueparamtest                |  |
    479:    :  |  |                                         |  |
    480:    :  |  | Parameter testparaminside == pervalue   |  |
    481:    :  |  |                                         |  |
    482:    :  |  | Parameter testparaminside = inside      |  |
    483:    :  |  |                                         |  |
    484:    :  |  +-----------------------------------------+  |
    485:    :  |                                               |
    486:    :  | return zu main                                |
    487:    :  | Variable testparamoutside == pervalue         |
    488:    :  |                                               |
    489:    :  +-----------------------------------------------+
    490:    :
    491:    :  */
    492: 360:  session:CNC_INFO_MESSAGE := "procedure valueparamtest(value-parameter): Parameter testparaminside nach CALL.<br><br>Der Originalwert wird auf dem Stack des CNC-Systems zwischengespeichert, <br>ist aber in der procedure sichtbar.";
    493: 361:  jsp ( "/cncdebug/show.jsp" );
    494:    :
    495: 362:  session:testparaminside := "inside";
    496:    :
    497: 363:  session:CNC_INFO_MESSAGE := "procedure valueparamtest(value-parameter): Parameter testparaminside geändert.<br><br>localvar wurde auf den Wert 'inside' gesetzt.";
    498: 364:  jsp ( "/cncdebug/show.jsp" );
    499:    :
    500:    :} // end procedure paramtest
    501:    ://****************************************************************************************
    502: 366:procedure refparamtest ( refparam session:refparam )
    503:    :{
    504:    :  /*
    505:    :  +------------------------------------------------+
    506:    :  | procedure main                                 |
    507:    :  |                                                |
    508:    :  | Variable testparamoutside = perreference       |
    509:    :  |                                                |
    510:    :  |  +------------------------------------------+  |
    511:    :  |  | procedure paramtest                      |  |
    512:    :  |  |                                          |  |
    513:    :  |  | Parameter refparam == perreference       |  |
    514:    :  |  |                                          |  |
    515:    :  |  | Parameter refparam = changed             |  |
    516:    :  |  |                                          |  |
    517:    :  |  +------------------------------------------+  |
    518:    :  |                                                |
    519:    :  | return zu main                                 |
    520:    :  | Variable testparamoutside == changed           |
    521:    :  |                                                |
    522:    :  +------------------------------------------------+
    523:    :  */
    524: 367:  session:CNC_INFO_MESSAGE := "procedure refparamtest: Parameter refparam nach CALL";
    525: 368:  jsp ( "/cncdebug/show.jsp" );
    526:    :
    527: 369:  session:refparam := "changed";
    528:    :
    529: 370:  session:CNC_INFO_MESSAGE := "procedure refparamtest: Parameter refparam geändert";
    530: 371:  jsp ( "/cncdebug/show.jsp" );
    531:    :
    532:    :} // end procedure refparamtest
    533:    ://****************************************************************************************
    534: 373:function returnvaluetest()
    535:    :{
    536: 374:  local session:returnkey;
    537: 375:  session:returnkey := "returnvalue";
    538:    :
    539: 376:  session:CNC_INFO_MESSAGE := "procedure returnvaluetest: Rückgabe Session-Variable returnkey<br>returnkey: " + session:returnkey;
    540: 377:  jsp ( "/cncdebug/show.jsp" );
    541:    :
    542: 378:  return ( session:returnkey );
    543:    :} // end procedure returnvaluetest
    544:    ://****************************************************************************************
    545: 381:procedure rekursion ( session:rekursivparam )
    546:    :{
    547:    :  /*
    548:    :  Die Prozedur rekursion wird 4-mal aufgerufen bis
    549:    :  der Parameter rekursivparam auf 4 incrementiert wurde
    550:    :  */
    551:    :
    552: 382:  session:rekursivparam++ ; // um 1 erhöhen
    553:    :
    554: 383:  session:CNC_INFO_MESSAGE := '' + session:rekursivparam;
    555:    :
    556: 384:  jsp ( "/cncdebug/show.jsp" );
    557:    :
    558: 385:  if ( session:rekursivparam < 4 ) // bis zur 4 wiederholen
    559:    :  {
    560: 387:    call rekursion ( session:rekursivparam ) // rekursiver Aufruf
    561: 388:  } // if
    562:    :
    563: 390:  session:CNC_INFO_MESSAGE := '' + session:rekursivparam;
    564:    :
    565: 391:  jsp ( "/cncdebug/show.jsp" );
    566:    :
    567: 392:  return;
    568:    :} // end procedure rekursion
    569:    ://****************************************************************************************
    570: 395:procedure impl_action()
    571:    :{
    572:    :  /*
    573:    :     +-------------------+
    574:    :     |                   |<--------------+
    575:    :     |  impl_action.jsp  |               |
    576:    :     |                   |  +--------------------------+
    577:    :     |                   |  |     implizite Action     |
    578:    :     |                   |  |                          |
    579:    :     |                   |  | de.cncdemo.implicit.Sort |
    580:    :     |                   |  |                          |
    581:    :     |                   |  +--------------------------+
    582:    :     |                   |               |
    583:    :     |                   |               |
    584:    :     |                   |               |
    585:    :     |                   |               |
    586:    :     |                   |               |
    587:    :     +-------------------+               |
    588:    :              |                          |
    589:    :              +--------------------------+
    590:    :  */
    591: 396:  session:SORT_DIRECTION := "DN"; // Sortieren abwaerts
    592: 397:  action ( "getSortList" ); // Test-Liste erzeugen
    593: 398:  jsp ( "/impl_action/impl_action.jsp" );
    594:    :} // end procedure impl_action
    595:    ://****************************************************************************************
    596: 400:procedure bestellapp()
    597:    :{
    598: 401:  jsp ( "/bestellapplication/welcome.jsp" );
    599:    :
    600: 402:  if ( session:ARTIKEL_LISTE == null )
    601:    :  {
    602: 404:    action ( "Bestellung#getArtikelListe" ); // neue Artikel-Liste
    603: 405:    session:ARTIKEL_LISTE := session:CNC_LIST_KEY; // Artikel-Liste auf reserviertem Key ablegen
    604: 406:  } // if
    605:    :
    606: 409:  if ( session:BESTELLUNGEN_LISTE == null )
    607:    :  {
    608: 410:    action ( "Bestellung#getBestellungenListe" ); // neue Bestellungen Erzeugen
    609: 411:    session:BESTELLUNGEN_LISTE := session:CNC_LIST_KEY; // Bestellungen auf reserviertem Key ablegen
    610: 412:  } // if
    611:    :
    612: 414:  while( true ) // Endlos-Schleife
    613:    :  {
    614: 415:    jsp ( "/bestellapplication/bestellappmain.jsp" );
    615:    :
    616: 416:    if ( cnc_link == "artikelstamm" )
    617:    :    {
    618: 418:      reset ( "session:CNC_FORM_KEY" ); // dafür sorgen, daß kein vorgewähltes Element da ist
    619: 419:      call artikelstamm( null , false );
    620: 420:    }
    621: 422:    else if ( cnc_link == "bestellungen" )
    622:    :    {
    623: 424:      call bestellungen();
    624: 425:    }
    625: 427:    else
    626:    :    {
    627: 428:      return;
    628: 430:    } // if
    629: 431:  } // end while
    630:    :} // end procedure bestellapp
    631:    ://****************************************************************************************
    632: 433:procedure bestellungen()
    633:    :{
    634: 434:  local session:CNC_LIST_KEY;
    635: 435:  local session:CNC_BROWSE_CTRL_KEY;
    636:    :
    637: 436:  while( true ) // Endlos-Schleife
    638:    :  {
    639: 437:    session:CNC_LIST_KEY := session:BESTELLUNGEN_LISTE; // Bestellungen von reserviertem Key holen
    640: 438:    jsp ( "/bestellapplication/bestellungen/bestellungenliste.jsp" );
    641: 439:    if ( cnc_button == "edit" )
    642:    :    {
    643: 441:      action ( "listElementToForm" );
    644: 442:      call singlebestellung( session:CNC_FORM_KEY );
    645: 443:    }
    646: 445:    else if ( cnc_button == "delete" )
    647:    :    {
    648: 447:      session:CNC_FORM_KEY := session:CNC_LIST_KEY[ cnc_button_index ]; // gewähltes Listenelement auf CNC_FORM_KEY kopieren
    649: 448:      session:CNC_INFO_MESSAGE := "Bestellung "
    650:    :                               + getProperty( session:CNC_FORM_KEY , "nr" ) + " "
    651:    :                               + getProperty( session:CNC_FORM_KEY , "bezeichnung" )
    652:    :                               + " wirklich löschen?";
    653: 449:      jsp ( "/generic/del_ask.jsp" );
    654: 450:      if ( cnc_button == "del" )
    655:    :      {
    656:    :        //action ( "del" );
    657: 452:        action ( "deleFormListElement" );
    658: 453:      }
    659: 455:    }
    660: 457:    else if ( cnc_button == "add" )
    661:    :    {
    662: 459:      session:CNC_FORM_KEY := call newbestellung();
    663:    :
    664: 460:      if ( session:CNC_FORM_KEY != null )
    665:    :      {
    666: 462:        action ( "addFormToList" );
    667: 463:        action ( "goLastPage" );
    668: 464:      } // if
    669:    :
    670: 466:    }
    671: 468:    else if ( cnc_button == "no_parse" )
    672:    :    {
    673: 470:      return;
    674: 472:    }
    675: 474:  } // end while
    676:    :} // end procedure singlebestellung
    677:    ://****************************************************************************************
    678: 476:function newbestellung()
    679:    :{
    680: 477:  local session:CNC_FORM_KEY;
    681:    :
    682:    :  //set sessionKey="CNC_FORM_KEY" class="de.cncdemo.formbeans.BestellungFormBean"/  // neue Bestellung erzeugen
    683:    :
    684: 478:  action ( "Bestellung#newBestellung" ); // neue Bestellung erzeugen
    685: 479:  jsp ( "/bestellapplication/singlebestellung/bestellungform.jsp" );
    686: 480:  if ( cnc_button == "save" )
    687:    :  {
    688: 482:    return ( session:CNC_FORM_KEY );
    689: 484:  }
    690: 486:  else if ( cnc_button == "no_parse" )
    691:    :  {
    692: 488:    return ( null );
    693: 490:  } // if
    694:    :} // end procedure newbestellung
    695:    ://****************************************************************************************
    696: 493:procedure singlebestellung ( session:SINGLEBESTELLUNG_KEY )
    697:    :{
    698: 494:  local session:CNC_LIST_KEY;
    699: 495:  local session:CNC_BROWSE_CTRL_KEY;
    700:    :
    701: 496:  action ( "Bestellung#setBestellPositionenToListKey" ); // Liste Bestell-Positionen auf CNC_LIST_KEY legen
    702:    :
    703: 497:  while( true ) // Endlos-Schleife
    704:    :  {
    705: 498:    jsp ( "/bestellapplication/singlebestellung/bestellung.jsp" );
    706:    :
    707: 499:    if ( cnc_button == "add" )
    708:    :    {
    709: 501:      reset ( "session:CNC_FORM_KEY" ); // dafür sorgen, daß kein vorgewähltes Element da ist
    710: 502:      session:CNC_FORM_KEY := null; // analog zu RESET, keine Vorbelegung
    711:    :
    712: 503:      session:CNC_INFO_MESSAGE := "Bitte anzufügenden Artikel auswählen";
    713:    :
    714: 504:      session:CNC_FORM_KEY := call artikelstamm (
    715:    :        null, //session:CNC_FORM_KEY ,
    716:    :        true /* Schalter für Wahl-Modus */ );
    717:    :
    718: 505:      if ( cnc_button == "no_parse" ) // Abbruch-Button
    719:    :      {
    720: 507:        continue;
    721: 508:      }
    722: 510:      action ( "Bestellung#addBestellPos" );
    723: 511:      action ( "goLastPage" );
    724: 512:    }
    725: 514:    else if ( cnc_button == "ins" )
    726:    :    {
    727: 516:      action ( "Bestellung#saveIndex" ); // vermerken Nummer des Buttons (Index) auf dem Session-Key BESTELLUNG_INDEX
    728: 517:      reset ( "session:CNC_FORM_KEY" ); // dafür sorgen, daß kein vorgewähltes Element da ist
    729: 518:      session:CNC_INFO_MESSAGE := "Bitte einzufügenden Artikel auswählen";
    730: 519:      session:CNC_FORM_KEY := null; // analog zu RESET, keine Vorbelegung
    731: 520:      session:CNC_FORM_KEY := call artikelstamm (
    732:    :        session:CNC_FORM_KEY ,
    733:    :        true /* Schalter für Wahl-Modus */ );
    734:    :
    735: 521:      if ( cnc_button == "no_parse" ) // Abbruch-Button
    736:    :      {
    737: 523:        continue;
    738: 524:      }
    739: 526:      action ( "Bestellung#insBestellPos" );
    740: 527:    }
    741: 529:    else if ( cnc_button == "edit" ) // Bestell-Position (Artikel) Editieren
    742:    :    {
    743: 531:      action ( "Bestellung#saveIndex" ); // vermerken Nummer des Buttons (Index) auf dem Session-Key BESTELLUNG_INDEX
    744: 532:      action ( "listElementToForm" ); // gewähltes Listenelement auf CNC_FORM_KEY kopieren
    745: 533:      action ( "Bestellung#getArtikelFromPosition" ); // Artikel-Objekt aus Positions-Objekt entnehmen
    746: 534:      session:CNC_INFO_MESSAGE := "Artikel Bearbeiten";
    747: 535:      session:CNC_FORM_KEY := call artikelstamm (
    748:    :        session:CNC_FORM_KEY ,
    749:    :        true /* Schalter für Wahl-Modus */ );
    750:    :
    751: 536:      if ( cnc_button == "no_parse" ) // Abbruch-Button
    752:    :      {
    753: 538:        continue;
    754: 539:      }
    755: 541:      action ( "Bestellung#setPosArtikel" );
    756: 542:    }
    757: 544:    else if ( cnc_button == "del" )
    758:    :    {
    759: 546:      session:CNC_FORM_KEY := session:CNC_LIST_KEY[ cnc_button_index ]; // gewähltes Listenelement auf CNC_FORM_KEY kopieren
    760: 547:      session:CNC_INFO_MESSAGE := "Bestellungs-Position "
    761:    :                               + getProperty(
    762:    :                                   getProperty( session:CNC_FORM_KEY , "artikel" ) ,
    763:    :                                   "bez" )
    764:    :                               + " wirklich löschen?";
    765: 548:      jsp ( "/generic/del_ask.jsp" );
    766: 549:      if ( cnc_button == "del" )
    767:    :      {
    768:    :        //action ( "del" );
    769: 551:        action ( "deleFormListElement" );
    770: 552:      }
    771: 554:    }
    772: 556:    else if ( cnc_button == "mvup" )
    773:    :    {
    774: 558:      action ( "mvup" );
    775: 559:    }
    776: 561:    else if ( cnc_button == "mvdn" )
    777:    :    {
    778: 563:      action ( "mvdn" );
    779: 564:    }
    780: 566:    else if ( cnc_button == "save" )
    781:    :    {
    782: 568:      return;
    783: 570:    } // if
    784: 572:  } // end while
    785:    :
    786:    :} // end procedure singlebestellung
    787:    ://****************************************************************************************
    788: 574:function artikelstamm ( /*refparam*/ session:artikel , session:wahl )
    789:    :{
    790:    :  /*
    791:    :  Die Prozedur Artikelstamm erlaubt das
    792:    :    Bearbeiten
    793:    :    Anlegen
    794:    :    Löschen
    795:    :    Auswählen
    796:    :  von Artikeln der Bestell-Applikation
    797:    :
    798:    :        |
    799:    :   action Bestellung#getArtikelListe
    800:    :        |
    801:    :   +-------------------+
    802:    :   |                   |
    803:    :   | artikelliste.jsp  |<--------------------------------------------------------------------------------------+
    804:    :   |                   |                                                                                       |
    805:    :   +-------------------+                                                                                       |
    806:    :        |                                                                                                      |
    807:    :        |                                               +-----------------+                                    |
    808:    :        |                                               |                 |                                    |
    809:    :        +--- Bearbeiten --- action listElementToForm ---+ artikelform.jsp +------------------------------------+
    810:    :        |                                               |                 |                                    |
    811:    :        |                                               +-----------------+                                    |
    812:    :        |                                                                                                      |
    813:    :        |                                               +-----------------+                                    |
    814:    :        |                                               |                 |                                    |
    815:    :        +--- Anlegen ------ set class (Init) -----------+ artikelform.jsp +--- action addFormToList -----------+
    816:    :        |                                               |                 |                                    |
    817:    :        |                                               +-----------------+                                    |
    818:    :        |                                                                                                      |
    819:    :        |                                            +----------------------+                                  |
    820:    :        |                                            |                      |                                  |
    821:    :        +--- Löschen --- action listElementToForm ---+ artikeldeleteask.jsp +--- action deleFormListElement ---+
    822:    :        |                                            |                      |
    823:    :        |                                            +----------------------+
    824:    :        |
    825:    :        |
    826:    :        +--- Auswählen ----- > return mit gewähltem Objekt
    827:    :  */
    828: 575:  local session:CNC_LIST_KEY;
    829: 576:  local session:CNC_BROWSE_CTRL_KEY;
    830:    :
    831:    ://session:CNC_SINGLE_STEP_DEBUG := "ON";
    832:    :
    833: 577:  session:CNC_LIST_KEY := session:ARTIKEL_LISTE; // Artikel-Liste von reserviertem Key holen
    834: 578:  action ( "Bestellung#setArtikelFokus" ); // Fokus auf vorher gewählten Artikel setzen
    835:    :
    836: 579:  while( true ) // Endlos-Schleife
    837:    :  {
    838: 580:    jsp ( "/bestellapplication/artikel/artikelliste.jsp" );
    839:    :
    840: 581:    if ( cnc_button == "edit" ) // Artikel Editieren
    841:    :    {
    842: 583:      action ( "listElementToForm" ); // gewähltes Listenelement auf CNC_FORM_KEY kopieren
    843: 584:      session:EDIT_MODE := true; // Merker für if-tags im JSP auf EDIT setzen
    844:    :
    845: 585:      reset ( "session:FORM_VALID" );
    846:    :
    847: 586:      do ( session:FORM_VALID == null ) // wiederholen bis valid
    848:    :      {
    849: 587:        jsp ( "/bestellapplication/artikel/artikelform.jsp" );
    850: 588:        if ( cnc_button == "no_parse" ) // Abbruch-Button
    851:    :        {
    852: 590:          break;
    853: 591:        }
    854: 593:        action ( "Bestellung#validArtikelEdit" ); // Eingabe prüfen
    855: 594:      } // do
    856:    :
    857: 595:      reset ( "session:EDIT_MODE" );
    858: 596:    }
    859: 598:    else if ( cnc_button == "add" ) // Artikel Hinzufügen
    860:    :    {
    861: 600:      session:CNC_FORM_KEY := newObject( "de.cncdemo.formbeans.ArtikelFormBean" ); // neues Listenelement auf CNC_FORM_KEY erzeugen
    862: 601:      session:EDIT_MODE := false; // Merker für if-tags im JSP auf ADD setzen
    863:    :
    864: 602:      reset ( "session:FORM_VALID" );
    865: 603:      do ( session:FORM_VALID == null ) // wiederholen bis valid
    866:    :      {
    867: 604:        jsp ( "/bestellapplication/artikel/artikelform.jsp" );
    868: 605:        if ( cnc_button == "no_parse" ) // Abbruch-Button
    869:    :        {
    870: 607:          break;
    871: 608:        }
    872: 610:        action ( "Bestellung#validArtikelAdd" ); // Eingabe prüfen
    873: 611:      } // do
    874:    :
    875: 612:      reset ( "session:EDIT_MODE" );
    876: 613:      if ( cnc_button == "no_parse" ) // Abbruch-Button
    877:    :      {
    878: 615:        continue;
    879: 616:      }
    880:    :
    881: 618:      action ( "addFormToList" );
    882: 619:      action ( "goLastPage" );
    883:    :
    884: 620:    } // elseif
    885: 623:    else if ( cnc_button == "delete" )
    886:    :    {
    887:    :      //action ( "listElementToForm" ); // gewähltes Listenelement auf CNC_FORM_KEY kopieren
    888: 624:      session:CNC_FORM_KEY := session:CNC_LIST_KEY[ cnc_button_index ]; // gewähltes Listenelement auf CNC_FORM_KEY kopieren
    889: 625:      jsp ( "/bestellapplication/artikel/artikeldeleteask.jsp" );
    890: 626:      if ( cnc_button == "no_parse" ) // Abbruch-Button
    891:    :      {
    892: 628:        continue;
    893: 629:      }
    894: 631:      action ( "deleFormListElement" );
    895:    :
    896: 632:    } // elseif
    897: 635:    else if ( cnc_button == "wahl" )
    898:    :    {
    899: 636:      action ( "listElementToForm" ); // gewähltes Listenelement auf CNC_FORM_KEY kopieren
    900:    ://session:CNC_SINGLE_STEP_DEBUG := "ON";
    901: 638:      return ( session:CNC_FORM_KEY );
    902: 639:    } // elseif
    903: 642:    else if ( cnc_button == "no_parse" ) // Abbruch-Button
    904:    :    {
    905: 643:      return ( null );
    906: 645:    }
    907: 647:  } // end while
    908:    :} // end procedure artikelstamm
    909:    ://****************************************************************************************
    910: 649:procedure farbwahl()
    911:    :{
    912: 650:  session:fgrRed := "0" ;
    913: 651:  session:fgrGreen := "0" ;
    914: 652:  session:fgrBlue := "0" ;
    915:    :
    916: 653:  session:bgrRed := "255" ;
    917: 654:  session:bgrGreen := "255" ;
    918: 655:  session:bgrBlue := "255" ;
    919:    :
    920: 656:  session:alinkRed := "0" ;
    921: 657:  session:alinkGreen := "0" ;
    922: 658:  session:alinkBlue := "0" ;
    923:    :
    924: 659:  session:avisitedRed := "0" ;
    925: 660:  session:avisitedGreen := "0" ;
    926: 661:  session:avisitedBlue := "0" ;
    927:    :
    928: 662:  session:ahoverfgrRed := "255" ;
    929: 663:  session:ahoverfgrGreen := "255" ;
    930: 664:  session:ahoverfgrBlue := "255" ;
    931:    :
    932: 665:  session:ahoverbgrRed := "0" ;
    933: 666:  session:ahoverbgrGreen := "64" ;
    934: 667:  session:ahoverbgrBlue := "128" ;
    935:    :
    936: 668:  session:aactiveRed := "0" ;
    937: 669:  session:aactiveGreen := "0" ;
    938: 670:  session:aactiveBlue := "0" ;
    939:    :
    940: 671:  while(true) //Endlos-Schleife
    941:    :  {
    942: 672:    jsp ( "/color/color.jsp" ) ;
    943:    :
    944: 673:    //Verzweigung zum Feststellen ob der Button fuer Vordergrund, Hintergrund oder eine andere Style-Komponente gilt (color)
    945: 674:    if ( startsWith( cnc_button , "fgr" ) )
    946:    :    {
    947: 675:      call styleColor ( session:fgrRed , session:fgrGreen , session:fgrBlue ) ;
    948: 676:    }
    949: 678:    else if ( startsWith( cnc_button , "bgr" ) )
    950:    :    {
    951: 680:       call styleColor ( session:bgrRed , session:bgrGreen , session:bgrBlue ) ;
    952: 681:    }
    953: 683:    else if ( startsWith( cnc_button , "alink" ) )
    954:    :    {
    955: 685:       call styleColor ( session:alinkRed , session:alinkGreen , session:alinkBlue ) ;
    956: 686:    }
    957: 688:    else if ( startsWith( cnc_button , "avisited" ) )
    958:    :    {
    959: 690:       call styleColor ( session:avisitedRed , session:avisitedGreen , session:avisitedBlue ) ;
    960: 691:    }
    961: 693:    else if ( startsWith( cnc_button , "ahoverfgr" ) )
    962:    :    {
    963: 695:       call styleColor ( session:ahoverfgrRed , session:ahoverfgrGreen , session:ahoverfgrBlue ) ;
    964: 696:    }
    965: 698:    else if ( startsWith( cnc_button , "ahoverbgr" ) )
    966:    :    {
    967: 700:       call styleColor ( session:ahoverbgrRed , session:ahoverbgrGreen , session:ahoverbgrBlue ) ;
    968: 701:    }
    969: 703:    else if ( startsWith( cnc_button , "aactive" ) )
    970:    :    {
    971: 705:       call styleColor ( session:aactiveRed , session:aactiveGreen , session:aactiveBlue ) ;
    972: 706:    }
    973: 708:    else
    974:    :    {
    975: 709:      session:CNC_INFO_MESSAGE := "Programmfehler in farbwahl" ;
    976: 710:    } // else
    977: 711:  } // while
    978:    :} //end procedure farbwahl
    979:    ://****************************************************************************************
    980: 713:procedure styleColor ( refparam session:colorPartRed , refparam session:colorPartGreen , refparam session:colorPartBlue )
    981:    :{
    982:    :
    983: 714://jsp ( "/cncdebug/show.jsp" );
    984:    :
    985:    :   //Verzweigung zum Feststellen der Farb-Komponente (colorPart Red, Green oder Blue) der Button gilt
    986: 715:   if ( contents( cnc_button , "Red" ) )
    987:    :   {
    988: 716:     call colorPart ( session:colorPartRed ) ;
    989: 717:   }
    990: 719:   else if ( contents( cnc_button , "Green" ) )
    991:    :   {
    992: 721:     call colorPart ( session:colorPartGreen ) ;
    993: 722:   }
    994: 724:   else if ( contents( cnc_button , "Blue" ) )
    995:    :   {
    996: 726:     call colorPart ( session:colorPartBlue ) ;
    997: 727:  }
    998: 729:   else
    999:    :   {
   1000: 730:     session:CNC_INFO_MESSAGE := "Programmfehler in styleColor" ;
   1001: 731:   }
   1002:    :
   1003:    ://jsp ( "/cncdebug/show.jsp" );
   1004:    :
   1005:    :} //end procedure styleColor
   1006:    ://****************************************************************************************
   1007: 733:procedure colorPart( refparam session:colorPartActual )
   1008:    :{
   1009:    :
   1010: 734://jsp ( "/cncdebug/show.jsp" );
   1011:    :
   1012:    :  //Verzweigung zum Feststellen des Button
   1013: 735:  if ( endsWith ( cnc_button , "Set0" ) )
   1014:    :  {
   1015: 736:    call colorButton ( session:colorPartActual , "Set0" ) ;
   1016: 737:  }
   1017: 739:  else if ( endsWith ( cnc_button , "Dec" ) )
   1018:    :  {
   1019: 741:     call colorButton ( session:colorPartActual , "Dec" ) ;
   1020: 742:  }
   1021: 744:  else if ( endsWith ( cnc_button , "Dec8" ) )
   1022:    :  {
   1023: 746:     call colorButton ( session:colorPartActual , "Dec8" ) ;
   1024: 747:  }
   1025: 749:  else if ( endsWith ( cnc_button , "Inc" ) )
   1026:    :  {
   1027: 751:     call colorButton ( session:colorPartActual , "Inc" ) ;
   1028: 752:  }
   1029: 754:  else if ( endsWith ( cnc_button , "Inc8" ) )
   1030:    :  {
   1031: 756:     call colorButton ( session:colorPartActual , "Inc8" ) ;
   1032: 757:  }
   1033: 759:  else if ( endsWith ( cnc_button , "Set255" ) )
   1034:    :  {
   1035: 761:     call colorButton ( session:colorPartActual , "Set255" ) ;
   1036: 762:  }
   1037: 764:  else
   1038:    :  {
   1039: 765:     session:CNC_INFO_MESSAGE := "Programmfehler in colorPart" ;
   1040: 766:  } // else
   1041:    :
   1042:    ://jsp ( "/cncdebug/show.jsp" );
   1043:    :
   1044:    :} // end procedure colorPart
   1045:    ://****************************************************************************************
   1046:    ://Abarbeitung der Buttons fuer ein Color-Part zum Beispiel fgrRed (color+colorPart)
   1047: 768:procedure colorButton ( refparam session:colorPartKey , session:buttonValue )
   1048:    :{
   1049:    :
   1050: 769://jsp ( "/cncdebug/show.jsp" );
   1051:    :
   1052: 770:  if ( session:buttonValue == "Set0" )
   1053:    :  {
   1054: 771:    session:colorPartKey := "0" ;
   1055: 772:  }
   1056: 774:  else if ( session:buttonValue == "Dec" )
   1057:    :  {
   1058: 776:    if ( num( session:colorPartKey ) > 0 )
   1059:    :    {
   1060: 778:      session:colorPartKey := "" + ( num( session:colorPartKey ) - 1 ) ; // von String zu num und wieder zurück umwandeln
   1061: 779:    }
   1062: 781:    else
   1063:    :    {
   1064: 782:      session:CNC_INFO_MESSAGE := "Minimum erreicht" ;
   1065: 783:      session:colorPartKey := "0" ;
   1066: 784:     } // else
   1067: 785:  }
   1068: 787:  else if ( session:buttonValue == "Dec8" )
   1069:    :  {
   1070: 789:    if ( num( session:colorPartKey ) > 8 )
   1071:    :    {
   1072: 791:      session:colorPartKey := "" + ( num( session:colorPartKey ) - 8 ) ; // von String zu num und wieder zurück umwandeln
   1073: 792:    }
   1074: 794:    else
   1075:    :    {
   1076: 795:      session:CNC_INFO_MESSAGE:="Minimum erreicht" ;
   1077: 796:      session:colorPartKey := "0" ;
   1078: 797:     }
   1079: 798:  }
   1080: 800:  else if ( session:buttonValue == "Inc" )
   1081:    :  {
   1082: 802:    if ( num( session:colorPartKey ) < 255 )
   1083:    :    {
   1084: 804:      session:colorPartKey := "" + ( num( session:colorPartKey ) + 1 ) ; // von String zu num und wieder zurück umwandeln
   1085: 805:    }
   1086: 807:    else
   1087:    :    {
   1088: 808:      session:CNC_INFO_MESSAGE := "Maximum erreicht" ;
   1089: 809:      session:colorPartKey := "255" ;
   1090: 810:    }
   1091: 811:  }
   1092: 813:  else if ( session:buttonValue == "Inc8" )
   1093:    :  {
   1094: 815:    if ( num( session:colorPartKey ) < 247 )
   1095:    :    {
   1096: 817:      session:colorPartKey := "" + ( num( session:colorPartKey ) + 8 ) ; // von String zu num und wieder zurück umwandeln
   1097: 818:    }
   1098: 820:    else
   1099:    :    {
   1100: 821:      session:CNC_INFO_MESSAGE := "Maximum erreicht" ;
   1101: 822:      session:colorPartKey := "255" ;
   1102: 823:    }
   1103: 824:  }
   1104: 826:  else if ( session:buttonValue == "Set255" )
   1105:    :  {
   1106: 828:    session:colorPartKey := "255" ;
   1107: 829:  }
   1108: 831:  else
   1109:    :  {
   1110: 832:    session:CNC_INFO_MESSAGE := "Programmfehler in colorButton" ;
   1111: 833:  } // if
   1112:    :} //end procedure colorButton
   1113:    ://****************************************************************************************
   1114: 835:procedure jsp_spreadsheet ()
   1115:    :{
   1116: 836:  while ( true )
   1117:    :  {
   1118: 837:    if ( session:CNC_LIST_KEY == null )
   1119:    :    {
   1120:    :      //Daten von Datenbank holen
   1121: 839:      action ( 'JspSpreadsheet#load' );
   1122: 840:    }
   1123:    :
   1124: 842:    jsp( "/jsp_spreadsheet/jsp_spreadsheet.jsp" );
   1125:    :
   1126: 843:    if ( cnc_button == 'save' )
   1127:    :    {
   1128: 845:      action ( 'JspSpreadsheet#save' );
   1129: 846:    }
   1130: 848:    else if ( cnc_button == 'add' )
   1131:    :    {
   1132: 850:      add( session:CNC_LIST_KEY , newObject( 'de.cncdemo.formbeans.AktieFormBean' ) );
   1133:    :
   1134:    :      // zum Ende der Liste blättern
   1135: 851:      invokeMethod( session:CNC_BROWSE_CTRL_KEY , "goLast" );
   1136: 852:      session:CNC_FOCUS := "name[" + ( length( session:CNC_LIST_KEY ) - 1 ) + "]";
   1137: 853:    }
   1138: 855:    else if ( cnc_button == 'ins' )
   1139:    :    {
   1140: 857:      add( session:CNC_LIST_KEY , newObject( 'de.cncdemo.formbeans.AktieFormBean' ) , cnc_button_index );
   1141: 858:      session:CNC_FOCUS := "name[" + cnc_button_index + "]";
   1142: 859:    }
   1143: 861:    else if ( cnc_button == 'del' )
   1144:    :    {
   1145:    :      // Zwischenspeichern Button-Index, weil der Button-Index nach dem Anzeigen der nächsten JSP nicht mehr im Request ist
   1146: 863:      session:listIndex := cnc_button_index;
   1147:    :
   1148:    :      //Löschfrage
   1149: 864:      session:CNC_INFO_MESSAGE := "Position: " + cnc_button_index + " mit der Aktie " + session:CNC_LIST_KEY[ cnc_button_index ] + " wirklich löschen?";
   1150:    :
   1151: 865:      jsp( 'generic/del_ask.jsp' );
   1152:    :
   1153: 866:      if ( cnc_button == 'del' )
   1154:    :      {
   1155: 868:        remove( session:CNC_LIST_KEY , session:listIndex );
   1156: 869:      }
   1157: 871:      session:CNC_FOCUS := "name[" + ( session:listIndex ) + "]";
   1158: 872:      session:listIndex := null ;
   1159: 873:    }
   1160: 875:  } // end while
   1161:    :} // end procedure jsp_spreadsheet
   1162:    ://****************************************************************************************
   1163: 877:procedure frame_menu()
   1164:    :{
   1165: 878:  jsp( "/frames/frame_menu.jsp" );
   1166:    :}
   1167:    ://****************************************************************************************
   1168: 880:procedure frame_empty()
   1169:    :{
   1170: 881:  jsp( "empty.jsp" );
   1171:    :}
   1172:    ://****************************************************************************************
   1173:    ://procedure frame_table()
   1174:    ://{
   1175:    ://  jsp( "/frames/frame_table.jsp" );
   1176:    ://}
   1177:    ://****************************************************************************************
   1178: 883:procedure frame_table_kunden()
   1179:    :{
   1180: 884:  action( "Frames#loadKunden" );
   1181: 885:  jsp( "/frames/frame_table.jsp" );
   1182:    :}
   1183:    ://****************************************************************************************
   1184: 887:procedure frame_table_lieferanten()
   1185:    :{
   1186: 888:  action( "Frames#loadLieferanten" );
   1187: 889:  jsp( "/frames/frame_table.jsp" );
   1188:    :}
   1189:    ://****************************************************************************************
   1190:    :// procedure frame_form()
   1191:    :// {
   1192:    ://   jsp( "/frames/frame_form.jsp" );
   1193:    :// }
   1194:    ://****************************************************************************************
   1195: 891:procedure frame_form_kunden()
   1196:    :{
   1197: 892:  session:CNC_FORM_KEY := session:CNC_LIST_KEY[ num( request:param:index ) ];
   1198: 893:  jsp( "/frames/frame_form.jsp" );
   1199:    :}
   1200:    ://****************************************************************************************
   1201: 895:procedure frame_form_lieferanten()
   1202:    :{
   1203: 896:  session:CNC_FORM_KEY := session:CNC_LIST_KEY[ num( request:param:index ) ];
   1204: 897:  jsp( "/frames/frame_form.jsp" );
   1205:    :}
   1206:    ://****************************************************************************************
   1207: 899:procedure tree_simple()
   1208:    :{
   1209:    :  /*
   1210:    :     +-------------------+
   1211:    :     |                   |<----------------+
   1212:    :     |     tree.jsp      |                 |
   1213:    :     |                   |  +-----------------------------+
   1214:    :     |                   |  |     implizite Action        |
   1215:    :     |                   |  |                             |
   1216:    :     |                   |  | de.cnc.implicit.TreeActions |
   1217:    :     |                   |  |                             |
   1218:    :     |                   |  +-----------------------------+
   1219:    :     |                   |                 |
   1220:    :     |                   |                 |
   1221:    :     |                   |                 |
   1222:    :     |                   |                 |
   1223:    :     |                   |                 |
   1224:    :     +-------------------+                 |
   1225:    :              |                            |
   1226:    :              +----------------------------+
   1227:    :  */
   1228: 900:  session:CNC_TREE_KEY := action( "createTree" );
   1229: 901:  jsp ( "/tree_simple/tree.jsp" );
   1230:    :} // end procedure tree
   1231:    ://****************************************************************************************
   1232: 903:procedure frame_tree() // diese Prozedur wird von tree_frame_main.jsp aufgerufen
   1233:    :{
   1234: 904:  session:CNC_TREE_KEY := action( "createTree" );
   1235: 905:  jsp( "/tree_frames/frame_tree.jsp" );
   1236:    :}
   1237:    ://****************************************************************************************
   1238: 907:procedure frame_tree_table()
   1239:    :{
   1240: 908:  action( "copyNodes" );
   1241: 909:  session:CNC_INFO_MESSAGE := "Sub-Node's von " + invokeMethod( session:CNC_FORM_KEY , "getName" );
   1242: 910:  jsp( "/tree_frames/frame_tree_table.jsp" );
   1243:    :}
   1244:    ://****************************************************************************************
   1245: 912:procedure expression()
   1246:    :{
   1247: 913:  while ( true ) // Endlos-Schleife
   1248:    :  {
   1249: 914:    jsp ( "/expression/expression.jsp" );
   1250: 915:    session:expression := request:param:expression; // eingegebene Expression zwischenspeichern
   1251: 917:    if ( cnc_button == "Demo Numbers" )
   1252:    :    {
   1253: 918:      session:expression := "1 + 2";
   1254: 919:    } // if
   1255: 922:    else if ( cnc_button == "Demo Strings" )
   1256:    :    {
   1257: 923:      session:expression := "'aaa'+'bbb'";
   1258: 924:    } // if
   1259: 927:    else if ( cnc_button == "Demo Boolean" )
   1260:    :    {
   1261: 928:      session:expression := "true &amp;&amp; ( 1 > 2)";
   1262: 929:    } // if
   1263: 932:    else if ( cnc_button == "Demo Variable numerisch" )
   1264:    :    {
   1265: 933:      session:expression := "var1";
   1266: 934:      session:CNC_INFO_MESSAGE := "Numerische Variable var1. Die vorhandenen Variablen sehen Sie auf dem SessionKey expressionRuntimeEnvironment (Debug-Bereich HttpSession)";
   1267: 935:    } // else if
   1268: 938:    else if ( cnc_button == "Demo Variable String-Array" )
   1269:    :    {
   1270: 939:      session:expression := "arr1[1]";
   1271: 940:      session:CNC_INFO_MESSAGE := "String-Array-Variable arr1[0..4]. Die vorhandenen Variablen sehen Sie auf dem SessionKey expressionRuntimeEnvironment (Debug-Bereich HttpSession)";
   1272: 941:    } // else if
   1273: 944:    else if ( cnc_button == "Demo set Variable" )
   1274:    :    {
   1275: 945:      session:expression := "setVar( testStr , 'Inhalt testStr' )";
   1276: 946:    } // else if
   1277: 949:    else if ( cnc_button == "Demo setVarForName" )
   1278:    :    {
   1279: 950:      session:expression := "setVarForName( 'testStrForName' , 'Inhalt testStrForName' )";
   1280: 951:    } // else if
   1281: 954:    else if ( cnc_button == "Demo set Array Variable" )
   1282:    :    {
   1283: 955:      session:expression := "setVar( arr1[0] , 'str0 neu gesetzt' )";
   1284: 956:    } // else if
   1285: 959:    else if ( cnc_button == "Demo Parenthesis" )
   1286:    :    {
   1287: 960:      session:expression := "( 1 + ( 3 * 3 ) + 4 ) * 10";
   1288: 961:    } // else if
   1289: 964:    else if ( cnc_button == "Demo Sequence simple" )
   1290:    :    {
   1291: 965:      session:expression := "// Sequenzen sind mehrere Ausdrücke" + newline +
   1292:    :                            "// durch Semikolon getrennt" + newline +
   1293:    :                            "// und in geschwungene Klammern eingeschlossen" + newline +
   1294:    :                            "// zurückgegeben wird immer das Ergebnis des letzten berechneten Ausdruckes" + newline +
   1295:    :                            "" + newline +
   1296:    :                            "{/* Kommentare sind natuerlich auch moeglich */" + newline +
   1297:    :                            " println( 1 ) ; // Kommentare auch am Zeilenende" + newline +
   1298:    :                            " println( 2 ) ;" + newline +
   1299:    :                            " println( 3 ) ;" + newline +
   1300:    :                            " println( 4 ) ;" + newline +
   1301:    :                            " println( 5 ) ;" + newline +
   1302:    :                            " println( 6 ) " + newline +
   1303:    :                            "}";
   1304: 966:    } // else if
   1305: 969:    else if ( cnc_button == "Demo Sequence mit continue und break" )
   1306:    :    {
   1307: 970:      session:expression := "{ i := 0 ;" + newline +
   1308:    :                            "  { println( 'sequ:'+i++ ) ;" + newline +
   1309:    :                            "    if( i < 3 ," + newline +
   1310:    :                            "        contSequ() ," + newline +
   1311:    :                            "        breakSequ( i )" + newline +
   1312:    :                            "       )" + newline +
   1313:    :                            "  } " + newline +
   1314:    :                            "}";
   1315:    :
   1316: 971:      session:CNC_INFO_MESSAGE := "Testen Sie bitte die continue-Bedingung, dritte Zeile i < x , mit anderen Werten groesser 3";
   1317: 972:    } // else if
   1318: 975:    else if ( cnc_button == "Demo while und else if" )
   1319:    :    {
   1320: 976:      session:expression := "{ i := 0 ;" + newline +
   1321:    :                            "  // while als Funktion" + newline +
   1322:    :                            "  while( i < 3 ," + newline +
   1323:    :                            "    // if als Funktion" + newline +
   1324:    :                            "    { if( i < 1 ," + newline +
   1325:    :                            "        println( 'i ist kleiner als 1' ) ," + newline +
   1326:    :                            "        if( i < 2 ," + newline +
   1327:    :                            "          println( 'i ist kleiner als 2' ) ," + newline +
   1328:    :                            "          println( 'i ist groesser gleich 2' )" + newline +
   1329:    :                            "        )" + newline +
   1330:    :                            "      ) ;" + newline +
   1331:    :                            "      i++" + newline +
   1332:    :                            "    }" + newline +
   1333:    :                            "  ) " + newline +
   1334:    :                            "}";
   1335: 977:      session:CNC_INFO_MESSAGE := "Eine while-Schleife bietet dem geschachtelten if-Verteiler die Variable i im Bereich von 0 bis 2 an";
   1336: 978:    } // if
   1337: 981:    else if ( cnc_button == "Demo for 1" )
   1338:    :    {
   1339: 982:      session:expression := "// for als Funktion" + newline +
   1340:    :                            "for( i := 0 , i < 10 , i++ , println( 'for: '+i ) )";
   1341: 983:      session:CNC_INFO_MESSAGE := "Die Notation der for-Funktion lautet: for( startExpression , conditionExpression , stepExpression , bodyExpression )";
   1342: 984:    } // else if
   1343: 987:    else if ( cnc_button == "Demo for 2" )
   1344:    :    {
   1345: 988:      session:expression := "// for als Funktion" + newline +
   1346:    :                            "for( i := 0 , i < 10 , null , println( 'for: '+i++ ) )";
   1347: 989:      session:CNC_INFO_MESSAGE := "So geht es auch. Die Notation der for-Funktion lautet: for( startExpression , conditionExpression , stepExpression , bodyExpression )";
   1348: 990:    } // else if
   1349: 993:    else if ( cnc_button == "Demo Repeat" )
   1350:    :    {
   1351: 994:     session:expression := "{ x := 0 ;" + newline +
   1352:    :                           "  // repeat als Funktion repeat-until (pascal style) statt do-while" + newline +
   1353:    :                           "  repeat( x > 0 ," + newline +
   1354:    :                           "    { println( 'tu solange x > 0, aber mindestens einmal' ) ;" + newline +
   1355:    :                           "      x--" + newline +
   1356:    :                           "    }" + newline +
   1357:    :                           "  ) " + newline +
   1358:    :                           "}";
   1359: 995:      session:CNC_INFO_MESSAGE := "Ausführung der Body-Expression solange der erste Parameter true ist, aber mindestens einmal";
   1360: 996:    } // else if
   1361: 999:    else if ( cnc_button == "Demo Index-Operator" )
   1362:    :    {
   1363:1000:      action( "setArrListMap" );
   1364:1001:      session:expression := "{ // Abfrage" + newline +
   1365:    :                            "  println( arrListMap[ 0 , 0 , 'A' ] ) ;" + newline +
   1366:    :                            "" + newline +
   1367:    :                            "  // Zuweisung" + newline +
   1368:    :                            "  arrListMap[ 0 , 0 , 'A' ] := 'Test1' ;" + newline +
   1369:    :                            "  println( arrListMap[ 0 , 0 , 'A' ] ) ;" + newline +
   1370:    :                            "}";
   1371:1002:      session:CNC_INFO_MESSAGE := "Abfragen und Zuweisen einer Collection-Variable mit Index-Operator"
   1372:    :                                 + "<br>Die action setArrListMap hat folgende Struktur erzeugt:"
   1373:    :                                 + "<br> Array -> ArrayList -> HashMap";
   1374:1003:    }
   1375:1005:    else if ( cnc_button == "Demo Kompilieren String" )
   1376:    :    {
   1377:1007:      session:expression := "{ //String mit highComma-Key-words zusammengebaut statt escape-zeichen" + newline +
   1378:    :                            "  strExp1 := highComma+'3 + 4'+highComma ;" + newline +
   1379:    :                            "  println( strExp1 ) ;" + newline +
   1380:    :                            "" + newline +
   1381:    :                            "  //Interpretieren eines Strings mit Hochkommas als String und Kompilieren des Strings" + newline +
   1382:    :                            "  exp1 := compile( strExp1 ) ;" + newline +
   1383:    :                            "  println( eval( exp1 ) ) ;" + newline +
   1384:    :                            "" + newline +
   1385:    :                            "  //Ausführen des im kompilierten String enthaltenen Ausdruckes" + newline +
   1386:    :                            "  exp2 := eval( exp1 ) ;" + newline +
   1387:    :                            "  println( eval( exp2 ) )" + newline +
   1388:    :                            "}";
   1389:1008:      session:CNC_INFO_MESSAGE := "1. Kompilieren String,<br>2. Zuweisen zu einer Variable,<br>3. Ausfuehren Expression aus Variable";
   1390:1009:    } // else if
   1391:1012:    else if ( cnc_button == "Demo Abfangen Fehler" )
   1392:    :    {
   1393:1013:      session:expression := "//trycatch als Funktion" + newline +
   1394:    :                            "trycatch( 1 + varNotExist , 'gescheitert' )";
   1395:1014:      session:CNC_INFO_MESSAGE := "Ausführung eines Ausdruckes mit try-catch-Abfangung und Lieferung des Ersatzwertes, wenn gescheitert";
   1396:1015:    } // else if
   1397:1018:    else if ( cnc_button == "Demo new String Array" )
   1398:    :    {
   1399:1019:      session:expression := "{ arrx := newStringArray( 's0' , 's1' , 's2' ) ;" + newline +
   1400:    :                            "  println( arrx[ 0 ] ) ;" + newline +
   1401:    :                            "  println( arrx[ 1 ] ) ;" + newline +
   1402:    :                            "  println( arrx[ 2 ] ) " + newline +
   1403:    :                            "}";
   1404:1020:    } // else if
   1405:1023:    else if ( cnc_button == "Demo Zuweisungsoperatoren" )
   1406:    :    {
   1407:1024:      session:expression := "{ n := 1 ;" + newline +
   1408:    :                            "  println( ' n := 1 => ' + n ) ;" + newline +
   1409:    :                            " " + newline +
   1410:    :                            "  n += 1 ;" + newline +
   1411:    :                            "  println( ' n += 1 => ' + n ) ;" + newline +
   1412:    :                            " " + newline +
   1413:    :                            "  println( '.' ) ;" + newline +
   1414:    :                            " " + newline +
   1415:    :                            "  s := 's1' ;" + newline +
   1416:    :                            "  println( ' s := '+highComma+'s1'+highComma+' => ' + s ) ;" + newline +
   1417:    :                            " " + newline +
   1418:    :                            "  s += 's2' ;" + newline +
   1419:    :                            "  println( ' s += '+highComma+'s2'+highComma+' => ' + s ) ;" + newline +
   1420:    :                            " " + newline +
   1421:    :                            "  println( '.' ) ;" + newline +
   1422:    :                            " " + newline +
   1423:    :                            "  n := 10 ;" + newline +
   1424:    :                            "  println( ' n := 10 => ' + n ) ;" + newline +
   1425:    :                            "  n -=  1 ;" + newline +
   1426:    :                            "  println( ' n -=  1 => ' + n ) ;" + newline +
   1427:    :                            " " + newline +
   1428:    :                            "  println( '.' ) ;" + newline +
   1429:    :                            " " + newline +
   1430:    :                            "  n := 3 ;" + newline +
   1431:    :                            "  println( ' n := 3 => ' + n ) ;" + newline +
   1432:    :                            "  n *= 2 ;" + newline +
   1433:    :                            "  println( ' n *= 2 => ' + n ) ;" + newline +
   1434:    :                            " " + newline +
   1435:    :                            "  println( '.' ) ;" + newline +
   1436:    :                            " " + newline +
   1437:    :                            "  n := 4 ;" + newline +
   1438:    :                            "  println( ' n := 4 => ' + n ) ;" + newline +
   1439:    :                            "  n /= 2 ;" + newline +
   1440:    :                            "  println( ' n /= 2 => ' + n ) ;" + newline +
   1441:    :                            " " + newline +
   1442:    :                            "  println( '.' ) ;" + newline +
   1443:    :                            "  println( ' Zuweisung wenn kleiner' ) ;" + newline +
   1444:    :                            "  n := 4 ;" + newline +
   1445:    :                            "  println( ' n := 4 => ' + n ) ;" + newline +
   1446:    :                            "  n :>= 2 ; // Zuweisung wenn kleiner" + newline +
   1447:    :                            "  println( ' n :>= 2 => ' + n ) ;" + newline +
   1448:    :                            " " + newline +
   1449:    :                            "  println( '.' ) ;" + newline +
   1450:    :                            " " + newline +
   1451:    :                            "  n := 4 ;" + newline +
   1452:    :                            "  println( ' n := 4 => ' + n ) ;" + newline +
   1453:    :                            "  n :min= 2 ; // Zuweisung wenn kleiner" + newline +
   1454:    :                            "  println( ' n :min= 2 => ' + n ) ;" + newline +
   1455:    :                            " " + newline +
   1456:    :                            "  println( '.' ) ;" + newline +
   1457:    :                            " " + newline +
   1458:    :                            "  n := 2 ;" + newline +
   1459:    :                            "  println( ' n := 2 => ' + n ) ;" + newline +
   1460:    :                            "  n :>= 4 ; // Zuweisung wenn kleiner" + newline +
   1461:    :                            "  println( ' n :>= 4 => ' + n ) ;" + newline +
   1462:    :                            " " + newline +
   1463:    :                            "  println( '.' ) ;" + newline +
   1464:    :                            " " + newline +
   1465:    :                            "  n := 2 ;" + newline +
   1466:    :                            "  println( ' n := 2 => ' + n ) ;" + newline +
   1467:    :                            "  n :min= 4 ; // Zuweisung wenn kleiner" + newline +
   1468:    :                            "  println( ' n :min= 4 => ' + n ) ;" + newline +
   1469:    :                            " " + newline +
   1470:    :                            "  println( '.' ) ;" + newline +
   1471:    :                            "  println( ' Zuweisung wenn groesser' ) ;" + newline +
   1472:    :                            "  n := 4 ;" + newline +
   1473:    :                            "  println( ' n := 4 => ' + n ) ;" + newline +
   1474:    :                            "  n :<= 2 ; // Zuweisung wenn groesser" + newline +
   1475:    :                            "  println( ' n :<= 2 => ' + n ) ;" + newline +
   1476:    :                            " " + newline +
   1477:    :                            "  println( '.' ) ;" + newline +
   1478:    :                            " " + newline +
   1479:    :                            "  n := 4 ;" + newline +
   1480:    :                            "  println( ' n := 4 => ' + n ) ;" + newline +
   1481:    :                            "  n :max= 2 ; // Zuweisung wenn groesser" + newline +
   1482:    :                            "  println( ' n :max= 2 => ' + n ) ;" + newline +
   1483:    :                            " " + newline +
   1484:    :                            "  println( '.' ) ;" + newline +
   1485:    :                            " " + newline +
   1486:    :                            "  n := 2 ;" + newline +
   1487:    :                            "  println( ' n := 2 => ' + n ) ;" + newline +
   1488:    :                            "  n :<= 4 ; // Zuweisung wenn groesser" + newline +
   1489:    :                            "  println( ' n :<= 4 => ' + n ) ;" + newline +
   1490:    :                            " " + newline +
   1491:    :                            "  println( '.' ) ;" + newline +
   1492:    :                            " " + newline +
   1493:    :                            "  n := 2 ;" + newline +
   1494:    :                            "  println( ' n := 2 => ' + n ) ;" + newline +
   1495:    :                            "  n :max= 4 ; // Zuweisung wenn groesser" + newline +
   1496:    :                            "  println( ' n :max= 4 => ' + n ) ;" + newline +
   1497:    :                            " " + newline +
   1498:    :                            "  println( '' ) " + newline +
   1499:    :                            "}";
   1500:1025:    } // else if
   1501:1028:    else if ( cnc_button == "Demo Erzeugen Objekt" )
   1502:    :    {
   1503:1029:      session:expression := "date1 := newObject( 'java.util.Date' )";
   1504:1030:      session:CNC_INFO_MESSAGE := "Erzeugen eines beliebigen Objektes mit dem paramterlosen Konstruktor";
   1505:1031:    } // else if
   1506:1034:    else if ( cnc_button == "Demo Template1" )
   1507:    :    {
   1508:1035:      session:expression := "eval( " + newline +
   1509:    :                            " compileTemplate( " + newline +
   1510:    :                            "  " + apostroph + "aaa <%= 'bbb' %> ccc" + apostroph + newline +
   1511:    :                            " ) " + newline +
   1512:    :                            ")";
   1513:1036:      session:CNC_INFO_MESSAGE := "Kompilieren und Ausführen eines JSP-ähnlichen Templates<br>" +
   1514:    :                                  "&lt;% ...scriptlet code... %&gt; <br>" +
   1515:    :                                  "&lt;%= ...scriptlet expression... %&gt;" ;
   1516:1037:    } // else if
   1517:1040:    else if ( cnc_button == "Demo Template2" )
   1518:    :    {
   1519:1041:      session:expression := "eval( " + newline +
   1520:    :                            " compileTemplate( " + newline +
   1521:    :                            "  " + apostroph + "aaa <% for( i := 0 , i <= 3 , i++ , { %>bbb <% } ) ;%>ccc" + apostroph + newline +
   1522:    :                            " ) " + newline +
   1523:    :                            ")";
   1524:1042:      session:CNC_INFO_MESSAGE := "Kompilieren und Ausführen eines JSP-ähnlichen Templates<br>" +
   1525:    :                                  "&lt;% ...scriptlet code... %&gt; <br>" +
   1526:    :                                  "&lt;%= ...scriptlet expression... %&gt;" ;
   1527:1043:    } // else if
   1528:1046:    else if ( cnc_button == "Demo Template3" )
   1529:    :    {
   1530:1047:      session:expression := "eval( " + newline +
   1531:    :                            " compileTemplate( " + newline +
   1532:    :                            "  " + apostroph + "a <% for( i1 := 0 , i1 <= 3 , i1++ ," + newline +
   1533:    :                            "   { for( i2 := 0 , i2 <= 3 , i2++ , { %>b<% } ) ;" + newline +
   1534:    :                            "   { %>_<% } }" + newline +
   1535:    :                            "  ) ;%> c" + apostroph + newline +
   1536:    :                            " ) " + newline +
   1537:    :                            ")";
   1538:1048:      session:CNC_INFO_MESSAGE := "Kompilieren und Ausführen eines JSP-ähnlichen Templates<br>" +
   1539:    :                                  "&lt;% ...scriptlet code... %&gt; <br>" +
   1540:    :                                  "&lt;%= ...scriptlet expression... %&gt;" ;
   1541:1049:    } // else if
   1542:1052:    else if ( cnc_button == "Demo Template4" )
   1543:    :    {
   1544:1053:      session:expression := "eval( " + newline +
   1545:    :                            " compileTemplate( " + newline +
   1546:    :                            "  " + apostroph + "a <% " + newline +
   1547:    :                            "    for( i1 := 0 , i1 <= 3 , i1++ , " + newline +
   1548:    :                            "     { %>b<% " + newline +
   1549:    :                            "      for( i2 := 0 , i2 <= 3 , i2++ , { %>c<% } ) ;" + newline +
   1550:    :                            "      %> <%" + newline +
   1551:    :                            "     }" + newline +
   1552:    :                            "    ) ;" + newline +
   1553:    :                            "   %> d" + apostroph + newline +
   1554:    :                            " ) " + newline +
   1555:    :                            ")";
   1556:1054:      session:CNC_INFO_MESSAGE := "Kompilieren und Ausführen eines JSP-ähnlichen Templates<br>" +
   1557:    :                                  "&lt;% ...scriptlet code... %&gt; <br>" +
   1558:    :                                  "&lt;%= ...scriptlet expression... %&gt;" ;
   1559:1055:    } // else if
   1560:1058:    else if ( cnc_button == "Demo Objekt-Attribute lesen und schreiben" )
   1561:    :    {
   1562:1059:      session:expression := "{" + newline +
   1563:    :                            "  test        := newObject( 'de.cnc.expression.Test' );" + newline +
   1564:    :                            "  test.tstStr := 'abc';" + newline +
   1565:    :                            "  test.tstStr;" + newline +
   1566:    :                            "}";
   1567:1060:      session:CNC_INFO_MESSAGE := "Setzen und Abfragen eines Attributes eines Objektes mit dem Punkt-Operator";
   1568:1061:    } // else if
   1569:1064:    else if ( cnc_button == "Demo Methoden-Aufruf" )
   1570:    :    {
   1571:1065:      session:expression := "{" + newline +
   1572:    :                            "  test := newObject( 'de.cnc.expression.Test' );" + newline +
   1573:    :                            "  test.setTstStr( 'Xyz' );" + newline +
   1574:    :                            "  test.tstStr;" + newline +
   1575:    :                            "}";
   1576:1066:      session:CNC_INFO_MESSAGE := "Aufruf einer Methode eines Objektes mit dem Punkt-Operator";
   1577:1067:    } // else if
   1578:1070:    else if ( cnc_button == "Eval Expression" )
   1579:    :    {
   1580:1071:      action ( "expression" );
   1581:1072:    } // else if
   1582:    :    else
   1583:    :    {
   1584:1075:      session:CNC_ERROR_MESSAGE := "Programmfehler, unbekannte Aktion";
   1585:1076:    }
   1586:1077:  } // while
   1587:    :} // end procedure expression
   1588:    ://****************************************************************************************