Intial commit of source code samples for GitHub repo.

This commit is contained in:
Ed Braaten 2015-04-21 14:02:59 -07:00 committed by Ed Braaten
parent 5793080047
commit 9462407ba8
14 changed files with 397 additions and 1 deletions

5
COBOL/Makefile Normal file
View file

@ -0,0 +1,5 @@
COBCFLAGS=-free -x
hello: hello.cob
cobc ${COBCFLAGS} -o hello hello.cob

6
COBOL/hello.cob Normal file
View file

@ -0,0 +1,6 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
* simple hello world program
PROCEDURE DIVISION.
DISPLAY 'Hello COBOL world!'.
STOP RUN.

View file

@ -1,2 +1,5 @@
# src-ed # src-ed
Soruce code samples for various languages - hello name-your-language world! Source code samples for various languages - hello name-your-language world!

27
bash/hello.sh Executable file
View file

@ -0,0 +1,27 @@
#!/bin/bash
#
# Sample Hello World! bash script...
#
declare -A FRUIT_COLOR
FRUIT_COLOR=( ["apple"]="red" ["banana"]="yellow")
VERINFO=`git describe --abbrev=7 --dirty --always --tags`
# Obligatory Hello World with some version info
echo "Hello Bash World! Version: $VERINFO"
# Show list of command line arguments
echo "Command line args: $*"
# Determine number of physical CPU sockets
SOCKETCOUNT=`cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l`
echo "CPU socket count: $SOCKETCOUNT"
# print out our FRUIT_COLOR associative array (key/value pairs)
declare -A sorted_fruit
for fruit in "${!FRUIT_COLOR[@]}"; do
echo "$fruit = ${FRUIT_COLOR["$fruit"]}";
done | sort --reverse

38
openmp-c/Makefile Normal file
View file

@ -0,0 +1,38 @@
# Sample makefile to add version/compiler info via an extra
# object module linked to final binary.
#
COMPILER_VER:=$(shell gcc --version)
COMPILER_OPTS=-fopenmp
GIT_DESCRIBE:=$(shell git describe --abbrev=7 --dirty --always --tags --long)
.PHONY: all
all: hello-omp
versioninfo.txt:
@echo "@(#) Compiler version: ${COMPILER_VER}." >versioninfo.txt
@echo "@(#) Compiler options: ${COMPILER_OPTS}." >>versioninfo.txt
@echo "@(#) Git info: ${GIT_DESCRIBE}" >>versioninfo.txt
versioninfo.o: versioninfo.txt
objcopy --input binary \
--output elf64-x86-64 \
--binary-architecture i386 \
--add-section versioninfo=versioninfo.txt \
--set-section-flags versioninfo=contents,noload \
versioninfo.txt versioninfo.o
hello-omp: hello-omp.c Makefile versioninfo.o
gcc $(COMPILER_OPTS) -DVERSIONINFO="\"$(GIT_DESCRIBE)\"" hello-omp.c \
versioninfo.o -o hello-omp
.PHONY: test
test:
(export OMP_NUM_THREADS=2; ./hello-omp)
sleep 5
(export OMP_NUM_THREADS=24; ./hello-omp)
sleep 5
(export OMP_NUM_THREADS=500; ./hello-omp)
.PHONY: clean
clean:
rm -f hello-omp versioninfo.*

BIN
openmp-c/hello-omp Executable file

Binary file not shown.

43
openmp-c/hello-omp.c Normal file
View file

@ -0,0 +1,43 @@
#include <omp.h>
#include <stdio.h>
#ifdef _OPENMP
static char versionbuf[16];
static char gitversion[] = VERSIONINFO;
int main()
{
int tcount = 0;
char *versionp;
/* Tell about the version of OpenMP API we're using.
* Specification source: www.openmp.org.
*/
switch (_OPENMP) {
case 200805:
versionp = "3.0 (May 2008)"; break;
case 201107:
versionp = "3.1 (Jul 2011)"; break;
case 201307:
versionp = "4.0 (Jul 2013)"; break;
default:
sprintf(versionbuf, "(%6.6d)", _OPENMP);
versionp = versionbuf;
break;
}
printf("Using OpenMP version: %s\n", versionp);
printf("Program git commit info: %s\n", gitversion);
printf("Max threads = %d\n", omp_get_max_threads());
#pragma omp parallel
#pragma omp atomic
tcount++;
#pragma omp parallel
/* Hello parallel world... */
printf("Hello OpenMP World from thread %3.3d of %3.3d! (tcount=%d)\n",
omp_get_thread_num() + 1, omp_get_num_threads(), tcount);
}
#endif

3
openmp-c/versioninfo.txt Normal file
View file

