rem testbridge.bbj seterr release_on_error rem in order to open a plugin, the plugin ALIAS must be defined in config file rem following OPEN line assumes a line in config file of the form rem ALIAS J0 com.basis.bbj.bridge.BBjBridgeOpenPlugin open (1)"J0" seterr respond_on_error rem retrieve the test number and execute the test testNum = num(argv(1)) rem print testNum switch testnum case 0 gosub getArgCargV break case 1 gosub getStrings break case 2 gosub getRecordsUsingKnownKeys break case 3 case 4 gosub getRecordsOrStrings break case 5 gosub getAllKeysAndRecords break case 6 rem generate an intentional error print(22)"hello" break swend release_on_error: release testNum respond_on_error: seterr release_on_error rem check fid to determine if response is recordOriented dim finInfo$:tmpl(1,ind=0) finInfo$ = fin(1,ind=0) recordOriented = finInfo.ResponseRecordOriented rem create an error message to send back to Java program message$ = "error: " + errmes(err) + " on line " + str( tcb(5)) rem write the message if(recordOriented) write(1,key="errorInfo")message$ else write(1)message$ endif rem and release release getArgCargV: rem retrieve argc, argv and write as records to channel 1 writerecord(1,key="argc: ")str(argc) for i=0 to argc-1 key$ = "argv[" + str(i) + "] = " writerecord(1,key=key$)argv(i) next i return getStrings: rem assume that channel 1 is string-oriented. read strings and echo to channel 0 label_1: read(1,end=eof_1)A$ write(1)"received: " + A$ goto label_1 eof_1: return getRecordsUsingKnownKeys: rem assume channel 1 contains key/value pairs with known keys rem echo key/value pairs to channel 0 readrecord(1,key="name")name$ readrecord(1,key="month")month$ response$ = "the name is " + name$ writerecord(1,key="name: ")response$ response$ = "the month is " + month$ writerecord(1,key="month: ")response$ return getAllKeysAndRecords: rem assume channel 1 is record oriented. retrieve all key/value pairs rem and echo them to channel 1 label_2: key$ = key(1,end=eof_2) readrecord(1,key=key$,end=eof_2)value$ writerecord(1,key=value$)key$ goto label_2 eof_2: return getRecordsOrStrings: rem use fin to discover whethe channlel 1 is record-oriented. then rem either read records or read strings. In either case echo to channel 1 rem retrieve fid to determine whether request is record-oriented dim finInfo$:tmpl(1,ind=0) finInfo$ = fin(1,ind=0) recordOriented = finInfo.RequestRecordOriented if recordOriented then readrecord(1,key="name")name$ readrecord(1,key="month")month$ response$ = "the name is " + name$ writerecord(1,key="name: ")response$ response$ = "the month is " + month$ writerecord(1,key="month: ")response$ else while 1 read(1,end=*break)A$ write(1)"received: " + A$ wend endif return end