The following sample program, "browser.cbl", demonstrates usage of the ACUCOBOL-GT WEB-BROWSER control. Additional samples have been provided in the sample directory on your ACUCOBOL-GT distribution media. See webbrows.cbl for another useful example.
identification division.
program-id. Browser.
* Copyright (c) 1988 - 2003 by Acucorp, Inc. Users of ACUCOBOL
* may freely modify and redistribute this program.
remarks.
This program illustrates the WEB BROWSER control type.
***************************************************************
data division.
working-storage section.
copy "acucobol.def".
copy "acugui.def".
77 key-status
is special-names crt status pic 9(4) value 0.
88 exit-button-pushed value 27.
01 event-status
is special-names event status.
03 event-type pic x(4) comp-x.
03 event-window-handle usage handle.
03 event-control-handle usage handle.
03 event-control-id pic x(2) comp-x.
03 event-data-1 usage signed-short.
03 event-data-2 usage signed-long.
03 event-action pic x comp-x.
78 event-occurred value 96.
78 go-btn-pressed value 707.
78 back-btn-pressed value 708.
78 forward-btn-pressed value 709.
78 home-btn-pressed value 710.
78 refresh-btn-pressed value 711.
78 search-btn-pressed value 712.
78 stop-btn-pressed value 713.
77 ef-url pic x(1000).
77 wb-1-url pic x(1000).
77 wb-1-title pic x(100).
77 wb-1-status pic x(100).
77 wb-1-progress pic 9(7).
77 wb-1-max-progress pic 9(7).
77 progress-percent pic 9(9).
77 gt-bitmap pic s9(9) comp-4.
01 configuration-data.
05 current-lines pic s99999V99 value 25.
05 current-size pic s99999v99 value 73.
*****************************************************************
screen section.
01 screen-1.
03 entry-field, column 5, line 4, size 55 max-text = 0
value ef-url.
03 push-button, "&Back",
column 5, line 2, size 9
self-act
termination-value = back-btn-pressed.
03 push-button, "&Forward",
column + 2, size 9
self-act
termination-value = forward-btn-pressed.
03 push-button, "&Home",
column + 2, size 9
self-act
termination-value = home-btn-pressed.
03 push-button, "&Refresh",
column + 2, size 9
self-act
termination-value = refresh-btn-pressed.
03 push-button, "&Find",
column + 2, size 9
self-act
termination-value = search-btn-pressed.
03 push-button, "&Stop",
column + 2, size 9
self-act
termination-value = stop-btn-pressed.
03 push-button, "&Go", default-button
column 55.2, line 4,
termination-value = go-btn-pressed.
03 status-frame-1 frame, line 22, column 5,
lines 2 size 65 cells lowered.
03 status-text-1 label, line 22.5, column 5.5,
size 64 cells
value wb-1-status.
03 progress-meter-1 frame line 24 column 5
lines 1.5 size 24
fill-color = red, fill-color2 = white,
fill-percent = 0, lowered.
03 exit-1 push-button, "E&xit",
cancel-button, line 24, column 32, size 11.
03 busy-bitmap bitmap bitmap-handle = gt-bitmap,
size 39, bitmap-start = 1, bitmap-end = 15,
bitmap-timer = 0,
line 2, column 65.
03 wb-1 web-browser
column 5, line 6,
lines 16 cells, size 65 cells
event procedure is browser-event-handler.
***************************************************************
procedure division.
main-logic.
display standard window,
title "Web Browser Sample - browser.cbl"
lines current-lines, size current-size,
resizable
background-low.
call "w$bitmap" using wbitmap-load, "gtanima.bmp",
giving gt-bitmap.
display screen-1.
perform, with test after, until exit-button-pushed
accept screen-1
evaluate key-status
when go-btn-pressed
move ef-url to wb-1-url
modify wb-1 value=wb-1-url
when back-btn-pressed
modify wb-1 go-back=1
when forward-btn-pressed
modify wb-1 go-forward=1
when home-btn-pressed
modify wb-1 go-home=1
when search-btn-pressed
modify wb-1 go-search=1
when refresh-btn-pressed
modify wb-1 refresh=1
when stop-btn-pressed
modify wb-1 stop-browser=1
when event-occurred
if event-type = ntf-resized
divide event-data-1 by 100 giving current-lines
divide event-data-2 by 100 giving current-size
modify wb-1
lines current-lines - 9
size current-size - 8
modify status-frame-1
line current-lines - 3
size current-size - 8
modify status-text-1
line current-lines - 2.5
size current-size - 9
modify progress-meter-1
line current-lines - 1
modify exit-1
line current-lines - 1
end-if
end-evaluate
end-perform.
stop run.
browser-event-handler.
evaluate event-type
when msg-wb-navigate-complete
inquire wb-1 value in wb-1-url
if wb-1-url is not = ef-url then
move wb-1-url to ef-url
display screen-1
end-if
when msg-wb-progress-change
inquire wb-1 progress in wb-1-progress
inquire wb-1 max-progress in wb-1-max-progress
move wb-1-progress to progress-percent
multiply 100 by progress-percent
divide wb-1-max-progress into progress-percent
if progress-percent = 100
move 0 to progress-percent
end-if
modify progress-meter-1,
fill-percent = progress-percent
if progress-percent = 0
modify busy-bitmap bitmap-timer = 0
bitmap-number = 1
else
modify busy-bitmap bitmap-timer = 10
end-if
when msg-wb-status-text-change
inquire wb-1 status-text in wb-1-status
display status-text-1
when msg-wb-title-change
inquire wb-1 title in wb-1-title
display wb-1-title upon global window title
end-evaluate.