@ -0,0 +1,3 @@
@(#) Compiler version: gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16) Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE..
@(#) Compiler options: -fopenmp.
@(#) Git info: e1e14b8-dirty

55
perl/hello.pl Executable file
View file

@ -0,0 +1,55 @@
#!/usr/bin/env perl
#
# Perl language Hello World! (and then some...)
use strict;
use warnings;
my @animals = ("camel", "llama", "owl");
my %fruit_color = (apple => "red", banana => "yellow");
my @fruits = keys %fruit_color;
my @colors = values %fruit_color;
my $verinfo = `git describe --abbrev=7 --dirty --always --tags`;
# Obligatory Hello World with some version info
print "Hello Perl World! Version: $verinfo\n";
# Show list of command line arguments
print "Command line args: @ARGV\n";
print "ARGV[0] = $ARGV[0]";
print "ARGV[1] = $ARGV[1]";
print "ARGV[2] = $ARGV[2]";
# print out our animals array in reverse-sorted order
print "\nValue of animals array:\n";
foreach (reverse @animals) {
print 'item = ' . $_ . "\n";
if ($_ eq $animals[0]) {
print " Condition is TRUE, \"$_\" eq " . "$animals[0]\n";
} else {
print " Condition is FALSE, \"$_\" ne " . "$animals[0]\n";
}
}
# print our fruit_color hash (key/value pairs)
print "\nValue of fruit_color hash:\n";
foreach (keys %fruit_color) {
print "$_ = $fruit_color{$_}\n";
}
# Let's create the file test.out and write animals array to it...
print "\nWriting test.out file...\n";
open(my $out, ">", "test.out") or die "Can't create/open test.out! $!\n";
foreach (@animals) {
print $out "$_\n";
}
close $out or die "$out: $!\n";
# Now open the file we wrote and read it back...
print "\nContents of test.out file:\n";
open (my $in, "<", "test.out") or die "Can't open test.out! $!\n";
my $linenum = 1;
while (<$in>) {
print "line $linenum: $_";
$linenum += 1;
}
close $in or die "$in $!\n";

81
python/hello.py Executable file
View file

@ -0,0 +1,81 @@
#!/usr/bin/env python
#
# Sample Hello World! python script...
#
import subprocess
import sys
import os
animals = ["camel", "llama", "owl"]
fruit_color = { "apple":"red", "banana":"yellow"}
fruits = fruit_color.keys()
colors = fruit_color.items()
verinfo = subprocess.check_output(["git", "describe", "--abbrev=7",
"--dirty", "--always", "--tags"])
# Obligatory Hello World with some version info
print "Hello Python World! Version: " +verinfo
# Show list of command line arguments
print "Command line args: ",
for i in sys.argv[1:]:
print " " + i,
print ""
# Determine number of physical CPU sockets
if os.name == 'nt':
pass
else:
socketcount = subprocess.check_output(["bash","-c",
"(cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l)"])
print "CPU socket count: ", socketcount
# print out our animals array in reverse-sorted order
print "\nValue of animals array:"
for i in sorted(animals, reverse=True):
print "item = " + i
if (i == animals[0]):
print " Condition is TRUE, \"" +i+ "\" == " + animals[0]
else:
print " Condition is FALSE, \"" +i+ "\" != " + animals[0]
# print our fruit_color dictionary (key/value pairs)
print "\nValue of fruit_color hash:"
for fruit,color in sorted(fruit_color.items(), reverse=True):
print fruit, " = ", color
# Read a non-existent environment variable and supply default value...
some_env_var = os.getenv("PROBABLY_NOT_THERE", "Default Value")
print "\nPROBABLY_NOT_THERE is set to '"+some_env_var+"'\n"
# Let's read in the PATH variable from the OS and print it out...
path_env_var = os.environ['PATH']
print "OS PATH var is set to: '"+path_env_var+"'\n"
# Let's manipulate PATH variable and then restore it
print "Adding :/test to PATH variable"
os.environ['PATH'] = os.environ['PATH'] + ":/test"
print "OS PATH var is set to: '"+os.environ['PATH']+"'\n"
print "Restoring original PATH value."
os.environ['PATH'] = path_env_var
print "OS PATH var is set to: '"+path_env_var+"'\n"
# Let's create the file test.out and write animals array to it...
print "\nWriting test.out file..."
file = open("test.out", "w")
for i in animals:
file.write(i+"\n")
file.close()
# Now open the file we wrote and read it back...
print "\nContents of test.out file:"
file = open("test.out", "r")
linenum = 1
for line in file:
print "line "+str(linenum)+": "+line,
linenum += 1
file.close()
sys.exit(0)

45
ruby/hello.rb Executable file
View file

@ -0,0 +1,45 @@
#!/usr/bin/env ruby
#
# Hello Ruby World!
#
animals = ["camel", "llama", "owl"]
fruit_color = { "apple" => "red", "banana" => "yellow" }
verinfo = `git describe --abbrev=7 --dirty --always --tags`
puts "Hello Ruby World! Version: #{verinfo}"
print "Command line args: "
ARGV.each do |arg|
print "#{arg} "
end
print "\n"
# print out our animals array reverse sorted...
(animals.reverse).each do |i|
print "item = ", i, "\n"
if i == animals.first
print 'Condition is True, "camel" == ', i, "\n"
else
print 'Condition is False, "camel" != ', i, "\n"
end
end
# print out our Ruby hash
fruit_color.each do |key, value|
print key, " = ", value, "\n"
end
# Let's create the file test.out and write animals array to it...
file = File.new("test.out", "w")
animals.each do |i|
file.syswrite("#{i}\n")
end
file.close
# Now open the file we wrote and read it back...
filelines = IO.readlines("test.out")
filelines.each do |i|
print i
end

40
sizeofchk/Makefile Normal file
View file

@ -0,0 +1,40 @@
# Makefile for Simple Sizeof Utility
#
# Created 2014-06-26 by Ed Braaten
#
# Variables that may need tweaking...
COMPILER=gcc
#COMPILER=icc
#COMPILER=clang
CCOPTIONS=-O -Wall
INSTALLPATH=/usr/local/bin
# These variables shouldn't need any tweaking
CCVERSION=`${COMPILER} --version | head -1`
BINARYNAME=sizeofchk-${COMPILER}
SHORT_SHA:=$(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
PGM_VERSION=1.0 (git-$(SHORT_SHA))
# Target to build the main program...
${BINARYNAME}: Makefile sizeofchk.c
@echo "#define COMPILEINFO \"${CCVERSION}\"" >sizeofchk.h
@echo "#define ARCHINFO \""`uname -m`"\"" >>sizeofchk.h
@echo "#define SYSINFO \""`uname -s`"\"" >>sizeofchk.h
@echo "#define RELEASEINFO \""`uname -r`"\"" >>sizeofchk.h
@echo "#define VERSION_STRING \"${PGM_VERSION}\"" >>sizeofchk.h
@echo "Header file created..."
${COMPILER} ${CCOPTIONS} -o ${BINARYNAME} sizeofchk.c
chmod 755 ${BINARYNAME}
install:
mkdir -p /usr/local/bin
cp ${BINARYNAME} ${INSTALLPATH}
chmod 755 ${INSTALLPATH}/${BINARYNAME}
clean:
rm -f ${BINARYNAME} sizeofchk.h *.o
tidy:
rm -f *.o

4
sizeofchk/README.md Normal file
View file

@ -0,0 +1,4 @@
sizeofchk
=========
Utility to print out size in bits of basic types supported by your compiler.

46
sizeofchk/sizeofchk.c Normal file
View file

@ -0,0 +1,46 @@
/* simple utility to print out sizeof values...
*/
#include <stdio.h>
#include <x86intrin.h>
#include "sizeofchk.h" /* generated by makefile */
static char version[] = VERSION_STRING;
int main()
{
int (*funcptr)();
printf("Sizeof Utility by Ed Braaten - Version %s\n", version);
printf("Running on %s (%s %s)\n", ARCHINFO, SYSINFO, RELEASEINFO);
printf("Compiler version: '%s'\n\n", COMPILEINFO);
printf(" sizeof(char) = %lu bits\n", sizeof(char) * 8);
printf(" sizeof(short) = %lu bits\n", sizeof(short) * 8);
printf(" sizeof(int) = %lu bits\n", sizeof(int) * 8);
printf(" sizeof(long int) = %lu bits\n", sizeof(long int) * 8);
printf(" sizeof(long) = %lu bits\n", sizeof(long) * 8);
printf(" sizeof(long long) = %lu bits\n", sizeof(long long) * 8);
printf(" sizeof(float) = %lu bits\n", sizeof(float) * 8);
printf(" sizeof(double) = %lu bits\n", sizeof(double) * 8);
printf(" sizeof(long double) = %lu bits\n", sizeof(long double) * 8);
printf(" sizeof(char *) = %lu bits\n", sizeof(char *) * 8);
printf(" sizeof((*)()) = %lu bits\n", sizeof(funcptr) * 8);
#ifdef __SSE__
printf("\nSSE types\n\n");
printf(" sizeof(__m64) = %lu bits\n", sizeof(__m64) * 8);
printf(" sizeof(__m128) = %lu bits\n", sizeof(__m128) * 8);
#endif
#ifdef __clang__
/* clang doesn't support __float128 */
#else
#ifdef __SSE2__
printf(" sizeof(__float128) = %lu bits\n", sizeof(__float128) * 8);
#endif
#endif
printf("\n");
return(0);
}